2011-12-11 40 views
2

我們有一個運行TFS2010的共享構建服務器。我們現在使用VS2008解決方案(很快計劃升級到VS2010)。外部Dll沒有被TFS掉落

我們的ASP.NET 3.5解決方案有一些外部dll放在我們解決方案的'Library'文件夾中。問題是,如果我們從我們的開發機器發佈網站,發佈的文件夾是完美的。但是當TFS在構建服務器上構建它時,則有3個外部dll永遠不會被刪除,我們必須在構建後手動複製它們。

我們嘗試了幾件事情,但沒有解決問題。我們還檢查了與其他dll一樣,這3個DLL在bin文件夾中有正確的刷新文件。

一個問題可能是這些有問題的DLL中的一些可能位於開發機器的GAC上。如果這確實是一個問題,那麼無論如何在構建服務器上,我們不能把dll加入到GAC中。

任何想法如何強制這些3 dll被TFS正確放入bin文件夾?

回答

0

您是否嘗試從Visual Studio解決方案的「參考」文件夾中選擇dll,然後從屬性面板中將「複製本地」設置爲true?

+0

「複製本地」已設置爲True,路徑設置爲我的庫文件夾。 –

0

嘗試檢查構建日誌,並檢查構建時msbuild是否能夠找到dll。排隊構建時可以選擇診斷日誌記錄以獲取更詳細的日誌。

6

如果您部署/複製包含對在GAC中註冊的自定義組件的引用的應用程序,則無論「本地複製」設置如何,組件都不會隨應用程序一起部署/複製。 See MSDN

您必須通過向GAC程序集引用添加Private元數據,強制將本地複製爲true。編輯您的項目文件,並添加私人元數據:從輸出文件夾

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

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

現在你的GAC組裝應該被複制/刪除。

+2

爲避免手動編輯,有一個訣竅:將引用Copy Local設置爲false,然後再設置爲true,並且Visual Studio會自動添加Private元數據。至少VS 2010沒有... – JustAMartin

+0

今天保存了我的屁股。獲取tfs的簡單按鈕在哪裏構建與nuget和octodeploy一起工作。它適用於我的機器! Ugh – cobolstinks

+0

如果它對任何人有幫助,我最近也碰到過這個問題,而@Jasamaartin的方法在VS 2017中仍然有效。將Copy Local ='false'的引用再次設置爲'true',並且插入'Private'節點你在項目文件中。 – JuanR