我怎样才能得到正在执行的程序集版本?
我正在尝试使用下面的代码在C#3.0中获得正在执行的程序集版本:
var assemblyFullName = Assembly.GetExecutingAssembly().FullName; var version = assemblyFullName .Split(',')[1].Split('=')[1];
还有另外一个适当的方法吗?
两个选项…不pipe你总是可以调用的应用程序types:
Assembly.GetExecutingAssembly().GetName().Version
如果是Windows Forms应用程序,则可以随时通过应用程序访问,如果专门查找产品版本的话。
Application.ProductVersion
使用GetExecutingAssembly
作为程序集引用并不总是一个选项。 因此,我个人发现在需要引用底层程序集或程序集版本的项目中创build静态帮助程序类非常有用:
// A sample assembly reference class that would exist in the `Core` project. public static class CoreAssembly { public static readonly Assembly Reference = typeof(CoreAssembly).Assembly; public static readonly Version Version = Reference.GetName().Version; }
然后我可以根据需要在代码中干净地引用CoreAssembly.Version
。
在MSDN中, Assembly.GetExecutingAssembly方法是关于方法“getexecutingassembly”的注释,出于性能原因,只有在devise时不知道当前正在执行的程序集的情况下,才应该调用此方法。
检索表示当前程序集的Assembly对象的build议方法是使用程序Type.Assembly
find的types的Type.Assembly
属性。
以下示例说明:
using System; using System.Reflection; public class Example { public static void Main() { Console.WriteLine("The version of the currently executing assembly is: {0}", typeof(Example).Assembly.GetName().Version); } } /* This example produces output similar to the following: The version of the currently executing assembly is: 1.1.0.0
当然这与helper类“public static class CoreAssembly”的答案非常相似,但是,如果您知道至less有一种types的正在执行的程序集,那么创build辅助类并不是强制性的,它会节省您的时间。
using System.Reflection; { string version = Assembly.GetEntryAssembly().GetName().Version.ToString(); }
从非托pipe应用程序加载托pipe程序集时, GetEntryAssembly
方法可以返回null
。 例如,如果非托pipe应用程序创build用C#编写的COM组件的实例,则从C#组件调用GetEntryAssembly
方法将返回null
,因为进程的入口点GetEntryAssembly
托pipe代码而不是托pipe程序集。
这应该做的:
Assembly assem = Assembly.GetExecutingAssembly(); AssemblyName aName = assem.GetName(); return aName.Version.ToString();
我终于落户于typeof(MyClass).GetTypeInfo().Assembly.GetName().Version
netstandard1.6 typeof(MyClass).GetTypeInfo().Assembly.GetName().Version
的应用程序。 所有其他提出的答案都是部分解决scheme。 这是我唯一需要的东西。
源自一个组合的地方:
https://msdn.microsoft.com/en-us/library/x4cw969y(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx