我正在开发桌面应用程序。我已经创建了一个设置。
实施例。我的应用程序。版本是1.0.0。
我想获取当前版本的桌面应用程序1.0.0
。我尝试使用Application.ProductVersion
,但它提供了我的控件版本。 (我使用的是DevExpress Control
15.2.7,因此它将当前版本提供为15.2.7
)。
如何获取已安装应用程序的当前版本?我想将其与已安装的版本进行比较,以便为我的产品提供“新版本可用”功能。
答案 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 :
对应的 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;
}