【问题标题】:How to get nuget restore in TFS build如何在 TFS 构建中获得 nuget 还原
【发布时间】:2015-11-16 10:49:08
【问题描述】:

我无法让它工作 TFS 构建。这是nuget恢复问题。 Nuget 不恢复参考 dll 文件。

这是我的构建配置。请告诉我如何使它起作用。

【问题讨论】:

    标签: c# continuous-integration tfsbuild continuous-deployment


    【解决方案1】:

    根据 Nuget 网站上的 this blog post,您可以使用您提到的命令行,但它必须是使用 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>
    

    或者,您可以通过custom Pre-Build Script 调用它。

    或者,customise the XAML template 并添加一个 Foreach 循环来调用:

    nuget.exe restore path\to\solution.sln
    

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

    【讨论】:

    • 我收到了这个错误 - “命令 C:\OrderProcessEngine\tools\Nuget\nuget.exe "restore "" exited with code 1.
    • 我在谷歌上搜索过,大多数人建议将构建详细程度设置为诊断并检查其他情况。
    • 戴夫,你说的构建项目是什么意思?这是什么项目类型?我在 VS 模板或在线模板中没有看到这个
    • 您可以创建一个名为 Build.proj 的文件,其中包含上述内容。然后对其进行编辑以在其中包含您的解决方案文件。
    • @RandallTo,请查看我的回复以了解步骤。 +1 戴夫的回答。
    【解决方案2】:

    为了在 VSO (TFS) 构建过程中恢复这些 NuGet 包,您需要遵循以下步骤(在 Dave 的帖子中提到了 here)。

    1. 将以下项目添加到解决方案中。 (nuget.config和.tfignore文件的内容可以在here找到)

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 1970-01-01
      • 2019-11-26
      • 2015-01-11
      • 1970-01-01
      • 2012-10-27
      • 2023-03-04
      • 2018-03-28
      • 2017-12-04
      相关资源
      最近更新 更多