获取我的C#应用​​程序的版本?

Nan*_*nge 20 c# windows version

我正在研究桌面应用程序.我已经创建了一个设置.

防爆.我的应用程序.版本是1.0.0.

我想得到我的桌面应用程序的当前版本1.0.0.我试过使用Application.ProductVersion但它提供了我的控件的版本.(我使用的是DevExpress Control15.2.7,因此它提供当前版本15.2.7).

如何获取已安装应用程序的当前版本?我想将它与已安装的版本进行比较,以便为我的产品提供"新版本可用"功能.

Fel*_* D. 31

您要查找的信息位于AssemblyInfo.cs中.

要在运行时访问那里写的信息,您可以使用System.Reflection.Assembly.

使用System.Reflection.Assembly.GetExecutingAssembly()来获取组件(这行代码是),或使用System.Reflection.Assembly.GetEntryAssembly()让您的项目开始与组件(最有可能的,这是你的应用程序).

在多项目解决方案中,请记住这一点!

string version = Assembly.GetExecutingAssembly().GetName().Version.ToString()
// returns 1.0.0.0
Run Code Online (Sandbox Code Playgroud)

对应的AssemblyInfo.cs:

AssemblyInfo.cs中

相应的EXE属性:

EXE属性

使用InstallShield时,可能很重要(请参阅注释)!

  • *"我以为InstallShield会管理"* - 这是错误的假设,请参阅[this](http://stackoverflow.com/a/15018932/1997232). (3认同)
  • 如果这样做没有帮助,请尝试使用GetEntryAssembly而不是GetExecutingAssembly。 (2认同)

Nit*_*tin 8

System.Reflection.Assembly executingAssembly = System.Reflection.Assembly.GetExecutingAssembly();
var fieVersionInfo = FileVersionInfo.GetVersionInfo(executingAssembly .Location);
var version = fieVersionInfo.FileVersion;
Run Code Online (Sandbox Code Playgroud)


小智 6

另一种方法与公认的答案基本相同,是:

Version appVersion = Assembly.GetExecutingAssembly().GetName().Version;
versionLabel.Text = "v" + appVersion.Major + "." + appVersion.Minor + "." + appVersion.Build + ".";
Run Code Online (Sandbox Code Playgroud)