我一直在使用此代码来获取我的程序版本:
public string progVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
Run Code Online (Sandbox Code Playgroud)
但是,它似乎并不总是能获得我期望的版本。我真的不明白这完全是如何工作的或它在做什么。
我认为这是传授,因为我从另一个程序启动我的程序,然后它似乎抓取了启动它的程序的版本,或者我假设的“GetExecutingAssembly()”引用了执行我的程序的程序,例如所以:
System.Diagnostics.Process.Start(my_programs_path);
Run Code Online (Sandbox Code Playgroud)
在我要求的时候,有没有更可靠的方法来获取实际程序的程序版本?
甚至可能在不留下任何痕迹的情况下启动我的程序,就好像用户自己刚刚启动了它一样。
谢谢你的帮助!
GetExecutingAssembly()返回包含该方法的程序集 tha? 称它。如果您从库中调用它,您将始终获得库的版本,而不是应用程序的可执行文件。
获取应用程序的可执行文件使用 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
}
}
Run Code Online (Sandbox Code Playgroud)
在装配 B 中:
class Program
{
void Main()
{
var ver = new VersionTest();
ver.Test();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |