使用 .Net 资源字符串合并冲突和不良 UI

Merge Conflicts and Poor UI with .Net Resource Strings

资源字符串很烦人。

  1. 您必须将文本复制到 Notepad++ 才能编辑它们
  2. 滚动浏览大字符串几乎是不可能的
  3. 当您在资源字符串引用上按 F12 时,它会将您带到资源存储的代理,但无法编辑,也看不到长字符串的全文。
  4. 随着越来越多的开发人员填写资源字符串列表,XML 资源文件上发生的合并冲突越来越多。

有没有办法阻止 XML 资源字符串文件中的合并冲突?有没有更好的方法?

是的,有 - 代码。

创建一个单独的静态class,如果它充满SQL,我喜欢后缀"Queries",或者如果它更通用,我喜欢"Resources"。

在C#中,你可以使用@"",这就足够了,但如果你想插值的话,最近的$@""很好。

示例:

public class ApplicationStructureCacheQueries
{
    public static readonly string ChangeOverNew = $@"
    delete from ApplicationStructureCache
    insert into ApplicationStructureCache
    select * from #NewApplicationStructureCache
    ";
}

代码控制非常适合基于行的编码语言(而不是具有多行关联的结构化数据 - XML)。您可以获得编码语言的全部功能来处理您的字符串,包括在需要时进行继承(但使其成为单例对象,而不是静态引用),或者可能是一个插值函数,所以它很好,类型安全且具有内聚性。

You have to copy the text into Notepad++ to edit them

Visual Studio 还为资源文件提供了 XML 编辑器视图。我几乎只在数据表视图上使用它。试一试。

Scrolling through large strings is near impossible

在 XML 视图中可能更容易。

When you press F12 on a resource string reference, it brings you to the proxy to the resource store, but no way to edit, nor can you see the full text of long strings.

我只是使用 ctrl+F 并输入资源 ID。

As more developers fill the list of resource strings, merge conflicts occur more and more on the XML resource files.

如果所有开发人员都确保资源按字母顺序添加或插入到文件中,那么合并问题就会大大减少。我们写了一个脚本来做它并把它放入自动构建中。

此外,考虑将您的资源组织到单独的文件中以用于不同的目的,例如控制标签可以放在一个文件中,大文本部分可以放在不同的文件中。这也将减少争用。