文件详细信息选项卡中的“语言中性”属性

时间:2012-08-29 08:00:09

标签: c# dll localization assemblies

如何更改用C#编写的DLL的语言属性?

我尝试进入Project Properties -> Assembly Information -> Neutral Language ComboBox并将其设置为English (United States)

在构建/重建项目/解决方案后,当我右键单击DLL并转到“详细信息”选项卡时,语言属性始终显示为Language Neutral.

修改 我找到的解决方案是使用外部* .res文件(只是由Visual Studio生成),然后在对话框Project Propertie->Application Tab-> Resource File中选择它

2 个答案:

答案 0 :(得分:4)

此属性在AssemblyInfo.cs文件中设置[AssemblyCulture]属性。 MSDN库文章在备注部分中有这个重要的注释:

  

编译器使用该属性来区分主程序集和附属程序集。主程序集包含代码和中性文化的资源。附属程序集仅包含特定文化的资源,如[assembly:AssemblyCultureAttribute(“de”)]。将此属性放在程序集上并使用除空字符串(“”)之外的其他内容作为区域性名称将使此程序集看起来像附属程序集,而不是包含可执行代码的主程序集。使用此属性标记传统代码库会破坏它,因为没有其他代码能够在运行时找到库的入口点。

另一个重要的限制是GAC可以通过程序集名称,版本,体系结构和公钥令牌来区分程序集,但不能通过文化来区分。卫星组件必须始终存储在本地。

长话短说,从不在包含代码的项目中选择除中性之外的任何东西。几乎总是从项目中的资源自动生成附属程序集,并自动获得正确的[AssemblyCulture]属性。

答案 1 :(得分:1)

(将此答案添加为the answer by @Hans Passant的补充。)

在您的装配信息(通过项目属性访问)中,当您将中性语言更改为“英语(美国)”时,会将此行添加到AssemblyInfo.cs

[assembly: NeutralResourcesLanguageAttribute("en-US")]

但是,请注意AssemblyInfo.cs中的以下行保持不变:

[assembly: AssemblyCulture("")]

由此可见,中性语言设置与装配文化设置截然不同。

如果要本地化您的应用程序,则应将NeutralResourcesLanguageAttribute设置为您在中性资源文件中使用的文化。 (有关详情,请参阅this answer。)