gpt4 book ai didi

c#如何获取当前可执行文件.exe的版本

转载 作者:太空狗 更新时间:2023-10-30 01:15:15 25 4
gpt4 key购买 nike

我一直在使用这段代码来获取我的程序版本:

public string progVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

但是,它似乎并不总能获得我期望的版本。我真的不明白这完全是如何工作的或者它在做什么。

我认为这是传递,因为我从另一个程序启动我的程序,然后它似乎获取了启动它的程序的版本,或者我假设引用了执行我的程序的“GetExecutingAssembly()”程序,像这样:

System.Diagnostics.Process.Start(my_programs_path);

有没有更可靠的方法来获取我要求时实际程序的程序版本?

甚至可以在不留下任何痕迹的情况下启动我的程序,就好像用户自己刚刚启动了它一样。

感谢您的帮助!

最佳答案

GetExecutingAssembly() 返回包含调用它的方法的程序集。如果您从库中调用它,您将始终获得库的版本,而不是应用程序可执行文件。

要获取应用程序的可执行文件,请使用 GetEntryAssembly()

考虑以下示例:

在程序集 A 中:

class VersionTest
{
void Test()
{
Console.Write("Executing assembly: {0}\n", Assembly.GetExecutingAssembly().GetName().ToString()); // returns AssemblyA
Console.Write("Entry assembly: {0}\n", Assembly.GetEntryAssembly().GetName().ToString()); // returns AssemblyB
}
}

在程序集 B 中:

class Program
{
void Main()
{
var ver = new VersionTest();
ver.Test();
}
}

关于c#如何获取当前可执行文件.exe的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com