Я хочу, чтобы моя версия WPF опубликовала версию. Я попытался использовать ответ для этого вопроса. Он работает, но проблема в том, что мы можем вручную изменить значения там. Я хочу знать, сколько раз мой проект был опубликован (не нужен номер версии. Сколько раз я публиковал свое приложение). Это можно сделать?
Как получить опубликованную версию приложения WPF
Ответ 1
Используя Click Once, каждый раз, когда вы публикуете, Visual Studio автоматически изменит номер. Он будет увеличивать значение каждый раз, когда вы публикуете. Ваша проблема в том, что вы вручную изменили номер. Решение состоит в публикации и просто позволяет Visual Studio обновить значение... вы должны заметить, что ваш проект должен быть сохранен после публикации. Это связано с тем, что Visual Studio просто увеличила значение для вас.
ОБНОВЛЕНИЕ → >
Если вы хотите получить доступ к опубликованной версии из кода (который вы должны были четко указать в своем вопросе), вы можете использовать этот код, но вы должны убедиться, что приложение сначала развертывается в сети... это означает, что он действительно был опубликован, поэтому он не будет работать во время отладки. Попробуйте следующее:
private string GetPublishedVersion()
{
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.
CurrentVersion.ToString();
}
return "Not network deployed";
}
Ответ 2
var obj=Assembly.GetExecutingAssembly().GetName().Version;
string version= string.Format("Application Version {0}.{1}", obj.Build, obj.Revision);
OR
string version= string.Format("Application Version {0}.{1}", obj.Major, obj.Minor);
то, что вам подходит.
Ответ 3
Вы можете быть смущены двумя наборами чисел. Обратите внимание, что вы можете установить версию своего приложения WPF в ДВЕ разных мест:
- Свойства проекта/вкладка "Опубликовать" / Опубликовать версию
-
AssemblyVersion
объявлен в файле AssemblyInfo.cs, который вы можете найти, если вы развернете Project Properties node в обозревателе решений.
Они схожи в том смысле, что оба они обеспечивают 4 числа: майор, минор, строение и ревизия. Разница в том, что Publish Version
доступен только, если приложение было фактически опубликовано (т.е. Установлено). Он недоступен в вашем отладочном сеансе, и если вы просто скопируете исполняемый файл на другой компьютер и запустите его там. SO, если вам просто нужно отслеживать версию вашего EXE файла, используйте AssemblyInfo.cs.
Соответственно, для чтения данных используйте следующий код:
1 Чтобы прочитать Опубликовать версию (объявлена на вкладке "Опубликовать" )
using System.Deployment.Application;
ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
Обратите внимание, что в этом случае: a) вам нужно добавить ссылку на сборку System.Deployment
, b) если приложение не было развернуто, оно не будет работать.
2 Чтобы прочитать Версия сборки (объявлено в AssemblyInfo.cs)
Assembly.GetExecutingAssembly().GetName().Version;
Это всегда работает.
Ответ 4
Универсальное решение, если мы получаем версию приложения из сборки без запуска:
var version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
string appVersion = $"{version.Major}.{version.Minor}";
GetEntryAssembly предоставляет версию запускаемого проекта.