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

时间:2019-10-08 06:05:47

标签: .net vb.net localization .net-4.7.1

当前,我们有许多.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 个答案:

答案 0 :(得分:3)

是的,那肯定是可能的。您可以按照以下步骤操作:

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

    CommonResources project demo

  4. 构建项目。

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

    Adding a reference

  6. 要访问资源,只需使用类似的内容:

    CommonResources.Module1.Foo
    CommonResources.Module2.Bar
    

查看实际效果:

Using shared resources