Подтвердить что ты не робот

Как использовать общий файл ресурсов между проектами в одном решении?

У меня проблема с файлами ресурсов.

У меня есть решение с двумя проектами. Первый проект содержит ImageResource.resx файл с изображениями, которые я использую. Каждый Form в этом проекте может получить доступ к этому файлу от конструктора. Но я могу видеть в файле конструктора ImageResource.resx его использование из второго проекта (ссылка на второй проект присутствует).

Я добавил файл ImageResource.resx в качестве ссылки на мой второй проект. И я видел это в дизайнере! Но когда я использую изображение из этого ресурса во втором проекте, Visual Studio изменила мой исходный файл (он устанавливает пространства имен и т.д.), И мое решение прерывается. Также Visual Studio сообщает мне, что ImageResource.resx присутствует в двух dll first_project.dll и second_project.dll

Может ли кто-нибудь помочь мне с Как правильно использовать общие ресурсы между проектами?

4b9b3361

Ответ 1

1. Правильный способ совместного использования ресурсов - создать глобальный общий проект. Создать новый проект с именем Ресурсы; Solution Explorer, showing an example solution, which contains a project named Resources

2. Далее мы должны добавить в проект некоторые ресурсы (например, некоторые значки). Сделайте это как обычно. Перейдите к настройкам проектов. Выберите вкладку "Ресурсы" и "Добавить существующий файл..." в проект. Мы видим, что значок добавлен в проект и скопирован в локальную папку.
For example, the Resources project's Resources tab shows a picture of a puppy, and the Solution Explorer shows that the Resources project's Resources folder includes the picture of the puppy

3. Следующий шаг состоит в добавлении этого значка в другой проект. Но важно одно! Вы должны добавить этот значок в качестве ссылки. Добавление в виде ссылки позволяет избежать дублирования ресурсов. ОК. Создать новый проект - это то же самое решение и назвать его, например, Main. Создайте папку в другом проекте. Например, мы можем назвать его как Ресурсы. (Логическое имя для нашей цели). Затем щелкните правой кнопкой мыши по этой папке. Выберите "Добавить существующий элемент..." и выберите изображение из общего проекта. Не забудьте добавить этот файл в качестве ссылки. Ну, вы видите, что только что добавленный файл может немного отличаться от значка,
In the "Add Existing Item" dialog, choose the "Add as Link" option from the "Add" button's drop-down list
Значок добавленного ресурса должен выглядеть следующим образом:

In Solution Explorer, the Main project's icon for the puppy Resource has an arrow on the icon, whereas the Resources project's icon for the puppy Resource does not have an arrow on the icon

4. Теперь мы должны установить Build Action для этого файла None. Для этого выберите файл и перейдите в окно свойств. Выберите "Нет" для "Действия сборки". Мы должны сделать это, чтобы не вставлять этот значок в сборку;

In Solution Explorer, change the Main project's puppy resource's properties.  Choose a Build Action of None

5.Well, мы должны выполнить последний шаг для выполнения задачи. Откройте Project Settings для проекта, где мы просто добавим значок. Выберите вкладку "Ресурс" и перетащите связанный образ на ресурсы.
Drag the linked image from the Solution Explorer's Main project's resources to the Main project's resources tab's viewing pane

Это пять простых шагов, которые вы должны выполнить для обмена значками между проектами. Вы можете спросить: "Каковы преимущества этого?" Преимущества:

  • Мы храним ресурсы в одном месте и
  • Легко заменить значок новым.

Ответ 2

Можно ли использовать символическую ссылку для совместного использования файла в нескольких папках?

окна:

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.

Ответ 3

Если файл ресурсов действительно разделен между проектами, вы должны поместить его в общий проект.

Solution 'Sample'
   Project Sample.Data
   Project Sample.Business
   Project Sample.UI
   Project Sample.Resource   //shared resources are put in a shared project  

Ответ 4

Вы не можете увидеть ресурс, если он не является общедоступным, и по умолчанию он установлен на "Друг". Вы можете установить "модификатор доступа" в Visual Designer (в верхнем правом углу).

Ответ 5

Это не сработало для меня, и я нашел другой (VS2015 +) подход.  См. fooobar.com/info/427651/...

Короче говоря, общий проект напрямую включен в периферийный проект. Таким образом, даже несмотря на то, что IDE не поддерживает элементы <Resource> в общем проекте. Элементы <Resource> могут быть добавлены в общий проект через текстовый редактор. Затем они включаются в периферийный проект во время сборки.

(Извинения за гиперссылку. Я просто хотел бы ответить на этот вопрос для ясности, но редакторы stackoverflow нарушают это, удаляя повторяющиеся ответы, чтобы спасти вас от.)