使用反射在运行时获取程序集信息非常简单:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.Diagnostics.FileVersionInfo fvi = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location);
然而,由于受限制的执行环境,我不能在项目中使用反射。在有限的信任环境中,这段代码将无法运行。
我想在编译时使用
AssemblyInfo.cs
中的一些属性来显示产品名称、版本等,而不需要调用反射机制。最原始的方法是将
AssemblyInfo.cs
文件中的字符串复制到其他地方作为常量字符串。但也许存在更优雅的解决方案吗?当然,关于程序集的一些基本信息只能通过反射在运行时正确解析。比如程序集路径、执行上下文等。但是关于名称和版本的信息写在项目代码中,应该在编译时正常可用。
欢迎提出任何评论和想法。谢谢。
FileVersionInfo.GetVersionInfo
是System.Diagnostics的一部分,不使用反射。你甚至有没有好好读过它?它读取每个DLL和EXE中的FILEVERSION,与.NET、更不用说反射相关的API毫无关系。 - user585968