2017-02-14 94 views
0

我正在配置TFS 2015構建定義。當我構建本地解決方案時,所有需要的庫和引用都構建在我的bin路徑中,但是當構建在構建代理上運行時,我缺少一堆引用。我一直在調整複製本地設置和刪除/重新添加引用,但沒有運行使構建定義創建所有必需的。爲什麼我的TFS沒有構建所需的庫?

如果我編輯我的解決方案的項目,我想在這裏建立的一個是什麼,我有一個例子:

<Reference Include="WebArchitecture.Services.Common"> 
    <HintPath>..\..\..\Libraries\WebArchitecture.Services.Common.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

難道這導致引用私人標籤不會在構建服務器上建或者是別的什麼?該解決方案位於C:\ Users \ AKS \ Repositories \ Git \ CUIA \ source \中,並且這些庫位於C:\ Users \ AKS \ Repositories \ Git \ CUIA \ Libraries中。

添加基於Patrick評論的其他信息: 我相信我們正在使用XAML。 bin文件夾被檢入到我們的Git倉庫中,所以所有需要的文件都應該在那裏。

+0

哪個構建系統是使用舊的XAML還是新的Vnext?此外,您是否在源代碼管理中檢查bin文件夾(包括dll),或者將它們複製/部署到構建代理?似乎構建代理上的物理文件夾中沒有相應的dll。您需要確保構建代理的環境與本地相同。 –

回答

0

首先,請仔細檢查您是否使用正確的相對路徑正確引用了dll。

然後下一步就是確保文件被拉下到到生成代理/服務器的工作區。您可以通過檢查服務器上的構建文件夾來驗證。如果它們不存在,那麼工作區映射可能會遇到問題,這些映射會定義開始構建時要獲取的文件夾。

另一種檢查方法是在構建代理/服務器上手動構建解決方案。如果服務器上的本地構建成功,那麼問題可能與您的構建定義設置(如工作文件夾映射)有關,您需要更多診斷信息。


更新:

看來你的問題是沒有在生成服務器生成文件夾。如果dll存在。作爲一種變通方法,您可以使用在構建過程中模板的CopyDirectory活動複製bin文件夾中建立機,請參考例子在這個博客:TFS Team Build 2010: How to place the build output to a fixed location

您在目標屬性指定CopyDirectory目錄活動必須已經存在。空目錄或子目錄不會被複制。

+0

我把它設置爲使用文件路徑而不是TFS服務器,我在我的測試中將其更改爲服務器,當我檢查了工件並且仍然無法看到bin文件夾時。我應該注意到,我知道bin文件夾被檢查是不好的做法,所以我刪除它。在本地它仍然建立它所需要的,但服務器不再創建一個bin文件夾或所需的文件。這些工作區映射是否會與我的解決方案或構建代理有關?其他人使用相同的生成代理沒有問題,所以我不知道要檢查我自己的解決方案來解決這個問題。 – Vistance

+0

如果其他人使用相同的生成代理程序沒有問題。您的構建定義可能有問題,例如您提到的工作區映射。您必須確保您的本地bin文件夾已映射到服務器。此外,正如你所說,檢查bin文件夾是一個不好的做法,會導致一些構建參考問題,如你的。目前,我們經常建議開發人員嘗試創建自己的Nuget包來處理這種情況,並在構建服務器上恢復nuget包,這也將使環境變得清潔。你也可以試試這個。 –

+0

如何確保將本地bin文件夾映射到服務器?我是否需要在我的回購庫中檢入一個空的bin文件夾,以便它能夠將文件放置在那裏? – Vistance

相關問題