Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
5 / 5 / 3
Регистрация: 05.10.2017
Сообщений: 23

Не меняется версия приложения

19.12.2023, 16:04. Показов 1680. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Когда-то давно создавал приложения с использованием .Net Framework в IDE SharpDevelop и с помощью знака подстановки (*) автоматически генерировались компоненты версии приложения. Теперь же в VisualStudio 17 (2022) как бы ни пытался использовать этот символ, он в любом случае заменяется на 0 и не меняется при изменении кода и пересборке проекта. Версию приложения смотрю в проводнике, в свойствах .exe. Для теста создавал с нуля консольные приложение .NET 6 / 7 и .Net Framework 4.8.
Перепробовал разные решения из интернета 15-тилетней давности и посвежее, но так и не добился нужного результата.
И что хуже всего, не получилось найти ни одного вопроса с точно такой же проблемой. Помогите разобраться в чём может быть причина.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.12.2023, 16:04
Ответы с готовыми решениями:

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

Версия приложения и подключаемой библиотеки
Всем здравствуйте! Подскажите, пожалуйста, я могу добавить библиотеку версии Net.Framework 4.8.1 к приложению, написанному, например, на...

Не меняется приоритет процесса запущенного приложения - C#
Программа запускает процесс и выводит в textbox его приоритет. Дальше нужно открыть диспетчер задач, найти этот процесс и поменять там его...

19
5 / 5 / 3
Регистрация: 05.10.2017
Сообщений: 23
19.12.2023, 16:37  [ТС]
Пример консольного приложения .Net Framework 4.8
Миниатюры
Не меняется версия приложения  
0
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
19.12.2023, 16:54
ArtKV, В файле проекта, который .csproj в группе <PropertyGroup> написать что-то типа такого
XML
1
2
    <FileVersion>1.1.$([System.DateTime]::UtcNow.Date.Subtract($([System.DateTime]::Parse("2000-01-01"))).TotalDays).$([System.Math]::Floor($([MSBuild]::Divide($([System.DateTime]::UtcNow.TimeOfDay.TotalSeconds), 1.32))))</FileVersion>
    <Version>1.1.$([System.DateTime]::UtcNow.Date.Subtract($([System.DateTime]::Parse("2000-01-01"))).TotalDays)</Version>
1
Эксперт .NET
 Аватар для Rius
13025 / 7590 / 1661
Регистрация: 25.05.2015
Сообщений: 23,090
Записей в блоге: 14
19.12.2023, 16:55
Юзайте AssemblyVersion


А лучше Git + теги + GitVersion.
Потому как привязка к дате сборки - такое себе... ничего не значит.
1
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
19.12.2023, 16:56
ArtKV, И будет типа вот такого номера 1.1.8650.23370
0
5 / 5 / 3
Регистрация: 05.10.2017
Сообщений: 23
19.12.2023, 17:05  [ТС]
Да, спасибо большое, это работает в приложении на .NET 7!

А для .NetFramework в качестве решения можно в Properties/AssemblyInfo.cs указать только AssemblyVersion, при этом удалить строку с изменением AssemblyFileVersion и версия автоматически присвоится.
Миниатюры
Не меняется версия приложения  
0
Эксперт .NET
 Аватар для Rius
13025 / 7590 / 1661
Регистрация: 25.05.2015
Сообщений: 23,090
Записей в блоге: 14
19.12.2023, 17:08
Только это дата сборки, а не версия.
Более старая версия исходника даст более новую "версию", если будет собрана позже более новой версии исходников.
0
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
19.12.2023, 17:17
Цитата Сообщение от Rius Посмотреть сообщение
Только это дата сборки, а не версия.
Это вы про мой вариант? У меня эти числа постоянно увеличиваются, если была пересборка проекта.
0
Эксперт .NET
 Аватар для Rius
13025 / 7590 / 1661
Регистрация: 25.05.2015
Сообщений: 23,090
Записей в блоге: 14
19.12.2023, 17:27
Про генерацию двух последних чисел на основе даты.

