Как я могу заставить 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>
Другие вопросы по тегам