私には小さなプロジェクトがあり、そのプロジェクトの2つのコンパイル済みバージョンが必要です。
- .NET2.0フレームワークを対象としているもの
- .NET3.5フレームワークを対象としているもの
すべてが順調に進んでいます。プロジェクトを継続的インテグレーション(CC.NETを使用)し、2つのCC.NET「プロジェクト」を作成しました。ターゲットフレームワークごとに1つのプロジェクト。
(無関係な)詳細についてはあまり詳しく説明しませんが、私のソリューションは、VS.NETの.NET3.5フレームワークをターゲットにするように設定されています。
私は2つのmsbuild-tasksを持っています:
- .NET 3.5のソリューションを構築する1つのタスク(シンプルで簡単)
.NET2.0のソリューションを構築する1つのタスク
このタスクでは、MSBuildを呼び出し、TargetFrameworkVersionをv2.0にするように指定します。また、いくつかの追加のビルド条件を定義します(.NET3.5固有のコードが.NET2.0を対象とするアセンブリにビルドされないようにするため)。
ここまでは順調ですね。すべてが正常に動作します。しかし今、問題はこれです:
私のソリューションにはいくつかの依存関係があります(サードパーティのアセンブリへの参照)。VS.NETでは、これらの依存関係に対して「ローカルコピー」をtrueに設定しました。CC.NETがアセンブリの.NET3.5バージョンをビルドすると、サードパーティの依存関係が実際に出力ディレクトリにコピーされます。
ただし、CC.NETがアセンブリの.NET2.0バージョンをビルドするとき、依存関係は出力ディレクトリにコピーされません。(その後、これによりユニットテストが失敗します)。
私の質問は次のとおりです。プロジェクトの.NET2.0バージョンをビルドするときに、特定のサードパーティ参照をローカルにコピーする必要があることをmsbuildにどのように伝えることができますか?または、これを実現する他の方法はありますか。ビルドスクリプトですべての依存関係をもう一度指定したくないからです。これはすぐにメンテナンスの悪夢になると思います。