Используя новый формат CSProj в Visual Studio 2017, я написал целевой файл для обработки новой конфигурации с именем CreateLocalPackages
, в которой сборка создает пакет NuGet в определенной локальной папке и автоматически увеличивает номер своей версии на единицу выше, чем наибольшее число в любом из пакетов решения в этой папке.
В моем решении есть несколько проектов, каждый из которых создает пакет NuGet, причем некоторые из них зависят от других проектов в решении.
Например, с этими файлами в локальном каталоге пакета:
BaseLibrary.2.1.0.1-betalocal.nupkg
BaseLibrary.2.1.0.1-betalocal.symbols.nupkg
BaseLibrary.Specialized.2.1.0.1-betalocal.nupkg
BaseLibrary.Specialized.2.1.0.1-betalocal.symbols.nupkg
Он выберет создание этих пакетов в следующий раз, когда CreateLocalPackages
конфигурация будет собрана чистой:
BaseLibrary.2.1.0.2-betalocal.nupkg
BaseLibrary.2.1.0.2-betalocal.symbols.nupkg
BaseLibrary.Specialized.2.1.0.2-betalocal.nupkg
BaseLibrary.Specialized.2.1.0.2-betalocal.symbols.nupkg
У меня это отлично работает, за исключением того факта, что Visual Studio, кажется, создает файл BaseLibrary\BaseLibrary.Specialized\obj\project.assets.json
, прежде чем я смогу подключиться к цели MSBuild и изменить $(Version) на 2.1.0.2
, в результате чего BaseLibrary.Specialized.2.1.0.2-betalocal.nupkg
вместо этого просто ссылается на эту зависимость: BaseLibrary.2.1.0-betalocal
. Visual Studio создает project.assets.json
на этапе восстановления NuGet перед вызовом MSBuild для сборки проектов.
Я попытался запустить свою логику номера версии BeforeTargets="CollectPackageReferences;_ComputeTargetFrameworkItems"
, чтобы получить ранний вызов в целевой цепочке Restore
, но не похоже, что Visual Studio вызывает MSBuild /t:Restore
для восстановления ссылок на пакеты NuGet (и создания project.assets.json
). Я не знаю, есть ли у него своя логика или он вызывает другой инструмент.
Я хотел бы иметь возможность просто сказать VS Rebuild и заставить его определить новую версию, собрать и упаковать все, а также указать правильные версии зависимостей.