Как использовать файл общего ресурса между проектами в одном решении?
У меня проблема с файлами ресурсов.
У меня есть решение с двумя проектами. Первый проект содержит ImageResource.resx
файл с изображениями, которые я использую. каждый Form
В этом проекте можно получить доступ к этому файлу от дизайнера. Но я вижу в конструкторе ImageResource.resx
файл для использования из второго проекта (ссылка на второй проект присутствует).
Я добавил ImageResource.resx
файл как ссылка на мой второй проект. И я видел это в конструкторе! Но когда я использую изображение из этого ресурса во втором проекте, Visual Studio изменил мой исходный файл (он устанавливает пространства имен и другие...), и мое решение обрывается. Также Visual Studio говорит мне, что ImageResource.resx
присутствует в двух DLL first_project.dll
а также second_project.dll
Кто-нибудь может мне помочь Как правильно использовать общие ресурсы между проектами?
5 ответов
- Правильный способ совместного использования ресурсов - создать глобальный общий проект. Создайте новый проект с именем Resources:
- Затем мы должны добавить некоторые ресурсы (например, значки) в проект. Делай это как обычно. Перейдите в настройки проекта, выберите вкладку " Ресурсы" и " Добавить существующий файл…" в проект. Мы видим, что значок добавлен в проект и скопирован в локальную папку:
Следующий шаг состоит в добавлении этого значка в другой проект (ы). Обратите внимание на важное отличие, вам нужно добавить этот значок в виде ссылки!
Добавление в качестве ссылки позволяет избежать дублирования ресурсов. Создайте новый проект в том же решении и назовите его, например, Main. Создайте некоторую папку в этом новом проекте, назвав ее " Ресурсы" (логическое название для нашей цели). Затем щелкните правой кнопкой мыши эту папку, выберите " Добавить существующий элемент" и выберите файл изображения из общей папки проекта. Обязательно используйте Добавить как ссылку здесь! Если все сделано правильно, иконка вновь добавленного файла будет выглядеть немного иначе (см. Ниже):
Значок добавленного ресурса должен выглядеть следующим образом
- Теперь мы должны установить действие сборки для этого файла None. Для этого выберите файл и перейдите в окно свойств. Там выберите None для Build Action. Нам нужно сделать это, чтобы избежать встраивания этого значка в сборку:
- Наконец, нам нужно добавить связанные файлы в ресурсы соответствующего проекта. Откройте Свойства проекта для проекта, в который мы только что добавили файлы. Выберите вкладку Resource и перетащите туда связанный файл:
Это пять простых шагов, которые вы должны выполнить, чтобы поделиться значками между проектами. Вы можете спросить: "Каковы преимущества этого?" Преимущества:
- Мы храним ресурсы в одном месте, и
- Значок легко заменить на новый.
Это не сработало для меня, и я нашел другой (VS2015+) подход. См. /questions/28285907/problema-s-obschimi-resursami-winforms-mezhdu-proektami-v-visual-studio/28285911#28285911
Короче говоря, общий проект напрямую включен в периферийный проект. Таким образом, хотя IDE не поддерживает <Resource>
элементы в общем проекте. <Resource>
элементы могут быть добавлены в общий проект с помощью текстового редактора. Затем они включаются в периферийный проект во время сборки.
(Извиняюсь за гиперссылку. Я бы просто опубликовал ответ для ясности, но редакторы stackru решают эту проблему, удаляя дубликаты ответов, чтобы спасти вас от???.)
Если файл ресурса действительно используется несколькими проектами, вы должны поместить его в общий проект.
Solution 'Sample'
Project Sample.Data
Project Sample.Business
Project Sample.UI
Project Sample.Resource //shared resources are put in a shared project
Можете ли вы использовать символическую ссылку, чтобы поделиться файлом в нескольких папках?
окна:
mklink linked_location\ImageResource.resx original_location\ImageResource.resx
C:\Users\preet>mklink
Creates a symbolic link.
MKLINK [[/D] | [/H] | [/J]] Link Target
/D Creates a directory symbolic link. Default is a file
symbolic link.
/H Creates a hard link instead of a symbolic link.
/J Creates a Directory Junction.
Link specifies the new symbolic link name.
Target specifies the path (relative or absolute) that the new link
refers to.
Вы не можете видеть ресурс, если он не является общедоступным, и для него по умолчанию установлено значение "Друг". Вы можете установить "Модификатор доступа" в Visual Designer (верхний правый угол).