gpt4 book ai didi

c# - FileVersionInfo 和 AssemblyInfo

转载 作者:IT王子 更新时间:2023-10-29 04:14:24 31 4
gpt4 key购买 nike

鉴于 Blah.dll 的 AssemblyInfo.cs 中的这段代码:

[assembly: AssemblyVersion("3.3.3.3")]
[assembly: AssemblyFileVersion("2.2.2.2")]

然后在单独的 .exe 中:

var fileInfo = FileVersionInfo.GetVersionInfo("/path/to/Blah.dll");
fileInfo.ProductVersion == fileInfo.FileVersion == true;

其他 SO 问题显示 ProductVersion 是“正确的”,好奇我的使用方式是否有什么奇怪之处。

ProductVersion 不应该是“3.3.3.3”,FileVersion 是“2.2.2.2”吗?什么会导致它将这两个属性报告为 AssemblyFileVersion?

最佳答案

我原来找到了答案here .为了便于引用,我重复了细节。

AssemblyInfo.cs 文件中可以包含三个“版本”:

[assembly: AssemblyVersion("1.1.1.1")]
[assembly: AssemblyInformationalVersion("2.2.2.2")]
[assembly: AssemblyFileVersion("3.3.3.3")]
如果未指定,

AssemblyInformationalVersion 默认为 AssemblyFileVersion。同样,AssemblyInformationalVersion AssemblyFileVersion 如果未指定两者,则默认为 AssemblyVersion

在您的示例中,AssemblyInfo.cs 文件不包含 AssemblyInformationalVersion,因此它默认为 AssemblyFileVersion 的值。正如您将在下面看到的,AssemblyInformationalVersion 映射到 FileVersionInfo.ProductVersion 属性,这解释了测试返回 true 的原因。

显然,这有几个令人沮丧的方面。首先,无法(据我所知)从 Visual Studio 设置 AssemblyInformationalVersion。您必须直接修改 AssemblyInfo.cs 文件以包含此属性。其次,AssemblyInformationalVersion 映射到 FileVersionInfo.ProductVersion 属性,这是不直观的。该属性应更恰本地命名为 AssemblyProductVersion。显然,标题也是描述等。

也就是说,我们如何在代码中检索这些(和相关)值?像这样:

AssemblyFileVersion          => System.Diagnostics.FileVersionInfo.FileVersion
AssemblyInformationalVersion => System.Diagnostics.FileVersionInfo.ProductVersion
AssemblyVersion => System.Reflection.Assembly.Version

/// others...
AssemblyTitle => System.Diagnostics.FileVersionInfo.FileDescription
AssemblyDescription => System.Diagnostics.FileVersionInfo.Comments
AssemblyProduct => System.Diagnostics.FileVersionInfo.ProductName
AssemblyCompany => System.Diagnostics.FileVersionInfo.CompanyName
AssemblyCopyright => System.Diagnostics.FileVersionInfo.LegalCopyright
AssemblyTrademark => System.Diagnostics.FileVersionInfo.LegalTrademarks

AssemblyVersion 的情况下,使用这个:

string ver = Assembly.GetExecutingAssembly().GetName().Version.ToString();

关于c# - FileVersionInfo 和 AssemblyInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466019/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com