Добавлено через 9 минут
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
У меня эти числа постоянно увеличиваются, если была пересборка проекта.
Ага, вот именно. Это полезно, если какой-то хрени, реагирующей на версию, нужно обязательно подсунуть новую версию. Например, чтобы кеш сбросила и ресурсы перечитала.

Но из одной версии исходников должна получаться одна версия файла. Как максимум - абсолютно такая же (deterministic), но можно и с указанием где-то ещё дополнительно даты сборки, если она действительно нужна.
А результат вот этого способа вводит в заблуждение. По номеру такой "версии" непонятно на самом деле, новее она или нет, только то, что собрана она позже или раньше.
0
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
19.12.2023, 17:30
Цитата Сообщение от Rius Посмотреть сообщение
Но из одной версии исходников должна получаться одна версия файла.
Ну с этим согласен
0
5 / 5 / 3
Регистрация: 05.10.2017
Сообщений: 23
19.12.2023, 18:08  [ТС]
В GitRevision вычитал про отключение генерации некоторых данных, так что как ещё один простой способ автоувеличения версии даты сборки с помощью символа * можно в .csproj добавить примерно следующее:
XML
1
2
3
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
<Deterministic>false</Deterministic>
<AssemblyVersion>2.9.*</AssemblyVersion>
И получится вот так:
Миниатюры
Не меняется версия приложения  
0
5 / 5 / 3
Регистрация: 05.10.2017
Сообщений: 23
19.12.2023, 18:08  [ТС]
Вообще первые два разряда версии я вручную меняю, но хотелось также автоматически добавлять номер сборки. Так что цель достигнута! : ) Очень долго с этим мучился сегодня.

Andrey-MSK, Rius, спасибо вам большое как за быстрое решение, так и за более продвинутое, правильное!
Rius, предложенную Вами связку обязательно изучу подробнее и опробую.
0
Эксперт .NET
 Аватар для Wolfdp
3788 / 1765 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
20.12.2023, 23:32
Цитата Сообщение от Rius Посмотреть сообщение
А лучше Git + теги + GitVersion.
+1. Так проще понять, с какой версией кода имеешь дело.

Цитата Сообщение от Rius Посмотреть сообщение
Потому как привязка к дате сборки - такое себе... ничего не значит.
В fileversion по идеи самое оно. По сути можешь сделать разные сборки одной и той же ветки из-за разных настроек комплияции. В итоге код вроде тот же, а работает по разному.
0
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
17.09.2024, 17:11
Цитата Сообщение от Rius Посмотреть сообщение
А лучше Git + теги + GitVersion.
А можете написать как настроить это дело? По инструкции установил пакет, добавил тэг v0.0.1 на первый коммит, сделал еще пару, пересобрал и в итоге версия как была 1.0.0.0 так и осталась... Хотя у них сказано что
Done!

The setup process is now complete and GitVersion.MsBuild should be working its magic, versioning your assemblies like a champ. However, more can be done to further customize the build process. Keep reading to find out how the version variables are set and how you can use them in MSBuild tasks.
а в итоге не работает...
0
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
18.09.2024, 10:26
Нашел другой пакет для создания версии - GitInfo. По умолчанию пакет формирует слишком длинную версию сборки, пришлось поковырять и подключить файл AssemblyInfo.
В общем делал так.
1. Установил пакет из NuGet.
2. В нужный коммит добавил тэг с версией. Сделал еще пару, собрал - версия работает и увеличивается.
3. Отключил автогенерацию файла AssemblyInfo и автоматическую установку версии в файле проекта
XML
1
2
3
4
5
6
7
8
<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>disable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <GitVersion>false</GitVersion> <!-- Автоматическая генерация версии пакетом -->
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo> <!-- Автогенерация AssemblyInfo -->
</PropertyGroup>
4. В файле AsseblyInfo задал генерацию номера версии средствами пакета
C#
1
2
3
4
5
6
7
8
[assembly: AssemblyVersion(ThisAssembly.Git.SemVer.Major + "." + ThisAssembly.Git.SemVer.Minor + "." + ThisAssembly.Git.SemVer.Patch)]
[assembly: AssemblyFileVersion(ThisAssembly.Git.SemVer.Major + "." + ThisAssembly.Git.SemVer.Minor + "." + ThisAssembly.Git.SemVer.Patch)]
[assembly: AssemblyInformationalVersion(
    ThisAssembly.Git.SemVer.Major + "." +
    ThisAssembly.Git.SemVer.Minor + "." +
    ThisAssembly.Git.SemVer.Patch + "-" +
    ThisAssembly.Git.Branch + "+" +
    ThisAssembly.Git.Commit)]
