Так есть ли способ, когда я создаю свое приложение, тогда оно должно изменить версию только библиотеки A, B, C и D, которые имеют изменения. Вручную я могу изменить, но мне нужен любой автоматический c способ.
На самом деле, файл Directory Build.targets
, вероятно, может реализовать это. Когда вы создаете файл с именем Directory.Build.targets, он может искать и воздействовать на все проекты в текущей папке и подчиненных. См. этот документ о его области поиска. Directory Build.targets
очень похоже на Directory Build.props
. И Directory Build.targets
выполняется после сборки, в то время как Directory Build.props
выполняется до начала сборки.
В вашей ситуации , вы хотите перезаписать свойство Версия , вы должны использовать Directory Build.targets
.
Тогда , когда Вы строите проект, он автоматически помещает контент в сферу проекта.
Решение
1) Создайте файл с именем Directory Build.targets
file под вашим решением или каталог верхнего уровня из 100 проектов.
2) добавьте их в Directory Build.targets
файл:
<Target Name="change_property" AfterTargets="CoreCompile">
<PropertyGroup>
<Version>xxxxx</Version>
</PropertyGroup>
</Target>
3) Затем вы можете установить версию всех измененных проектов на ту же версию, что и вы ш sh.
И эта функция делает одинаковые изменения свойств для всех измененных проектов.
Вы должны заметить, что у нее есть недостаток
Но вы не должны изменение других связанных проектов (изменение кода или добавление нового элемента, изображения или чего-либо еще). При изменении несвязанных проектов эта функция также изменяет версию несвязанных проектов. Это особенность CoreCompile target.
Предложение
Поэтому , вам следует обратить внимание, чтобы не изменять другие проекты или вы можете использовать Alt + A, чтобы выбрать все проекты -> выгрузить проект, а затем перезагрузить необходимые проекты и изменить их в случае изменения любых других не связанных проектов.
или попытаться поставить эти необходимые проекты в новую папку с именем Modified Projects
в папке решения (которая существует xxx.sln
file) и затем поместите Directory Build.targets
в папку Modified Projects
.
--------- -------- Используйте другие методы, подобные этой, чтобы избежать этой ситуации.
Обновление 1
1) Если ваши проекты в той же папке решения вы можете создать файл с именем Directory.Build.targets
.
Он будет работать со всеми элементами в текущей папке и ее вторичный каталог.
И добавьте мой пример кода в этот файл:
<Project>
<Target Name="change_property" AfterTargets="CoreCompile">
<PropertyGroup>
<Version>xxxxx</Version>
</PropertyGroup>
</Target>
</Project>
И тогда вы можете изменить свой проект nuget cts, когда вы заканчиваете связанные проекты, вы можете создать свое решение или использовать MSBuild.exe до build xxx.sln
, и этот файл будет выполнен автоматически и изменит версию измененных проектов nuget.
Надеюсь, что это может помочь Вас и любой другой отзыв ожидают.
Обновление 2
Пожалуйста, попробуйте изменить для использования в Directory.Build.targets
, и оно будет работать в рамках всего решения, чтобы применить к каждый verison
номер.
<Project>
<Target Name="change_property" AfterTargets="CoreCompile">
<PropertyGroup>
<Version>xxxxx</Version>
</PropertyGroup>
</Target>
</Project>
<PropertyGroup>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>
и убедитесь, что <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
в Directory.Build.targets
. В противном случае это не удастся. Поэтому, пожалуйста, удалите этот узел в xxx.csorj
файле и добавьте <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
в Directory.Build.targets
.