- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
鉴于 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/
有了FileVersionInfo类就很容易读取文件的额外信息,但是我有什么办法可以改变它吗? 谢谢。 最佳答案 .NET Framework 中没有可让您轻松完成此操作的类。文件版本数据存储为 na
我有一些经过合理尝试和测试的代码,它们使用 Windows API 调用来读取 FileVersionInfo 字符串,例如“FileVersion”和“CompanyName”。 我发现一个特定的第
我正在尝试使用 C# 和 System.Diagnostics.FileVersionInfo从文件列表中提取版本信息。我这样做的目的是跟踪唯一的文件路径和版本组合。当文件发生变化时,我希望根据具体发
为什么 System.Diagnostics.FileVersionInfo.GetVersionInfo() 返回意外的文件版本信息?我正在查找有关 MPIO 驱动程序的版本信息。目标操作系统是 S
为什么当加载 .NET DLL、从另一个应用程序域替换(DLL 更新为新版本),然后重新加载(使用 Assembly.LoadFrom)版本信息仍然反射(reflect)旧版本? assembly.G
鉴于 Blah.dll 的 AssemblyInfo.cs 中的这段代码: [assembly: AssemblyVersion("3.3.3.3")] [assembly: AssemblyFile
我有一个在 c# 中执行的程序,有时会在运行时通过将 exe 交换为新程序来更新。我希望程序定期检查它是否已更新,如果是,则重新启动。我使用以下函数来执行此操作。 public static
我在使用 FileVersionInfo.GetVersionInfo() 时遇到了一些严重的问题,希望有人能提供帮助。 问题的基本原理是我正在遍历一个文件夹中的所有文件,每个文件都调用 GetVer
在 Silverlight 3.0 应用程序中,我想使用 AssemblyFileVersion显示应用程序的版本信息。这与 AssemblyVersion 不一样并且通常使用以下代码在 .NET 应
我在 Windows 中有一个 SFX(自解压可执行文件)文件(使用 7z、WinRar 等 zip 工具创建,...),其中包含以下详细信息: 我想在C#中获取CopyRight文本,所以我写了下面
我可以通过 C# 中的命名空间 FileVersionInfo 获取文件版本信息。在 FileVersionInfo 中,如果文件版本为空,则我们无法获取其他信息,如产品版本、公司名称等。当我们右键单
在 MSDN Diagnostics.FileVersionInfo它说,例如,ProductMinorPart返回一个整数或 null如果该值未定义。但是它不是 Nullable - 它如何返回空值
我是一名优秀的程序员,十分优秀!