Обновление Nuget при сборке - PullRequest
       13

Обновление Nuget при сборке

0 голосов
/ 10 сентября 2018

У меня проблемы с тем, чтобы мой проект обновил наши собственные пакеты nuget при перестройке. У нас есть несколько базовых справочных библиотек, которые мы должны обновлять каждый раз, когда проект зависит от него.

Я использую Visual Studio 2017 и Nuget 4.7.1

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

Вот что у меня в файле проекта:

<PackageReference Include="SMSCore">
  <Version>10.5.0</Version>
</PackageReference>
<PackageReference Include="STMICore">
  <Version>10.5.0</Version>
</PackageReference>

Документация Nuget говорит об этом:

<!-- Accepts any 6.x.y version. -->
<PackageReference Include="ExamplePackage" Version="6.*" />
<PackageReference Include="ExamplePackage" Version="[6,7)" />

https://docs.microsoft.com/en-us/nuget/reference/package-versioning

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

Кажется, на самом деле ничего не работает.
Может я смотрю не ту документацию?
Я довольно новичок в определении и использовании репозиториев nuget, поэтому я не удивлюсь, если это что-то простое.

Любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

Полагаю, мне нужно знать, возможно ли, чтобы проект обновлял все зависимые пакеты nuget при сборке проекта?

Если вы используете package.config, будет очень легко обновить все его зависимые пакеты nuget. Нам просто нужно добавить событие перед сборкой, чтобы обновить его:

<YourNuGetCLIPath>\nuget.exe update "YourSolutionFile.sln or PackageId"

Проверьте команду обновления (NuGet CLI) для получения более подробной информации.

Если вы используете PackageReference, это станет немного сложнее. Это потому, что NuGet.exe обновление не поддерживает PackageReference. В этом случае мы должны использовать плавающие версии для автоматического обновления пакетов (вы упомянули вопрос), но это работает не для всех зависимых пакетов nuget, поэтому плавающие версии, похоже, вам тоже не подходят. более того, если вы используете PackageReference, в пользовательском интерфейсе управления пакетами NuGet есть еще одна проблема:

NuGet Build Integrated Project обработка плавающих версий и диапазонов в Visual Studio Client

Кроме того, если ваш тип проекта SDK <Project Sdk="Microsoft.NET.Sdk">, существует другой обходной путь для обновления всех его зависимых пакетов nuget с помощью PackageReference, вы можете использовать dotnet add для изменения версии PackageReference в предварительном событие сборки:

dotnet add "$(ProjectPath)" package PackageID

Если вы используете non-SDK + PackageReference, я не нашел подходящих обходных путей.

Итак, если нет ограничений на использование package.config, я думаю, package.config лучше для вас.

Надеюсь, это поможет.

...