有人可以解释如何正确制作装配信息吗?
这是我的AssemblyInfo.cs:
[assembly: AssemblyTitle("Title")]
[assembly: AssemblyDescription("Description")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Mycompany")]
[assembly: AssemblyProduct("ProductName")]
[assembly: AssemblyCopyright("Copyright ©")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(true)]
[assembly: Guid("xxxxxx-xxxxx-xxxxx")]
[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0")]
[assembly: NeutralResourcesLanguageAttribute("en")]
这就是它在属性窗口中的显示方式:
您可以看到描述和语言与AssemblyInfo.cs中的不同。
AssemblyCompany也有问题,因为当我在ccleaner中打开启动密钥时,我的程序的公司字段为空...
我做错了什么?
答案 0 :(得分:6)
Windows不知道有关托管程序集属性的bean。您实际看到的是嵌入在程序集中的非托管资源。 C#编译器从AssemblyInfo.cs文件中的属性值自动生成它。您可以使用File + Open + File自己查看,选择.dll或.exe文件。双击Version.1资源将打开非托管资源编辑器,即您在C ++项目中使用的编辑器。
从托管属性到非托管版本资源的映射不完善。例如,请注意您无法看到[AssemblyVersion]属性值。在.NET中非常重要,Windows只显示[AssemblyFileVersion]属性值。
文化肯定是阻抗不匹配。包含代码的.NET程序集始终将AssemblyName.CultureName设置为“*”。只有附属组件才有文化。而标题与描述,非托管版本资源只有一个符合条件的字段,他们选择[AssemblyTitle]映射到该字段。
您可以使用资源脚本创建自己的非托管版本资源,使用rc.exe进行编译。您可以使用Project + Properties,Application选项卡,Resource file单选按钮告诉C#编译器。您不太可能喜欢它,不断更新和重新编译资源脚本以保持版本号同步将快速磨损您,除非您可以自动化。