残念ながら顧客のために.NET 2.0をターゲットにしなければならない、私が書いているプロジェクトでT4世代の使用をスムーズにしようとしていますが、FCL 4.0ライブラリの使用を避けることも、VSがそうする方法を見つけることもできないようです. 2.0 をターゲットとするアセンブリから 4.0 をターゲットとするアセンブリの型にアクセスさせてください。
アイデアは、T4Attribute
使用するプロジェクトで部分型を装飾するために使用できる を宣言することです。次に、属性の詳細に従って、タイプの追加コードが T4 によって生成されます。例として、標準の破棄パターンのボイラープレート部分のほとんどは、1 行の属性装飾を使用するだけで型に追加できます。
これをサポートするために独自のカスタムを導出してTextTransformation
いますが、VS2010 を使用しているため、VS2005/8 SDK をインストールできず、VS2010 のみをインストールできます。つまり、TextTransformation
使用しているのは .NET 4.0 DLL (Microsoft.VisualStudio .TextTemplating.10.0)。そのため、属性は同じ DLL 内にあり、使用するプロジェクトからその DLL を参照しようとすると、両方が同じフレームワーク バージョンをターゲットにしている場合にのみ型が表示されます。プロジェクトが 2.0 でライブラリが 4.0 になるとすぐに、VS は参照された型または名前空間を見つけられなくなります。
アプリケーションが CLRv2 を起動して実行するため、v4 DLL (dynamic
などを使用する可能性がある) でコードを実行できないと考えていると思います。十分に公平ですが、実際には、ライブラリ内の型は、T4 テンプレートがプロジェクトをスキャンして、T4Attribute
コードを生成するように指示するプロジェクトによって開発 PC でのみ表示されます。VS2010 の T4 エンジンは CLRv4 で実行されると想定しています。属性は、リリース ビルドにコンパイルされることさえありません。
私はまだこれについての学習曲線の底にいます。私はそれを間違っていますか、もっと簡単な方法はありますか?そうでない場合、私の問題を回避する方法はありますか? 間違った VS バージョンを使用しているにもかかわらず、どうにかして古い VisualStudio DLL を取得できますか?