首页 文章

如何获取程序集文件版本

提问于
浏览
609

AssemblyInfo 中有两个汇编版本:

  • AssemblyVersion :指定要归属的程序集的版本 .

  • AssemblyFileVersion :指示编译器为Win32文件版本资源使用特定版本号 . Win32文件版本不需要与程序集的版本号相同 .

我可以使用以下代码行获取 Assembly Version

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

但我怎样才能获得 Assembly File Version

6 回答

  • 19

    更新:正如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 - 如前所述,如果您正在寻找不同的属性,请将其替换为上述内容)

  • 57

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

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

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

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

    您可以使用 My.Application.Info.Version 获得汇编版本

  • 742

    用这个:

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

    或这个:

    new Version(System.Windows.Forms.Application.ProductVersion);
    
  • -5

    three versionsassemblyfileproduct . 它们由不同的功能使用,如果您没有明确指定它们,则采用不同的默认值 .

    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;
    

相关问题