Автоматическое создание версий сборки .NET Core работает в файле assemblyInfo.cs, но не в файле проекта. - PullRequest
0 голосов
/ 16 февраля 2019

Я прочитал несколько постов о версиях сборок в .NET Core.У меня есть сборки .NET Framework, которые используют автоматическое управление версиями, где в файле assemblyInfo.cs я установил атрибут [assembly: AssemblyVersion ("2.1. *")].Когда я собираю сборку, я могу проверить ее свойства, и версии файла и продукта отражают версию, подобную 2.1.6985.26662, где 6985 и 26662 - это автоматически заполненные номера сборки и редакции.

Я понимаю, что в .NET Core я могу установить информацию о сборке в файле проекта, поэтому я начал со следующего в моем файле проекта:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
    <UserSecretsId>7c702802-48ca-46ea-8a7a-1fa89100baef</UserSecretsId>
    <Deterministic>false</Deterministic>
    <AssemblyVersion>2.1.*</AssemblyVersion>
  </PropertyGroup>

Требуется Deterministic = falseдля того, чтобы версия содержала подстановочный знак.В другом месте моего кода я открываю и открываю версию, обращаясь к ней с помощью

            Version serviceVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
            DateTime buildDate = new DateTime(2000, 1, 1).AddDays(serviceVersion.Build).AddSeconds(serviceVersion.Revision * 2);
            string reportVersion = "{serviceVersion} ({buildDate})";

. Когда я запускаю этот код, сборка и ревизия всегда равны 0. .NET Core принимает подстановочный знак в версии, но не 't автоматически заполняет номера сборки и ревизии.

Если я удаляю версию сборки из файла проекта и помещаю ее в файл assemblyInfo.cs, то, похоже, она работает так, как я ожидаю.В итоге я получаю в файле проекта:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
    <UserSecretsId>7c702802-48ca-46ea-8a7a-1fa89100baef</UserSecretsId>
    <Deterministic>false</Deterministic>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>

GenerateAssemblyInfo = false необходим, чтобы автоматически сгенерированные атрибуты сборки не конфликтовали с моими явно установленными атрибутами.И у меня есть это в моем файле assemblyInfo.cs:

[assembly: AssemblyVersion("2.1.*")]

Код отражения, который я использую для чтения и доступа к версии, тот же, но теперь он имеет ожидаемые номера сборки и ревизии.

Кто-нибудь знает, будут ли автоматически установленные номера сборки и ревизии работать, когда версия сборки установлена ​​с подстановочным знаком в файле проекта?Или я делаю что-то не так, что не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...