2013-07-11 188 views
6

我通過Nuget的Autoumapper和NUnit包 添加到我的解決方案,他們工作很好,項目編譯在我的電腦中。構建團隊中的Nuget包失敗

當我宣佈構建服務器建立這個解決方案,我得到這個消息:

[MSBuild] AutoMapper\AutoMapperSpike.csproj: Build default targets (1s) 
[10:35:50][AutoMapper\AutoMapperSpike.csproj] ResolveAssemblyReferences 
[10:35:50][ResolveAssemblyReferences] ResolveAssemblyReference 
[10:35:50][ResolveAssemblyReference] Primary reference "AutoMapper". 
[10:35:50][ResolveAssemblyReference] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360, 9): warning MSB3245: Could not resolve this reference. Could not locate the assembly "AutoMapper". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 
[10:35:50][ResolveAssemblyReference]   For SearchPath "{HintPathFromItem}". 
[10:35:50][ResolveAssemblyReference]   Considered "..\packages\AutoMapper.2.2.1\lib\net40\AutoMapper.dll", but it didn't exist. 

有誰知道如何解決這個問題?

我注意到的另一件事是它創建構建服務器articts也與包文件夾。 它唯一不能做的就是在構建服務器中構建項目。

+0

你是否已經檢查過包裝本身? – Arran

+0

packages.config和所有帶有項目引用的項目(包括nuget添加的dll)都被簽入。 – FelProNet

+0

文件是否存在或不存在? – stijn

回答

6

在Visual Studio環境中,在UI中有一個選項,可以在用戶配置文件中設置一個值,因此您不必再次記住它。但是,在構建服務器上,沒有這種選擇。相反,作爲構建的一部分,您必須將環境變量「EnableNuGetPackageRestore」設置爲「true」。

我建議不要試圖在構建腳本或.csproj文件中設置環境變量。 Here’s the blog article all about why it happened and what to set on your dev machine/build server.

+0

嘿,我試圖在構建服務器上設置這個環境變量沒有成功。這是和以前一樣的問題。 – FelProNet

+0

您是否收到與之前相同的錯誤或錯誤中的任何更改? – RinoTom

+0

同樣的錯誤。 現在我在解決方案中使用第三方庫,直到我找到解決此問題的解決方案。 只要不會導致構建服務器出現問題,我就想與Nuget一起工作。 – FelProNet

4

確保TeamCity實際下載軟件包。您可以在NuGet Packages選項卡上的單個生成結果頁面的構建歷史記錄中看到。如果你在那裏看到你的軟件包,那麼TeamCity就可以使用這個軟件包了。

接下來,確保您可以將您的項目建立在VCS之外,即採取乾淨的克隆並嘗試構建它,因爲TC就是這樣做的。

我在一個非常相似的場景中遇到的問題是,我剛將一個項目複製到其他庫中,並且引用錯誤,儘管由於緩存的DLL:s本地編譯成功。卸載程序包並從Visual Studio程序包管理器重新安裝它可以解決問題。

+0

乾淨的克隆揭示了我的問題。好的提示。 –

相關問題