Как я могу использовать ресурсы .NET в нескольких исполняемых файлах? - PullRequest
2 голосов
/ 14 мая 2010

У меня есть приложение, которое я должен взять и создать «мини» версию. Оба являются локализованными приложениями, и мы хотели бы повторно использовать ресурсы в основном приложении как есть. Итак, вот основная структура моих приложений:

MainApplication.csproj

/ Свойства / Resources.resx

/ MainUserControl.xaml (использует строки в Properties / Resources.resx)

/ MainUserControl.xaml.cs


MiniApplication.csproj

ссылка на MainApplication / Properties / Resources.resx

ссылка на MainApplication / MainUserControl.xaml

ссылка на MainApplication / MainUserControl.xaml.cs

MiniApplication.xaml (пытается использовать MainUserControl из ссылки MainApplication)

Итак, в итоге, я добавил необходимые ресурсы и пользовательский контроль из основного приложения в виде ссылок в мини-приложение. Однако, когда я запускаю мини-приложение, я получаю следующее исключение. Я предполагаю, что у него проблемы с различными пространствами имен, но как мне исправить?

Не удалось найти ресурсы подходит для указанной культуры или нейтральная культура. Удостовериться \ "MainApplication.Properties.Resources.resources \" был правильно встроен или связан с сборка \ "MiniApplication \" на время компиляции, или что все необходимые спутниковые сборки загружаемый и полностью подписанный.

К вашему сведению, я знаю, что мог бы поместить пользовательский элемент управления в библиотеку пользовательских элементов управления, но проблема в том, что мини-приложение должно иметь небольшую площадь. Итак, мы хотим включить только то, что нам нужно.

Ответы [ 2 ]

2 голосов
/ 14 мая 2010

Вы правы, что проблема заключается в разных пространствах имен. Файл ресурса не может быть задан пространством имен, он будет занимать пространство имен папки, в которой он находится. Если пространства имен в двух ваших приложениях различны, пространство имен будет другим.

Я вижу три доступных вам варианта

  1. Использовать одно и то же пространство имен по умолчанию для обоих приложений
  2. Соберите сборку исключительно для вашего файла ресурсов и укажите ссылку в обоих приложениях
  3. В коде, загружающем ресурс, сгенерируйте пространство имен на основе пространства имен класса, который его загружает
0 голосов
/ 14 мая 2010

Ресурсы, сгенерированные Visual Studio, не являются общедоступными, они видны только классам в библиотеке. чтобы генерировать ресурсы как публичные свойства, вам нужно использовать собственный генератор, подобный этому: http://www.codeproject.com/kb/dotnet/ResXFileCodeGeneratorEx.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...