Автоназначение версии сборки NET

Достаточно долго мучался с версиями сборок (особенно с сервисными сборками) - точнее, с автоназначением их версий. Если сборка на NET, а не Framework.

Спасибо доктору - он показал, что в .csproj достаточно добавить 4 строки:

1
2
3
4
<Deterministic>False</Deterministic>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
<GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
<AssemblyVersion>1.0.*</AssemblyVersion>

И все, номер сборки и номер ревизии назначаются автоматом. Правда, с мажорными / минорными версиями придется ковыряться вручную ;)

Размещено в .NET · Метки:



Комментарии

Есть 10 коммент. к “Автоназначение версии сборки NET”
  1. drz пишет:

    Билд и ревизию можно опять развернуть в дату время компиляции
    /// Дата сборки
    public string sDateRelis()
    {
    DateTime result = new DateTime(2000, 1, 1);
    result = result.AddDays(iBuild);
    result = result.AddSeconds(iRevision * 2);

    #if DEBUG
    return result.ToString();
    #else
    return result.ToLongDateString();
    #endif
    }
    https://github.com/doctorRaz/Infrastructure-library/blob/main/src/Service/AsmInfo.cs

  2. Кулик Алексей aka kpblc пишет:

    Если честно, сейчас пытаюсь сообразить, что я делал почти две недели назад, и оценить ценность и нужность твоего кода я просто не в силах. Мне кажется, что твой класс как-то не совсем версию файла-то показывает :)

    Пара предложений, если позволишь ;)
    Насколько я помню, у Version тьма переопределений для вывода в строку. И это как бы намек, что (возможно) имеет смысл отказаться от повсеместного применения строк ))
    И я не уверен, что конструкция типа
    public string sDescription => (Attribute.GetCustomAttribute(
    asm,
    typeof(AssemblyDescriptionAttribute),
    false) as AssemblyDescriptionAttribute).Description;

    будет всегда и корректно работать: преобразование в AssemblyDescriptionAttribute может и null вернуть. Так что я б, наверное, делал наподобие
    public string sDescription => (Attribute.GetCustomAttribute(
    asm,
    typeof(AssemblyDescriptionAttribute),
    false) as AssemblyDescriptionAttribute)?.Description ?? string.Empty;

  3. drz пишет:

    Согласен на null проверки нужны
    Код выше вытаскивает из билда дату, из ревизии время компиляции.
    Иногда это удобно при отладке, было у меня отлаживал одно, а грузил другое))

  4. Кулик Алексей aka kpblc пишет:

    Ну, до такого я еще не дорос )))

  5. drz пишет:

    файл с именем Directory.Build.targets или Directory.Build.props
    кидаем в корень проекта или решения
    и вот это вот все в

    в проекте не пишем, все как учили DRY в чистом виде

  6. drz пишет:

    false
    0.1.*
    0.1.*
    false
    kpblc
    $(RootUser).$(MSBuildProjectName.Replace(" ", "_"))
    Killer Ficha
    kpblc & K
    Кулик Алексей
    ©kpblc 2000

  7. Кулик Алексей aka kpblc пишет:

    Сейчас попробую твой комментарий привести к божескому виду ) Пять минут

  8. Кулик Алексей aka kpblc пишет:

    А если мне надо, чтоб у части библиотек автонумерация шла на 1.0.*, у части - как 2.13.*, а еще некоторой части я вообще вручную буду назначать? :) Я без наездов, реально любопытно ))

  9. drz пишет:

    Тогда убираешь номера версий из этого файла и аналогичные файлы где только номера версий закидываешь в каталоги проекта или пишешь номера в проекте

  10. drz пишет:

    Ну и в этом файле можно задавать не только версии, но и некоторые повторяющиеся атрибуты сборки

Поделитесь своим мнением


Я не робот.