Как обмениваться файлами .resx между проектами в vb.net? - PullRequest
0 голосов
/ 08 октября 2019

В настоящее время у нас есть несколько проектов .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 Ответ

3 голосов
/ 08 октября 2019

Да, это конечно возможно. Вы можете выполнить следующие шаги:

  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

...