3

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

我试图进入Project Properties -> Assembly Information -> Neutral LanguageComboBox 并将其设置为English (United States).

在我构建/重建项目/解决方案后,当我右键单击 DLL 并转到详细信息选项卡时,语言属性总是说Language Neutral.

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

4

2 回答 2

5

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

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

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

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

于 2012-08-29T11:15:42.153 回答
1

(添加此答案作为@Hans Passant 答案的补充。)

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

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

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

[assembly: AssemblyCulture("")]

由此可见,中性语言设置与汇编文化设置不同。

如果您正在本地化您的应用程序,您应该设置NeutralResourcesLanguageAttribute您在中性资源文件中使用的文化。(有关更多信息,请参阅此答案。)

于 2016-12-13T21:20:28.427 回答