为MVC生成Resx文件
我们使用resx文件进行全球化,以及我们的CS工作人员可以配置的事物的数据库查找(例如选项卡名称,可能因产品而异),因此在设计时不知道。
我创建了一个自定义工具,它读取resx文件并智能地将键/值对转储到关系数据库中(匹配值,因此我们没有重复项)。
这对我们的业务有很大帮助 – 我们不必发送每个resx进行翻译(并支付共享单词的重复翻译),我们的所有翻译都有一个’黄金标准’(在数据库中)。
我创建的工具还读取数据库,获取键/值对和每个值的翻译,并为每个resx文件(以及每种语言的文本文件的翻译)创建文本文件并自动运行resgen.exe,一个命令Visual Studio附带的-line工具,用于从生成的文本文件中编译resx文件。
我没有任何源代码控制集成,因此我们必须手动签出resx文件并在使用该工具时手动签入生成的文件,但这不是一个大问题。
我的问题是这个方法对我们的新MVC项目失败了:MVC项目要求resx文件是嵌入式资源,其访问修饰符为“public”。
因此,我们一直在手工解决这个问题,这引入了人为错误的可能性并增加了一些非常重要的工作量。
有没有办法让resgen.exe创建嵌入和公共的资源文件? 如果没有,是否有另一种方法可以创建resx文件?
更新,附加问题:我们使用此方法生成的resx文件也会发出警告:
A custom tool 'PublicResXFileCodeGenerator' is associated with file '(resxname)', but the output of the custom tool was not found in the project. You may try re-running the custom tool by right-clicking on the file in the Solution Explorer and choosing Run Custom Tool.
提到的工具是我们最初用于创建resx文件的工具。 有没有办法阻止这个警告?
首先,您可以使用/publicClass
命令行选项将资源生成为公共资源。 另请参阅: Resgen.exe – 资源文件生成器@msdn
其次,我认为你不能让resgen默认使资源文件嵌入资源,只是因为它不是资源的属性,而是项目的设置。
例如:当您使用向导添加新资源“Resource1”时,新项目组将添加到项目文件中:
ResXFileCodeGenerator Resource1.Designer.cs
也许有编程修改项目文件的库,但不是我所知道的。
我要做的只是尝试自己序列化和反序列化项目文件,并为您生成的每个资源添加该部分。
编辑:
它还将添加一个不同的项目组:
True Resource1.resx True
因此,除非您有一个好的第三方程序来序列化,编辑,反序列化项目文件。 让向导做它可能更好。
我之前一直在努力,但资源运作良好。 这可能有所帮助,虽然我不确定。 它总是值得回顾基础知识,因为有时它非常简单,.NET资源可能是不灵活的。
我将解释我对资源的使用,希望你可以将它应用到你的场景中(我无法根据你的问题弄清楚他们确切的问题是什么。)
设置资源的步骤1.将ASP.NET文件夹添加到Web解决方案中右键单击解决方案选择添加>添加ASP.NET文件夹> App_GlobalResources
-
将资源文件添加到该文件夹,称为MyResourceFile.resx
-
打开文件属性并选择
-
然后为不同的语言添加不同的资源文件等(为所有资源文件指定相同的属性等构建操作和自定义工具)
这应该自动生成您可以通过调用访问的资源管理器
MyResourceFile.MyResourceText
值得注意的是,如果您没有安装文化或其定义不正确,它将无法工作,您会遇到各种错误。
Etc MyResourceFile.en-JP.resx不起作用(除非您创建此自定义文化)并导致各种其他问题。 此文化将从应用程序中的CultureInfo进行映射,以确定要使用的资源文件,因此它必须是有效的CultureInfo。
我们最终找到了解决这个问题的方法。
对于MVC项目,我们更改了工具以使用ResXResourceWriter类来更新resx文件,匹配现有密钥并根据需要添加新密钥。
这样可以保留“嵌入式资源”状态以及所需的所有其他详细信息。
我们仍然必须在第一次创建时正确设置文件,但这是一个更容易管理的问题。
上述就是C#学习教程:为MVC生成Resx文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005213.html