TFS 2013构建控制器不尊重NuGet包还原

时间:2015-08-19 16:57:03

标签: tfsbuild tfs2013 azure-devops nuget-package-restore

我们正在使用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构建模板?

2 个答案:

答案 0 :(得分:8)

要使用TFS构建启用还原NuGet包,请按照以下步骤操作。请查看此blog了解详细信息。

  1. 在VS IDE中,转到工具 - >选项 - > NuGet包管理器 - >启用允许NuGet下载丢失的包。
  2. 从.nuget文件夹中删除 NuGet.exe和NuGet.targets文件。这两个文件也是从版本控制中删除的。
  3. 从.proj文件中删除以下标记:
  4.     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>