Получение номера версии в коде .Net Core 3 WPF Sideload - PullRequest
0 голосов
/ 01 ноября 2019

Я могу создавать, развертывать и устанавливать свой проект, используя .NET Core 3.0 WPF и боковую загрузку (пакеты приложений Windows Store, но по локальному UNC-пути). Кажется, все это работает нормально, но я не могу найти способ получить номер текущей версии с помощью кода, который будет отображаться пользователю во время работы приложения.

Я пробовал так, как всегдасделано в ClickOnce с использованием отражения и XML. Я также пытался использовать метод UWP, который я видел в других местах, и не могу использовать Windows.ApplicationModel в WPF / .NET Core 3

. Этот способ работал для меня в .NET Framework с ClickOnce

XmlDocument xmlDoc = new System.Xml.XmlDocument();
Assembly asmCurrent = System.Reflection.Assembly.GetExecutingAssembly();
string executePath = new Uri(asmCurrent.GetName().CodeBase).LocalPath;
xmlDoc.Load(executePath + ".manifest");
string retval = string.Empty;
if (xmlDoc.HasChildNodes)
{
     retval = xmlDoc.ChildNodes[1].ChildNodes[0].Attributes.GetNamedItem("version").Value.ToString();
}
return new Version(retval).ToString();

Это похоже на то, что люди делают с UWP и Магазином Windows

Package package = Windows.ApplicationModel.Package.Current;
PackageId packageId = package.Id;
PackageVersion version = packageId.Version;

Я также пытался сделать это с помощью Reflection, но он всегда возвращает 1.0.0.0, даже при развертывании.

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
return fvi.FileVersion;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...