Считайте ресурсы из файла DLL

У меня есть два проекта Visual Basic 2008 года - каждый - проект библиотеки классов, и другой - проект Windows Forms. В проекте библиотеки классов я определил некоторые строки в ресурсах проекта (свойства проекта> вкладка Resources).

Я разрабатываю тот проект библиотеки классов и получаю файл DLL от папки отладки и сложенный как ссылка в моем проекте Windows Forms.

Как я читаю те строки из файла DLL, на который ссылаются?

9
задан Peter Mortensen 27 February 2012 в 18:05
поделиться

2 ответа

Я думаю, вы просто используете System.Reflection.Assembly.Load для загрузки другой сборки, а затем используйте конструктор System .Resources.ResourceManager , который принимает сборку.

Обратите внимание, я не думаю, что для этого нужна ссылка.

7
ответ дан 4 December 2019 в 11:04
поделиться

Хотя вы можете динамически загрузить DLL, как предлагает ho, вполне можно использовать ссылку, как это сделали вы. На самом деле я бы рекомендовал использовать ссылку, если только у вас нет особых требований к динамической загрузке сборки ресурсов.

Что касается доступа к ресурсам, есть несколько вещей, которые вам нужно сделать.

  • В сборке ресурсов вам нужно убедиться, что ресурсы являются общедоступными. По умолчанию ресурсы установлены как внутренние, что означает, что вы не увидите ресурсы в приложении winforms. Дважды щелкните на Properties\Resources.resx, чтобы открыть представление ресурсов. На верхней панели инструментов вы увидите надпись "Модификатор доступа" рядом с выпадающим комбинированным окном. Измените выбор на public.

  • Вам нужно будет сослаться на сборку из приложения forms. Вы указали, что уже сделали это. Заметим, что лучший способ сделать это - создать решение, содержащее оба проекта. Затем в приложении "Формы" выберите "Добавить ссылку". Вверху перейдите на вкладку Projects. Дважды щелкните на имени проекта ресурсной DLL. Это лучше, чем ссылаться на отладочную DLL напрямую, так как при переключении между сборкой релиза и сборкой отладки в приложении форм оно автоматически создаст соответствующую версию сборки ресурса для релиза и отладки.

  • После добавления ссылки вы можете просто ссылаться на тип из DLL ресурсов, например,

ResourceDLLNamespace.Properties.Resource.Resource.ResourceName

Просто примечание, вы должны знать о столкновении имен типов, если вы используете одно и то же пространство имен для приложения форм и DLL ресурсов. В такой ситуации ваше приложение форм будет иметь доступ как к собственному классу Properties.Resources, так и к классу ресурсной DLL. Вы можете сделать две вещи, чтобы избежать этого:

  1. Использовать разное пространство имен между двумя сборками
  2. В сборку ресурсов не включайте стандартный словарь ресурсов Properties\Resources.resx. Удалите его и вручную добавьте новый ресурс, т.е. Add New Item и выберите "Resources File". Вы обнаружите, что не сможете добавить новый словарь ресурсов в папку Properties - добавьте его в корневую или другую папку, как вам нужно. Это автоматически даст ему другое имя типа в силу того, что он находится в другой папке. Тем не менее, вы можете избежать использования имени файла ресурсов "Resources", так как если у вас есть все соответствующие пространства имен в области видимости через операторы using, вы получите ту же проблему, что компилятор не будет знать, какую версию Resources использовать.

-Donovan

12
ответ дан 4 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: