如何对 . .NET 中的 resx(资源文件)

Posted

技术标签:

【中文标题】如何对 . .NET 中的 resx(资源文件)【英文标题】:How to sort a . resx (resource file) in .NET 【发布时间】:2011-04-28 13:56:57 【问题描述】:

我的项目中的资源文件有问题。当我用英语创建了一个时,我把它交给了翻译团队。不知何故,他们返回给我的资源文件具有不同顺序的值,所以它没有按字母顺序排序。

所以,一开始是这样的:

<data name="a1" xml:space="preserve">
   <value>some text2</value>
</data>
<data name="b1" xml:space="preserve">
   <value>some text3</value>
</data>
<data name="c1" xml:space="preserve">
   <value>some text1</value>
</data>

我收到了:

<data name="c1" xml:space="preserve">
   <value>some text1</value>
</data>
<data name="a1" xml:space="preserve">
   <value>some text2</value>
</data>
<data name="b1" xml:space="preserve">
   <value>some text3</value>
</data>

那么,有没有办法通过&lt;data name 属性对.resx 文件中的这些元素进行排序?

【问题讨论】:

【参考方案1】:

SortRESX 是 Tom Clement 在 CodeProject 上创建的简单可执行文件。

它按字母顺序对 *.resx 文件进行排序。我描述了它on my blog。

【讨论】:

我可以让 Visual Studio(或 git)在合并之前自动执行 SortRESX 程序吗?怎么样?【参考方案2】:

您可以使用 LINQ to XML 编写一个快速脚本来执行此操作:

var root = XElement.Load(...);
var sortedRoot = new XElement(root.Name, root.Attributes,
        root.Elements().OrderBy(e => e.Attribute("name").Value)
);

【讨论】:

【参考方案3】:

我写了一个 very simple VS extension 来对 resx 文件进行排序。 右键单击任何 .resx 文件,然后单击“排序 Resx”。

【讨论】:

看来你已经过时了,插件不会安装在vs 2015上 我 fork 你的项目,重新编译,然后安装,但是资源文件上没有按钮,我还在source.extension.vsixmanifest 中添加了所有类型的 VS 到 Install Target,但它也没有带来任何新的上下文菜单。 :| 感谢您的反馈。它已经过时了——我推荐使用Resx Manager——他们最近增加了排序功能。 谢谢。安装 Resx Manager 后,您的排序图标也出现了。 如果它只与 VS 2015 兼容就会使用它

以上是关于如何对 . .NET 中的 resx(资源文件)的主要内容,如果未能解决你的问题,请参考以下文章

防止资源 [.resx] 文件预编译。 .NET 核心 2.0

大型项目中的资源 (resx) 维护

.net 核心中的 MissingManifestResourceException

在 .NET Core 1.0 中使用 resx 资源

循环遍历 .resx 文件中的所有资源

从 XAML 中的 *.resx 文件中获取值