2013-07-11 141 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

干净的克隆揭示了我的问题。好的提示。 –

相关问题