5. И в итоге получил вот такой вид

Мне нравится
0
Эксперт .NET
 Аватар для Rius
13025 / 7590 / 1661
Регистрация: 25.05.2015
Сообщений: 23,090
Записей в блоге: 14
18.09.2024, 18:25
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
А можете написать как настроить это дело?
В архиве.

6 версия почему-то не работает. Пользуюсь 5.12.
Вложения
Тип файла: 7z demo.7z (19.1 Кб, 10 просмотров)
1
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
19.09.2024, 08:16
Rius, Спасибо за пример. Покопаюсь
0
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
25.09.2024, 11:51
Цитата Сообщение от Rius Посмотреть сообщение
6 версия почему-то не работает
Последняя версия тоже работает, но только если проект собирать из консоли. Из студии он не хочет... Странно как-то...
0
Эксперт .NET
 Аватар для Rius
13025 / 7590 / 1661
Регистрация: 25.05.2015
Сообщений: 23,090
Записей в блоге: 14
13.10.2024, 13:07
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
только если проект собирать из консоли. Из студии он не хочет... Странно как-то...
Они дропнули поддержку .Net Framework 4.8, поэтому же сломалась поддержка сборки из Visual Studio.
https://github.com/GitTools/GitVersion/issues/4102
Типа юзайте CI/CD (сборку из консоли), как белые люди, и вот там всё у вас будет работать...
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3384 / 2703 / 573
Регистрация: 04.09.2018
Сообщений: 8,513
Записей в блоге: 3
18.10.2024, 15:10
Use with Automatic Versions 3 VSIX addon.
- install package
- restart the VS
- select AV3 widget:

- change the settings according to your preferences:

- the version number is also read from Assembly.GetExecutingAssembly():
C#
1
public string Version => System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
- the number changes according to the rules with each assembly:
Название: 3.png
Просмотров: 68

Размер: 1.9 Кб
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2024, 15:10
Помогаю со студенческими работами здесь

Неправильно меняется иконка в заглавии окна приложения
Хочу заменить иконку в заглавии окна программы вместо стандартной. Рисую новую, сохраняю в проекте, меняю в свойствах, но вместо...

После сворачивания приложения меняется положение формы
Имеется форма, для которой в графическом интерфейсе Visual Studio установлено значение Location = (0,0). Однако при запуске программы...

Как проверить при публикации, что версия ОС удовлетворяет требованиям приложения?
Доброго дня. Собираю установщик моей программы для CD/DVD. Как я могу выбрать операционные системы, на каких это приложение будет...

Не меняется версия в с++ билдер 6
Суть такова что версия, при создании файла, не меняется больше. В версус Инфо все меняется, но не сохраняется, та версия на которую...

Ошибка приложения anmon_550.exe, версия 0.0.0.0, модуль anmon_550.exe, версия 0.0.0.0, адрес 0х0000а5d5
Ошибка приложения anmon_550.exe, версия 0.0.0.0, модуль anmon_550.exe, версия 0.0.0.0, адрес 0х0000а5d5. В журнале событий выщла ошибка,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru