我试图在c# 3.0中使用以下代码获得执行程序集版本:
var assemblyFullName = Assembly.GetExecutingAssembly().FullName;
var version = assemblyFullName .Split(',')[1].Split('=')[1];
还有其他合适的方式吗?
我试图在c# 3.0中使用以下代码获得执行程序集版本:
var assemblyFullName = Assembly.GetExecutingAssembly().FullName;
var version = assemblyFullName .Split(',')[1].Split('=')[1];
还有其他合适的方式吗?
当前回答
这应该是:
Assembly assem = Assembly.GetExecutingAssembly();
AssemblyName aName = assem.GetName();
return aName.Version.ToString();
其他回答
在MSDN中,汇编。GetExecutingAssembly方法是关于“GetExecutingAssembly”方法的注释,出于性能考虑,只有在设计时不知道当前正在执行什么程序集时才应该调用此方法。
检索表示当前程序集的程序集对象的推荐方法是使用类型。在程序集中找到的类型的程序集属性。
下面的例子说明:
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
当然,这与助手类“公共静态类CoreAssembly”的答案非常相似,但是,如果您至少知道一种执行程序集的类型,就不必强制创建一个助手类,这样可以节省您的时间。
using System.Reflection;
{
string version = Assembly.GetEntryAssembly().GetName().Version.ToString();
}
来自MSDN http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getentryassembly%28v=vs.110%29.aspx:的评论
当托管程序集从非托管应用程序加载时,GetEntryAssembly方法可以返回null。例如,如果非托管应用程序创建了一个用c#编写的COM组件实例,则从c#组件调用GetEntryAssembly方法将返回null,因为该流程的入口点是非托管代码,而不是托管程序集。
如果您通过GitVersion或其他版本控制软件使用版本控制,则产品版本可能是首选。
你可以调用System.Diagnostics.FileVersionInfo.ProductVersion:
using System.Diagnostics;
using System.Reflection;
//...
var assemblyLocation = Assembly.GetExecutingAssembly().Location;
var productVersion = FileVersionInfo.GetVersionInfo(assemblyLocation).ProductVersion
我最终确定typeof(MyClass). gettypeinfo (). assembly . getname()。所有其他提出的答案都给出了部分解决方案。这是唯一能让我得到我想要的东西。
来自多个地方的组合:
https://msdn.microsoft.com/en-us/library/x4cw969y (v = vs.110) . aspx
https://msdn.microsoft.com/en-us/library/2exyydhb (v = vs.110) . aspx
这应该是:
Assembly assem = Assembly.GetExecutingAssembly();
AssemblyName aName = assem.GetName();
return aName.Version.ToString();