Как я могу заставить GitVersion /UpdateAssemblyInfo работать с проектом ASP.NET Core 2.0
Мы уже давно используем сервер сборки Bamboo, и у нас установлен GitVersion, поэтому его можно выбрать в качестве задачи в плане сборки. Обычно мы используем аргумент /UpdateAssembleInfo при запуске задачи. Для проектов.NET Framework это обновит файл assemblyinfo в источнике с настройками контроля версий Bamboo, чтобы в сборках.NET была та же информация о версии, что и в наших сборках Bamboo и последующем развертывании Bamboo, что позволяет нам знать версию развернутого проекта в поле путем изучения свойств файла сборки. Это все работало довольно хорошо.
Однако сейчас мы создаем и внедряем решения.NET Core 2.0 и обнаруживаем, что GitVersion /UpdateAssemblyInfo не работает.
Я искал исправление для.NET Core, но смог найти только решения, связанные с использованием файла project.json, который больше не используется с.NET Core 2.0 (он изменился на файл *.csproj).
Я посмотрел на http://gitversion.readthedocs.io/en/latest/usage/command-line/ и попытался запустить
gitversion.exe /UpdateAssemblyInfo MyProjectName.AssemblyInfo.cs /EnsureAssemblyInfo
где MyProjectName представляет фактический суффикс имени проекта для файла assemblyinfo.cs в папке.NET Core 2.0 ..\\obj\release\netcoreapp2.0. Но это не обновило этот файл.
Я должен предположить, что должно быть решение для использования GitVersion с Bamboo и.NET Core 2.0, но мне трудно найти его.
Есть идеи?
2 ответа
В качестве обходного пути вы можете указать информацию о сборке в качестве свойств проекта в .csproj
<PropertyGroup>
<Version>1.2.3.4</Version>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
...
</PropertyGroup>
а затем установка значений во время dotnet build
, В дополнение к его опциям, dotnet build
Команда принимает параметры MSBuild, такие как /property
/property:name=value
/p:name=value
Установить или переопределить указанные свойства уровня проекта, гдеname
это имя свойства иvalue
это значение свойства. Укажите каждое свойство отдельно или используйте точку с запятой или запятую для разделения нескольких свойств.
Таким образом, ваша команда сборки будет что-то вроде
dotnet build /p:Version=1.2.3.4;AssemblyVersion=1.2.3.4
Последняя версия GitVersion предоставляет
/updateprojectfiles
переключиться на обновление информации о версии в Sdk-стиле .csproj / .vbproj / .fsproj рекурсивно.
Из GitVersion / Usage / CommandLine / Arguments:
/updateprojectfiles
Will recursively search for all project files
(.csproj/.vbproj/.fsproj) files in the git repo and update them
Note: This is only compatible with the newer Sdk projects
Он создает необходимые атрибуты, даже если они отсутствуют в файлах проекта, что приводит к следующим свойствам:
<Project>
<PropertyGroup>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<InformationalVersion>1.0.0-versionNumber.N+Branch.branchName.Sha.commitId</InformationalVersion>
<Version>1.0.0-versionNumberNNNN</Version>
</PropertyGroup>