Nuget VSTS生成包位置配置

Nuget VSTS生成包位置配置,nuget,azure-pipelines,packages.config,Nuget,Azure Pipelines,Packages.config,在VSTS中构建项目时,我们首先在nuget还原步骤中下载nuget包 nuget.config的路径指向解决方案文件夹.nuget中的一个文件。 在此文件中有一个指向存储库的路径 运行构建时,恢复步骤工作正常,所有包都恢复到此目录中 2017-07-12T14:11:15.7270814Z Adding package '***' to folder 'd:\a\3\s\microservices\MyPackages12' 但是在构建过程中,由于位置错误,无法找到包 2017-07-12

在VSTS中构建项目时,我们首先在nuget还原步骤中下载nuget包

nuget.config的路径指向解决方案文件夹.nuget中的一个文件。 在此文件中有一个指向存储库的路径

运行构建时,恢复步骤工作正常,所有包都恢复到此目录中

2017-07-12T14:11:15.7270814Z Adding package '***' to folder 'd:\a\3\s\microservices\MyPackages12'
但是在构建过程中,由于位置错误,无法找到包

2017-07-12T14:11:27.7978408Z           Considered "..\..\MyPackages\
这似乎只适用于来自vsts的包馈送的包

在构建步骤中,我可以在何处或如何更改包的位置

谢谢

编辑

Nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="..\MyPackages" />
  </config>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/"  />
    <add key="MyWebAPI" value="https://MyWebAPI.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>
但在构建步骤中,它使用了不同的位置

 2017-07-14T06:35:49.5938928Z d:\a\1\s\WebSiteCiCd\WebSiteCiCd\WebSiteCiCd.csproj(297,5): error : This project references NuGet package(s) that are missing on this computer. 
Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. 
The missing file is ..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props.
它使用..\packages\reference路径


希望这有助于更新项目文件中的引用。看起来有人引用了计算机上存在的非标准位置以外的包


解决此类问题的最简单方法是删除所有本地包(或从源代码管理重新同步fresh),然后让还原在本地运行。这将很快发现引用中的问题。

任务使用临时Nuget配置文件(例如-ConfigFile xxx\u work\17\Nuget\tempNuGet\u 1951.config),然后存储路径基于此临时文件

因此,对于..\s\websitecid\Packages路径,包将被还原到xxx\u work\17\s\websitecid\Packages文件夹。(..\MyPackages=>xxx\u work\17\MyPackages)


更好的方法是,您可以删除repositoryPath(delete config节)的设置,只需使用localbuild server的默认设置,那么结构是相同的

得益于@starain MSFT的解决方案:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="My packages" value="https://mypackages.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" />
  </packageSources>
</configuration>

在csproj文件中设置包的hintpath:

  <Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
      <HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>

..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll

仍然认为如果build Tak可以使用一个nuget.config文件来设置包的选项会很方便

nuget.config的详细代码是什么?这些引用的路径是什么?您可以在此或在OneDrive上共享详细的构建日志吗?试着参考这篇文章,我已经用edit 2@starain msfth更新了这个问题这是我最初的看法。。。那没用。因为我有一个包提要,所以我需要一个nuget.config文件。从那以后,我的软件包恢复出现了问题。我理解参考路径和包文件夹深度的问题。但让我印象最深的是构建没有使用nuget.config。因为我引用的是..\packages\文件夹,而不是..\Mypackages\。为了让构建使用此文件,我是否需要将nuget.config放在更靠近根目录的更高级别上?@Frans我的意思是,您只需要删除nuget.config文件中的config部分,然后在构建任务中仍然使用更新的nuget.config文件。另一方面,无论Nuget.config中的repositoryPath设置如何,用于构建的引用路径都是固定的。de nuget配置文件中没有repositoryPath,请使用2.0版本的包任务,在de csproj文件中为所有包设置正确的提示路径。
2017-07-14T06:35:40.5913207Z Restoring NuGet package Microsoft.AspNet.WebPages.3.2.3.
2017-07-14T06:35:40.5923209Z   GET https://www.nuget.org/api/v2/Packages(Id='Microsoft.AspNet.WebPages',Version='3.2.3')
2017-07-14T06:35:40.6643208Z   OK https://www.nuget.org/api/v2/Packages(Id='Microsoft.AspNet.WebApi.WebHost',Version='5.2.3') 113ms
2017-07-14T06:35:40.6683214Z   GET https://www.nuget.org/api/v2/package/Microsoft.AspNet.WebApi.WebHost/5.2.3
2017-07-14T06:35:40.6798131Z Completed installation of Microsoft.AspNet.Razor 3.2.3
2017-07-14T06:35:40.6818132Z Adding package 'Microsoft.AspNet.Razor.3.2.3' to folder 'd:\a\1\MyPackages'
2017-07-14T06:35:40.6828123Z Completed installation of Microsoft.AspNet.Mvc 5.2.3
 2017-07-14T06:35:49.5938928Z d:\a\1\s\WebSiteCiCd\WebSiteCiCd\WebSiteCiCd.csproj(297,5): error : This project references NuGet package(s) that are missing on this computer. 
Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. 
The missing file is ..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="My packages" value="https://mypackages.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" />
  </packageSources>
</configuration>
  <Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
      <HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>