如何获取程序集文件版本

时间:2009-05-26 08:19:04

标签: c# .net assemblies version

AssemblyInfo中有两个汇编版本:

  1. AssemblyVersion:指定要归因的程序集的版本。
  2. AssemblyFileVersion:指示编译器使用Win32文件版本资源的特定版本号。 Win32文件版本不需要与程序集的版本号相同。
  3. 我可以使用以下代码行获取Assembly Version

    Version version = Assembly.GetEntryAssembly().GetName().Version;
    

    但我怎样才能获得Assembly File Version

6 个答案:

答案 0 :(得分:794)

请参阅上面的评论,要求澄清您真正想要的内容。希望就是这样:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;

答案 1 :(得分:177)

three versions汇编文件产品。它们由不同的功能使用,如果您没有明确指定它们,则采用不同的默认值。

string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
string assemblyVersion = Assembly.LoadFile('your assembly file').GetName().Version.ToString(); 
string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; 
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;

答案 2 :(得分:59)

当我想访问应用程序文件版本(程序集信息中设置的内容 - >文件版本)时,比如在表单加载时设置标签的文本以显示版本,我刚刚使用过

versionlabel.Text = "Version " + Application.ProductVersion;

答案 3 :(得分:20)

更新:正如Richard Grimes在my cited post,@ Iain和@Dmitry Lobanov所提到的,我的答案在理论上是正确的,但在实践中却是错误的。

正如我应该记得的无数书籍等,当使用[assembly: XXXAttribute]设置这些属性时,它们会被编译器劫持并放入VERSIONINFO资源。

由于上述原因,您需要使用@Xiaofu's answer中的方法,因为在从中提取信号后剥离属性。


public static string GetProductVersion()
{
  var attribute = (AssemblyVersionAttribute)Assembly
    .GetExecutingAssembly()
    .GetCustomAttributes( typeof(AssemblyVersionAttribute), true )
    .Single();
   return attribute.InformationalVersion;
}

(来自http://bytes.com/groups/net/420417-assemblyversionattribute - 如上所述,如果您正在寻找不同的属性,请将其替换为上述内容)

答案 4 :(得分:3)

使用此:

((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
    Assembly.GetExecutingAssembly(), 
    typeof(AssemblyFileVersionAttribute), false)
).Version;

或者这个:

new Version(System.Windows.Forms.Application.ProductVersion);

答案 5 :(得分:-5)

您可以使用My.Application.Info.Version

获取装配版本