クラス ライブラリ コードを .NET 3.5 と Silverlight 3 の間で共有することを考えています。
私は主に .NET 向けに開発しているので、対応する .NET プロジェクト ファイルから Silverlight プロジェクト ファイルを自動生成することを考えています。
したがって、Silverlight で次のエラー メッセージを表示する T4 ファイルがあります。
エラー 1 コンパイル変換: 型または名前空間名 'CompilerError' が名前空間 'System.CodeDom.Compiler' に存在しません (アセンブリ参照がありませんか?)
エラー 2 変換のコンパイル: 型 'System.CodeDom.Compiler.CompilerErrorCollection' は、参照されていないアセンブリで定義されています。アセンブリ 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' への参照を追加する必要があります。
エラー 3 コンパイル変換: 'System.CodeDom.Compiler.CompilerErrorCollection' には 'Add' の定義が含まれておらず、タイプ 'System.CodeDom.Compiler.CompilerErrorCollection' の最初の引数を受け入れる拡張メソッド 'Add' が見つかりませんでした (あるusing ディレクティブまたはアセンブリ参照がありませんか?)
私の強調は、System.dll への参照が欠落していることを示しています。
次の行を追加すると:
<#@ assembly name="System" #>
次に、.NET プロジェクトは次のように不平を言います。
エラー 1 変換のコンパイル: 同じ ID 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' を持つアセンブリが既にインポートされています。重複する参照の 1 つを削除してみてください。
Silverlight プロジェクトをビルドするコードを変更して、生成された .cs ファイルのみを追加し、.tt ファイルを除外する必要があるようです。
または、両方のコンパイラを満足させるためにできることはありますか?
これは私の.TTファイルの始まりです:
<#@ template language="C#v3.5" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System" #>
<#@ output extension=".Designer.cs" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections.Generic" #>