Как получить опубликованную версию приложения 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 предоставляет версию запускаемого проекта.