Могу ли я получить доступ к встроенному ресурсу другого проекта из другого проекта в том же решении? - PullRequest
3 голосов
/ 16 июля 2011

У меня есть один XML-файл, который выступает в качестве встроенного ресурса в Project_A.

И я хочу получить доступ к этому встроенному ресурсу из Project_B, который ссылается на Project_A.

(В основном Project_B состоит из модульных тестов, и я запускаю их с помощью ReSharper.)

Можно ли получить доступ к встроенному ресурсу Project_A, когда я работаю над Project_B?

Или вообще можно ли получить доступ к встроенному ресурсу другого проекта из другого проекта в том же решении?

Ответы [ 4 ]

6 голосов
/ 16 июля 2011

Да, вы можете.Вот пример того, как вы можете получить встроенный ресурс System.Timers.Timer.bmp внутри .NET Framework System.dll:

using (Stream stream = typeof(System.Timers.Timer).Assembly.
                           GetManifestResourceStream("System.Timers.Timer.bmp"))
{
    using (Bitmap bitmap = new Bitmap(stream))
    {
        //bitmap.Dump();
    }
}

... или получить список имен ресурсов:

string[] names = typeof(System.Timers.Timer).Assembly.GetManifestResourceNames();

... просто замените typeof(System.Timers.Timer) на тип внутри сборки, содержащей ваши встроенные ресурсы .

0 голосов
/ 28 августа 2018

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

0 голосов
/ 22 апреля 2013

Вы пытались открыть встроенный ресурс в представлении «таблица» (дважды щелкните файл Resources.resx в Visual Studio) и изменили «Модификатор доступа» в верхней полосе (где «Строки», «Добавить»Ресурс "," Удалить ресурс "и т. Д.) Помещены в Public вместо внутренних?

0 голосов
/ 16 июля 2011

Класс, который автоматически создается Visual Studio для встроенного ресурса, является внутренним.

Этот класс не может быть доступен из другой сборки.

Вы можете:

  1. Измените этот класс на public (не уверен, что это сохранится, если вы сделаете дальнейшие изменения в ресурсах через Visual studio.
  2. Откройте этот класс, возвращая его из некоторого основного "глобального" класса в вашем Project_A, итаким образом, предоставляя доступ к другому «потребляющему» коду.
...