如何在代码后面阅读WPF发布版本号

Abd*_*rif 11 c# wpf xaml code-behind

我想在启动窗口中阅读和显示WPF应用程序发布版本号,在发布选项卡中的项目属性中有发布版本,我该如何获取它并在WPF窗口中显示它.

提前致谢

Saj*_*ran 34

使用Assembly.GetExecutingAssembly()UI 访问程序集版本并在UI中显示

Assembly.GetExecutingAssembly().GetName().Version.ToString();
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的时间,虽然我的应用程序版本是 1.0.0.158 ,但它始终有效但始终将版本设置为 1.0.0.0 ! (3认同)
  • @AbdulsalamElsharif,我认为这是因为您正在使用另一个项目(另一个程序集)中的代码片段。例如,您的主 Windows 应用程序版本是 1.0.2,但您的 dll 项目是 1.0.0。 (2认同)

小智 20

System.Deployment库的引用添加到项目中并将此代码段调整为您的代码:

using System.Deployment.Application;
Run Code Online (Sandbox Code Playgroud)

string version = null;
try
{   
    //// get deployment version
    version = ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
}
catch (InvalidDeploymentException)
{
    //// you cannot read publish version when app isn't installed 
    //// (e.g. during debug)
    version = "not installed";
}
Run Code Online (Sandbox Code Playgroud)

如评论中所述,您无法在调试期间获取发布版本,因此我建议处理InvalidDeploymentException.

  • 如果您从检查ApplicationDeployment.IsNetworkDeployed开始,这将告诉您CurrentDeployment是否可用.这样您就不必处理异常,但可以创建一个简单的if-else. (3认同)

小智 6

使用 System.Reflection.Assembly.GetEntryAssembly().GetName().Version 避免从 dll 获取版本,将始终从当前“exe”获取版本。


Mas*_*ali 5

string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 

Console.WriteLine(version);
Run Code Online (Sandbox Code Playgroud)

  • @Smith.Lai 因为是相同的答案,除了 2 年后。 (4认同)