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

时间:2016-04-01 08:47:23

标签: c# windows version

我正在开发桌面应用程序。我已经创建了一个设置。

  

实施例。我的应用程序。版本是1.0.0。

我想获取当前版本的桌面应用程序1.0.0。我尝试使用Application.ProductVersion,但它提供了我的控件版本。 (我使用的是DevExpress Control 15.2.7,因此它将当前版本提供为15.2.7)。

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

3 个答案:

答案 0 :(得分:22)

您要查找的信息位于 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

对应的 AssemblyInfo.cs

AssemblyInfo.cs

对应的 EXE-properties

EXE properties

使用InstallShield时,

This可能很重要(请参阅评论)!

答案 1 :(得分:2)

System.Reflection.Assembly executingAssembly = System.Reflection.Assembly.GetExecutingAssembly();
var fieVersionInfo = FileVersionInfo.GetVersionInfo(executingAssembly .Location);
var version = fieVersionInfo.FileVersion;

答案 2 :(得分:0)

获取特定程序集的版本:

private const string AssemblyName = "MyAssembly"; // Name of your assembly

public Version GetVersion()
{
    // Get all the assemblies currently loaded in the application domain.
    Assembly[] assemblies = Thread.GetDomain().GetAssemblies();

    for (int i = 0; i < assemblies.Length; i++)
    {
        if (string.Compare(assemblies[i].GetName().Name, AssemblyName) == 0)
        {
            return assemblies[i].GetName().Version;
        }
    }

    return Assembly.GetExecutingAssembly().GetName().Version; // return current version assembly or return null;
}