如何在 vb.net 中的项目之间共享 .resx 文件?

How to share .resx files between projects in vb.net?

目前,我们有许多 .NET Framework 4.7.1 VB 项目(每个项目都有自己的解决方案)具有相同的全球语言翻译资源:

project1.vbproj
    App_GlobalResources
        module1.resx
        module1.en.resx
        module1.de.resx
        module2.resx
        module2.en.resx
        module2.de.resx
        …
        modulen.resx
        modulen.en.resx
        modulen.de.resx
project2.vbproj
    App_GlobalResources
        module1.resx
        module1.en.resx
        module1.de.resx
        module2.resx
        module2.en.resx
        module2.de.resx
        …
        modulen.resx
        modulen.en.resx
        modulen.de.resx
…
projectm.vbproj
    App_GlobalResources
        module1.resx
        module1.en.resx
        module1.de.resx
        module2.resx
        module2.en.resx
        module2.de.resx
        …
        modulen.resx
        modulen.en.resx
        modulen.de.resx

然后我们使用通常的符号访问资源,例如,在 .ascx 文件中:

<%=Resources.module1.text1%>

是否可以消除文件重复?例如,将 module1.resx 放入共享项目,然后让所有项目引用该共享项目?

无需重新编译即可修改.resx文件,我们只是想简化源代码控制。

我们希望保持当前 .resx 个文件不变。

如果有必要,我们可以将对资源 (Resources.module1.text1) 的引用修改为其他内容,并且更改很简单。

是的,这当然有可能。您可以按照以下步骤操作:

  1. 创建一个名为 CommonResources 的新 class-library 项目。
  2. 将所有资源文件(包括本地化的)添加到其中。
  3. 确保将每个资源文件的访问修饰符设置为 Public

  4. 构建项目。

  5. 在您的每个主项目中,添加对 CommonResources 项目 (CommonResources.dll) 主程序集的引用。

  6. 要访问资源,只需使用如下内容:

    CommonResources.Module1.Foo
    CommonResources.Module2.Bar
    

查看实际效果: