7

我通过 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.

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

我注意到的另一件事是它在构建服务器中也使用包文件夹创建了工件。它唯一不能做的就是在构建服务器中构建项目。

4

3 回答 3

6

在 Visual Studio 环境中,UI中有一个选项可以在您的用户配置文件上设置一个值,因此您无需再次记住它。但是,在构建服务器上,没有这样的选项。相反,您必须在构建过程中将环境变量“EnableNuGetPackageRestore”设置为“true”。

我建议不要尝试在构建脚本或 .csproj 文件中设置环境变量。这是博客文章,所有关于它发生的原因以及在您的开发机器/构建服务器上设置的内容。

于 2013-07-11T11:27:25.623 回答
4

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

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

在一个非常相似的情况下,我的问题是我刚刚将一个项目复制到另一个存储库中并且引用错误,尽管由于缓存的 DLL:s 在本地编译成功。卸载包并从 Visual Studio 包管理器重新安装它解决了这个问题。

于 2014-03-27T15:19:23.777 回答
0

您需要将包签入到您的 VCS 中,或者 - 更好的是 -在您的解决方案中启用 NuGet 包还原

于 2013-07-11T07:50:25.617 回答