[英]C# AssemblyFileVersion usage within a program
I'm working on a program, and I'm trying to display the assembly FILE version 我正在研究一个程序,我正在尝试显示程序集FILE版本
public static string Version
{
get
{
Assembly asm = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location);
return String.Format("{0}.{1}", fvi.FileMajorPart, fvi.FileMinorPart);
}
}
At the moment, this only returns the first two version numbers in the "AssemblyVersion", not "AssemblyFileVersion." 目前,这只返回“AssemblyVersion”中的前两个版本号,而不是“AssemblyFileVersion”。 I'd really like to just reference the AssemblyFileVersion rather than store an internal variable called "Version" that I have to update both this and the assembly version... 我真的很想引用AssemblyFileVersion,而不是存储一个名为“Version”的内部变量,我必须更新它和程序集版本......
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("3.5.0")]
That's my AssemblyFileVersion from AssemblyInfo.cs. 那是AssemblyInfo.cs中的AssemblyFileVersion。 I'd like to just reference the "3.5.x" part, not the "1.0.*" :/ 我想引用“3.5.x”部分,而不是“1.0。*”:/
Thanks, Zack 谢谢,扎克
Use ProductMajorPart/ProductMinorPart instead of FileMajorPart/FileMinorPart : 使用ProductMajorPart / ProductMinorPart而不是FileMajorPart / FileMinorPart:
public static string Version
{
get
{
Assembly asm = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location);
return String.Format("{0}.{1}", fvi.ProductMajorPart, fvi.ProductMinorPart);
}
}
using System.Reflection;
using System.IO;
FileVersionInfo fv = System.Diagnostics.FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
Console.WriteLine("AssemblyVersion : {0}", Assembly.GetExecutingAssembly().GetName().Version.ToString());
Console.WriteLine ("AssemblyFileVersion : {0}" , fv.FileVersion.ToString ());
var fileVersion = GetCustomAttributeValue<AssemblyFileVersionAttribute>(assembly, "Version");
private static string GetCustomAttributeValue<T>(Assembly assembly, string propertyName)
where T : Attribute
{
if (assembly == null || string.IsNullOrEmpty(propertyName)) return string.Empty;
object[] attributes = assembly.GetCustomAttributes(typeof(T), false);
if (attributes.Length == 0) return string.Empty;
var attribute = attributes[0] as T;
if (attribute == null) return string.Empty;
var propertyInfo = attribute.GetType().GetProperty(propertyName);
if (propertyInfo == null) return string.Empty;
var value = propertyInfo.GetValue(attribute, null);
return value.ToString();
}
To get the version of the currently executing assembly you can use: 要获取当前正在执行的程序集的版本,您可以使用:
using System.Reflection;
Version version = Assembly.GetExecutingAssembly().GetName().Version;
The Assembly class can also load files and access all the assemblies loaded in a process. Assembly类还可以加载文件并访问进程中加载的所有程序集。
我想你将不得不使用FileVersionInfo类。
System.Diagnostics.FileVersionInfo.GetVersionInfo(FullpathToAssembly)
protected void Application_Start(object sender, EventArgs e)
{
_log.InfoFormat("*************{0} **** Version: {1}************ ", Assembly.GetExecutingAssembly().GetName().Name, Assembly.GetExecutingAssembly().GetName().Version);
}
Output 产量
INFO Global - *************CustomerFile **** Version: 1.0.17.2510************ INFO Global - ************* CustomerFile ****版本:1.0.17.2510 ************
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.