Nuget包的teamcity构建失败

本文关键字:失败 构建 teamcity 包的 Nuget | 更新日期: 2023-09-27 18:22:05

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

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

我注意到的另一件事是,它在构建服务器中也使用packages文件夹创建技巧。它唯一不能做的就是在生成服务器中生成项目。

Nuget包的teamcity构建失败

在Visual Studio环境中,UI中有一个选项可以在用户配置文件中设置一个值,这样您就不必再记住它了。不过,在构建服务器上,没有这样的选项。相反,作为构建的一部分,您必须将环境变量"EnableNuGetPackageRestore"设置为"true"

我建议不要尝试在构建脚本或.csproj文件中设置环境变量。这是一篇关于为什么会发生这种情况以及在开发机器/构建服务器上设置什么的博客文章。

确保TeamCity确实下载了包。你可以在一个生成结果页面的NuGet Packages选项卡上的生成历史记录中看到这一点。如果你在那里看到了你的包,那么TeamCity可以接受这个包。

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

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

您需要将包签入VCS,或者更好地在解决方案中启用NuGet包恢复。