Конфигурация расположения пакета сборки VSTS

При создании проекта в 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.

где или как я могу изменить расположение пакетов в buildstep?

Спасибо..

редактировать

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>

Редактировать 2 У меня это работает, но не так, как мне нравится.

первое актуальное решение. версия 2 программы установки nuget

buildscreen

текущий nuget.config.

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
  <config>
<add key="repositoryPath" value="..\s\WebSiteCiCd\Packages" />
  </config>
  <packageSources>
    <!-- remove any machine-wide sources with <clear/> -->
    <clear />
    <!-- add a Team Services feed -->
    <add key="MyGreatFeed" value="https://CICD.pkgs.visualstudio.com/_packaging/CICDWebAPI/nuget/v3/index.json" />
    <!-- also get packages from the NuGet Gallery -->
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
 </configuration>

что мне не нравится это

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

Я хотел бы иметь централизованный nuget.config без конкретных имен проектов.

проблема, я думаю, из-за задачи сборки не смотрит на настройки nuget.config, а берет настройки в файле de proj..

который находится в сбойных сборках.. в этом случае я использовал

<add key="repositoryPath" value="..\MyPackages" />

это приводит к шагу восстановления

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.

он использует путь..\packages\ reference

надеется, что это поможет..

3 ответа

Решение

В задаче используется файл конфигурации временного Nuget (например, -ConfigFile xxx_work\17\Nuget\tempNuGet_1951.config), тогда путь к хранилищу основан на этом временном файле.

Таким образом, для пути.. \ s \ WebSiteCiCd \ Packages пакеты будут восстановлены в папку xxx_work\17\s\WebSiteCiCd\ Packages. (..\MyPackages=> xxx_work\17\MyPackages).

Лучший способ заключается в том, что вы можете удалить параметр repositoryPath (удалить раздел конфигурации), просто используйте настройки по умолчанию как для локального сервера, так и для сервера сборки, тогда структуры будут одинаковыми.

Решение благодаря @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>

все еще думаю, что было бы удобно, если бы команды сборки могли использовать файл nuget.config для установки параметров для пакетов

Обновите ваши ссылки в ваших файлах проекта. Похоже, кто-то ссылался на пакет из нестандартного местоположения, существующего на их компьютере.

Самый простой способ устранения подобных проблем - удалить все ваши локальные пакеты (или просто заново синхронизировать только что из системы контроля версий), а затем разрешить восстановление выполнить локально. Это довольно быстро обнаружит проблемы со ссылками.

Другие вопросы по тегам