Конфигурация расположения пакета сборки 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
текущий 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 для установки параметров для пакетов
Обновите ваши ссылки в ваших файлах проекта. Похоже, кто-то ссылался на пакет из нестандартного местоположения, существующего на их компьютере.
Самый простой способ устранения подобных проблем - удалить все ваши локальные пакеты (или просто заново синхронизировать только что из системы контроля версий), а затем разрешить восстановление выполнить локально. Это довольно быстро обнаружит проблемы со ссылками.