我们正在使用VSO和本地构建控制器(TFS 2013)。我已经在Visual Studio的“选项”菜单中启用了NuGet包还原(使用.nuget文件夹远离旧的,已弃用的方法)。
在VS内部,恢复包工作正常,但构建控制器不会恢复NuGet包。构建控制器在服务帐户下运行,如果我作为服务帐户启动VS(在构建服务器上)并构建我的代码,它就会恢复软件包。如何让构建控制器恢复丢失的包?
在我的TFS的BuildProcessTemplate文件夹中,我不要有一个TfvcTemplate.12.xaml
,我只有DefaultTemplate.11.1.xaml
而且我从未编辑过xaml文件,我看到了NuGetRestore
我不确定如何继续,我有点想知道为什么我没有TfvcTemplate.12.xaml
模板,但是因为我没有,我怎么能让我的构建服务器/控制器到恢复NuGet包?
我已经编辑了服务帐户(位于AppData文件夹中)的NuGet.config文件以及位于我的解决方案根目录中的.nuget文件夹中的NuGet.config文件,但是我的构建始终失败因为缺少依赖项(NuGet包)。
有什么方法可以解决这个问题吗?另外,我如何获得TfvcTemplate.12.xaml
构建模板?
答案 0 :(得分:8)
要使用TFS构建启用还原NuGet包,请按照以下步骤操作。请查看此blog了解详细信息。
1. <RestorePackages>true</RestorePackages>
2.<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
3. <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information,
see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
关于无法找到TfvcTemplate.12.xaml流程模板的另一个问题,您可以先在VSO中创建一个新的团队项目,下载流程文件并将其签入Version Control。然后编辑构建定义,单击Process选项卡上的New按钮,浏览版本控制中的过程文件。
答案 1 :(得分:1)
对于那些偶然发现我遇到的问题的人(有些但不是所有的软件包都在构建服务器上恢复),对我来说最后一块拼图就是在我的解决方案的根目录中添加一个NuGet.config,兄弟姐妹David Ebbo在这里解释的.SLN文件:http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html。
从Ebbo的博文中,我的文件内容只是
<span th:text="*{ (a * 1.0) / (b + c)}"></span>
可悲的是,我不明白为什么这会改变我的想法。但它现在正在工作,我继续前进!
<强>更新强>
NuGet API网址已针对v3进行了更改(截至2016年9月的当前状态)。来自https://www.nuget.org/
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
</configuration>