c# – 为MVC生成Resx文件
我们使用resx文件进行全球化,以及我们的CS工作人员可以配置的事物的数据库查找(例如选项卡名称,可能因产品而异),因此在设计时不知道.
我创建了一个自定义工具,它读取resx文件并智能地将键/值对转储到关系数据库中(匹配值,因此我们没有重复项). 这对我们的业务有很大的帮助 – 我们不必发送每个resx进行翻译(并支付共享单词的重复翻译),我们的所有翻译都有一个’黄金标准'(在数据库中). 我创建的工具还读取数据库,获取键/值对和每个值的翻译,并为每个resx文件(以及每种语言的文本文件的翻译)创建文本文件并自动运行resgen.exe,一个命令Visual Studio附带的-line工具,用于从生成的文本文件中编译resx文件. 我没有任何源代码控制集成,所以我们必须手动检查resx文件并在使用该工具时手动签入生成的文件,但这不是一个大问题. 我的问题是这个方法对我们的新MVC项目失败了:MVC项目要求resx文件是嵌入式资源,其访问修饰符为“public”. 因此,我们一直在手工解决这个问题,这引入了人为错误的可能性,并增加了一些非常重要的工作量. 有没有办法让resgen.exe创建嵌入和公共的资源文件?如果没有,还有另一种方法可以创建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 – Resource File Generator @ msdn
其次,我认为你不能让resgen默认使资源文件嵌入资源,只是因为它不是资源的属性,而是项目的设置. 例如:当您使用向导添加新资源“Resource1”时,新项目组将添加到项目文件中: <ItemGroup> <EmbeddedResource Include="Resource1.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>Resource1.Designer.cs</LastGenOutput> </EmbeddedResource> </ItemGroup> 也许有编程修改项目文件的库,但不是我所知道的. 我要做的只是尝试自己序列化和反序列化项目文件,并为您生成的每个资源添加该部分. 编辑: 它还将添加一个不同的项目组: <ItemGroup> <Compile Include="Resource1.Designer.cs"> <AutoGen>True</AutoGen> <DependentUpon>Resource1.resx</DependentUpon> <DesignTime>True</DesignTime> </Compile> </ItemGroup> 因此,除非您有一个好的第三方程序来序列化,编辑,反序列化项目文件.让向导做它可能更好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |