我最近开始使用 TFS 为我们的软件套件实现自动化构建。我试图在构建服务器上尽可能少地安装,并希望避免将第三方库签入我们的源存储库。
我们的一个项目由于缺少依赖项而导致构建失败:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
这并不奇怪,因为我没有在构建服务器上安装 Visual Studio(或 Team Explorer 等)。为了解决此问题,我尝试将 NuGet 与自动包还原一起使用以提供适当的库 (MSBuild.Microsoft.VisualStudio.Web.targets)。我已经在这里和其他地方阅读了大量的帖子,但无法让它正常工作。基本上,我:
- 在构建服务器上设置环境变量:EnableNuGetPackageRestore=true
- 按照以下说明操作: http: //docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
- 将 SolutionDir.nuget 中的所有文件添加到 TFS 存储库。
- 将包文件夹和 respositories.config 添加到 TFS 存储库。
- 验证 nuget.targets 是从有问题的项目中引用的。
- 验证有问题的项目中的“RestorePackages”设置为 true。
- 搁置所有这些物品,并使用适当的搁置组排队进行私人构建。
构建运行,但从未下载 nuget 包。除此之外,我在构建日志文件中看不到任何“RestoreCommand”(或 nuget.targets 中的其他项目)的任何日志条目。就像 nuget.targets 被完全忽略一样。我希望我只是看这个太久了,错过了一些简单的步骤。
编辑:我应该提到该解决方案在本地机器上构建良好。我已更新项目引用以引用 NuGet 中的库。如果我删除所有本地软件包,它会下载它们并正确构建。