私はTeamCityを使用して.NET製品をビルドしています。参照アセンブリのコピーを避け、単体テストを実行する方法
解決策のすべての出力を1つのフォルダの下に集めたいと思います。
そうするために、CopyLocalをすべてのプロジェクトに対してfalseに設定したいので、* / .dllをコピーすると、冗長ファイルはコピーされません。
大きな.slnファイルがプロジェクトにあります。そのほとんどはAPIアセンブリを参照しており、一部はソリューションの他のプロジェクトを参照しています。
これはデバッグでは問題ありませんが、プロジェクトの出力のみを取り込み、ビルドが成功した後にそのフォルダに参照ファイルをコピーすることなく、それをいくつかのフォルダにコピーすることができます。
同時に、参照ファイルがコピーされなくなると、実行中の単体テストはビルドサーバー上で動作しません。その一部は参照アセンブリが必要なためです。
おそらくビルドを2回実行することなく、この問題を解決するために頭を抱えているようではありません(テストを実行するためのもの、コピー元の「クリーン」なフォルダを実際に取得するためのもの)。
このようなビルドを管理するための提案はありますか?
コピーしたくない「冗長なファイル」とは何ですか?彼らは全く冗長でないように思えます。私はCopyLocal = trueを使用して、それをそのように動作させることをお勧めします... –
デバッギングとユニットテストを行うには参照アセンブリをコピーすることが不可欠です。 CLRは、アセンブリの選択されたいくつかの場所のみを調べます。これはDLL Hellの対策です。無効にしないでください。または、AppDomain.AssemblyResolveのイベントハンドラを実装して、独自のDLL Hellを作成します。 –
@jonskeet私は自分の質問を更新しました。これらのファイルは、プロジェクトの出力として保存するという観点からは冗長です。それらは各プロジェクトの成果の一部として必要ではないので、私はそれらを含めたくありません。 –