gpt4 book ai didi

c# - 本地化 AssemblyInfo.cs

转载 作者:可可西里 更新时间:2023-11-01 08:08:49 24 4
gpt4 key购买 nike

我的 AssemblyInfo 包含有关我的产品、公司等的信息。此数据当前硬编码在 cs 文件中:

[assembly: AssemblyCompany("My Company.")]
[assembly: AssemblyProduct("MyProduct")]
[assembly: AssemblyCopyright("Copyright © 2012 My Company, Inc. All Rights Reserved.")]
[assembly: AssemblyTrademark("MyProduct is a trademark of MyCompany Software.")]
[assembly: AssemblyCulture("")]

我想本地化这些文本,但我无法执行以下操作:

[assembly: AssemblyCompany(Resources.MyConpany)]

有办法解决这个问题吗?

最佳答案

是的,这是可能的。关心语言的人很少阅读属性本身。然而,C# 编译器也使用它们来生成/win32res 编译选项的默认版本。

这会影响您在资源管理器中查看程序集属性时看到的内容,使用“属性”快捷菜单项并查看“详细信息”选项卡。 Windows 在这里显示的不是程序集属性,它对托管程序集一无所知。您看到的是嵌入在程序集中的非托管资源中的数据。

您可以使用 Visual Studio 查看这些非托管资源的外观。使用文件 + 打开 + 文件并导航到示例 EXE 程序集。您将获得嵌入式资源的 TreeView ,一个典型的 .NET 程序应该至少包含三个资源。一个图标,一个使程序 UAC 兼容的 list 。还有你关心的版本资源。打开该节点,您会看到 ID 为 1 的资源,标记为 [Neutral]。中性是资源的“适用于任何语言”的版本。双击它打开编辑器(在 Express 中不起作用),您可以看到程序集属性如何映射到版本资源属性。

您需要做的是为这些非托管资源创建您自己的版本,一个使用多种语言的版本。这需要编写一个 .rc 文件,一个资源脚本,然后由 rc.exe 工具(非托管资源编译器)编译成一个 .res 文件。然后使用项目 + 属性、应用程序选项卡、“资源文件”单选按钮将其告知编译器。

请注意,这有点痛苦且容易出错,rc.exe 是一个易变的工具,您确实失去了 AssemblyInfo.cs 与您在 Windows 中看到的内容之间的直接链接,它是一个维护项目。最好的解决方法是使用虚拟 C++ 项目并使用其内置的资源编辑器将其放在一起。

关于c# - 本地化 AssemblyInfo.cs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13752144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com