TFS中的Nuget还原将包还原到不同的目录

时间:2016-09-12 12:32:11

标签: tfs nuget tfsbuild nuget-package-restore

我将 packages.config nuget.config 放到我的根文件夹中。

当我在我的开发计算机上运行 nuget restore 时,软件包将恢复到 root / packages 文件夹中,如nuget.config中所述。

但是,当我将Nuget Installer构建步骤添加到我的TFS2015构建定义时,这些包将恢复到../Nuget/Packages,它位于我的根文件夹之外。我在下一个构建步骤中引用已恢复的nuget包时遇到问题。

  1. 为什么nuget restore在构建服务器上的行为有所不同?
  2. 如何解决?
  3. enter image description here

    nuget.config:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <config>
        <add key="repositoryPath" value="Packages" />
      </config>
      <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
      </packageRestore>
      <packageSourceCredentials />
    </configuration>
    

    从NuGet恢复构建步骤中记录:

    Set workingFolder to default: C:\Builds\Agent\tasks\NuGetInstaller\0.1.18
    Executing the powershell script: C:\Builds\Agent\tasks\NuGetInstaller\0.1.18\NuGetInstaller.ps1
    Saving to C:\Windows\Agent\_work\2\NuGet\newNuGet.config
    C:\Builds\Agent\agent\worker\tools\NuGet.exe restore "C:\Windows\Agent\_work\2\s\packages.config"  -NonInteractive -configfile "C:\Windows\Agent\_work\2\NuGet\newNuGet.config"
    MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.
    All packages listed in packages.config are already installed.
    

3 个答案:

答案 0 :(得分:1)

您也可以从命令行覆盖packages目录,这可能会更容易,因为您可以使用构建中的预定义变量传递值:

Nuget Arguments: -PackagesDirectory "$(Build.SourcesDirectory)\Packages"

答案 1 :(得分:0)

关于&#34;解决方案之路&#34;在Nuget Installer步骤中,您需要提供解决方案文件的路径。

如果您没有解决方案并希望将页面还原到路径&#34; C:\ Windows \ Agent_work \ 2 \ s&#34;。在Nuget.config文件中,将repositoryPath更改为:

<config>
    <add key="repositoryPath" value="../s/Packages" />
</config>

但是在您的本地环境中,您需要更改回值=&#34;包&#34;。

答案 2 :(得分:0)

根据“高级”选项中“目标目录”中的注释,如果您未指定文件夹,它将为您选择一个可能不想要的文件夹,因此只需在其中放置$(Build.SourcesDirectory)。 / p>

enter image description here