如何在TFS构建中获取NuGet还原

3

我无法让TFS构建正常工作。这是nuget恢复问题。 Nuget无法恢复引用的dll文件。

以下是我的构建配置。请告诉我如何使其正常工作。

输入图像描述

2个回答

3
根据Nuget网站上这篇博客文章,您可以使用您提到的命令行,但它必须是使用Build.proj文件作为自定义目标的一部分。
您需要添加一个Build.proj并将以下内容放入其中:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0"
         DefaultTargets="Build"
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <OutDir Condition=" '$(OutDir)'=='' ">$(MSBuildThisFileDirectory)bin\</OutDir>
    <Configuration Condition=" '$(Configuration)'=='' ">Release</Configuration>
    <SourceHome Condition=" '$(SourceHome)'=='' ">$(MSBuildThisFileDirectory)src\</SourceHome>
    <ToolsHome Condition=" '$(ToolsHome)'=='' ">$(MSBuildThisFileDirectory)tools\</ToolsHome>
  </PropertyGroup>

  <ItemGroup>
    <Solution Include="$(SourceHome)*.sln">
      <AdditionalProperties>OutDir=$(OutDir);Configuration=$(Configuration)</AdditionalProperties>
    </Solution>
  </ItemGroup>

  <Target Name="RestorePackages">
    <Exec Command="&quot;$(ToolsHome)NuGet\NuGet.exe&quot; restore &quot;%(Solution.Identity)&quot;" />
  </Target>

  <Target Name="Clean">
    <MSBuild Targets="Clean"
             Projects="@(Solution)" />
  </Target>

  <Target Name="Build" DependsOnTargets="RestorePackages">
    <MSBuild Targets="Build"
             Projects="@(Solution)" />
  </Target>

  <Target Name="Rebuild" DependsOnTargets="RestorePackages">
    <MSBuild Targets="Rebuild"
             Projects="@(Solution)" />
  </Target>

</Project>

另外,您还可以从自定义Pre-Build脚本中调用它。

或者,自定义XAML模板并添加一个Foreach循环来调用:

nuget.exe restore path\to\solution.sln

在构建定义中的每个解决方案上。

我收到了这个错误 - “命令C:\OrderProcessEngine\tools\Nuget\nuget.exe”restore“”退出代码为1。 - Tun
我已经在谷歌上搜过了,大多数人建议将构建详细程度设置为诊断级别,并检查其他正在发生的事情。 - DaveShaw
Dave,你所说的“build project”是什么意思?这是哪种类型的项目?我在VS模板或在线模板中都没有看到。 - RandallTo
你可以创建一个名为Build.proj的文件,并将上述内容放入其中。然后编辑它,将你的解决方案文件添加进去即可。 - DaveShaw
@RandallTo,请查看我的回复中的步骤。给Dave的答案点个赞。 - Vicky - MSFT

1
以下是一些步骤(在Dave's post中提到的这里有描述),您需要按照以下步骤才能在VSO(TFS)构建过程中还原这些NuGet包。
  1. 将以下项目添加到解决方案中。(可以在这里找到nuget.config和.tfignore文件的内容)

enter image description here

  1. 在解决方案文件夹的根路径下添加一个build.proj文件。(可以在这里找到build.proj文件的内容)

  2. 在解决方案文件夹的根路径下创建一个名为tools的文件夹。在tools文件夹下创建一个NuGet子文件夹,在tools\NuGet路径下下载并保存nuget.exe

  3. nuget.config.tfignorebuild.projtools\NuGet\nuget.exe检入TFS版本控制。

  4. 修改构建定义以选择构建build.proj文件。 enter image description here

然后您将在TFS构建过程中成功恢复NuGet软件包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接