Как заставить 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, но мне трудно его найти.

Любые идеи?


person whiskytangofoxtrot    schedule 23.04.2018    source источник
comment
Он находится в разработке: github.com/GitTools/GitVersion/issues/1388.   -  person Marc LaFleur    schedule 24.04.2018


Ответы (1)


В качестве обходного пути вы можете рассмотреть возможность указания информации о сборке в качестве свойств проекта в .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
person Set    schedule 24.04.2018
comment
Это работало для установки версии сборки во время сборки. А на моем сервере сборки Bamboo я могу заменить переменную ${bamboo.BuildNumber} на последнее значение в последовательности версий, то есть AssemblyVersion=1.2.3.${bamboo.BuildNumber}. Спасибо, - person whiskytangofoxtrot; 26.04.2018
comment
Я должен использовать эти аргументы в dotnet publish с AzDO Pipeline, потому что build шаг просто создает проекты в решении, а publish фактически генерирует артефакты. - person Mihir; 27.12.2018