2011-12-11 23 views
2

TFS2010を実行する共有ビルドサーバがあります。現時点では、VS2008ソリューション(すぐにVS2010にアップグレードする予定)を使用しています。外部DLLがTFSによって削除されない

私たちのASP.NET 3.5ソリューションには、ソリューションの 'Library'フォルダに配置されたいくつかの外部DLLがあります。問題は、私たちが開発マシンからサイトを公開すると、公開されたフォルダが完璧だということです。しかし、TFSがビルドサーバー上にビルドすると、落とされることのない3つの外部DLLがあり、手動でポストビルドをコピーする必要があります。

いくつか試しましたが、問題は修正されませんでした。また、他のdllと同様に、これらの3つのdllにbinフォルダに正しいリフレッシュファイルがあることをダブルチェックしました。

これらの問題のあるDLLのいくつかは、開発マシンのGAC上にある可能性があります。それが本当に問題であれば、とにかくビルドサーバーでは、GACにDLLを置くことはできません。

これらの3つのDLLがTFSによってbinフォルダに正しく落とされるようにするにはどうすればよいですか?

答えて

0

Visual Studioソリューションの[References]フォルダからdllを選択し、プロパティパネルから[ローカルコピー]をtrueに設定してみましたか?

+0

'ローカルコピー'は既にTrueに設定されており、パスは[マイライブラリ]フォルダに設定されています。 –

0

ビルドログを調べて、ビルド時にmsbuildがdllを見つけられたかどうかを確認してください。ビルドをキューイングするときに診断ログを選択して、より詳細なログを取得することができます。

6

GACに登録されているカスタムコンポーネントへの参照を含むアプリケーションを展開/コピーすると、ローカルコピーの設定に関係なく、コンポーネントはアプリケーションと共に展開/コピーされません。 See MSDN

専用のメタデータをGACアセンブリ参照に追加することによって、ローカルにコピーを強制する必要があります。プロジェクトファイルを編集し、プライベートメタデータを追加します。

<Reference ..> 
    <Private>True</Private> 
</Reference ..> 

<ProjectReference ..> 
    <Private>True</Private> 
</ProjectReference ..> 

今すぐあなたのGACのアセンブリをコピーする必要があります/出力フォルダから削除。

+2

手作業による編集を避けるためには、トリックがあります。参照のコピーローカルをfalseにしてからもう一度trueに設定すると、Visual Studioは自動的にプライベートメタデータを追加します。少なくともVS 2010は... – JustAMartin

+0

今日は私のお尻を保存しました。 tfsがnugetとoctodeployを使って作業するための簡単なボタンはどこにありますか?それは私のマシンで動作します!! Ugh – cobolstinks

+0

誰にも役立つならば、最近私もこの問題に遭遇しました。@ JustAMartinのアプローチはVS 2017でも動作します。Copy Local = 'false'への参照を' true'に設定し、 'Private'ノードをあなたはプロジェクトファイルにいます。 – JuanR

関連する問題