Nuget包的teamcity构建失败

时间:2013-07-11 07:48:09

标签: c# msbuild teamcity nuget

我通过Nuget Autoumapper和NUnit包添加到我的解决方案中 并且它们工作得很好,项目在我的计算机中编译。

当我声明构建服务器构建此解决方案时,我收到了以下消息:

[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.

有谁知道如何解决这个问题?

我注意到的另一件事是它在build server中使用packages文件夹创建了artificts。 它唯一能做的就是在构建服务器中构建项目。

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分:4)

确保TeamCity实际下载该软件包。您可以在NuGet Packages选项卡上的单个构建结果页面的构建历史记录中看到它。如果您在那里看到您的包裹,那么TeamCity可以使用该包裹。

接下来,确保您可以从VCS中新建一个项目,即采用干净的克隆并尝试构建它,因为这就是TC必须做的事情。

我在一个非常类似的场景中的问题是我刚刚将一个项目复制到其他存储库并且引用错误,尽管由于缓存的DLL本地编译成功:卸载软件包并从Visual Studio软件包管理器再次安装它解决了这个问题。

答案 2 :(得分:0)

您需要将软件包签入VCS,或者 - 更好 - 在解决方案中enable NuGet package restore