Не удалось найти ресурсы, подходящие для указанной культуры (образы C # WinForm в файле ресурсов) - PullRequest
5 голосов
/ 17 декабря 2009

Я добавил три изображения в файл с именем Resource1.resx. Я также добавил одну строку только для целей тестирования. Я получаю эту ошибку либо в GetString, либо в GetObject (image-name).

{"Не удалось найти ресурсы подходит для указанной культуры или нейтральная культура. Удостовериться \ "Resource1.resources \" был правильно встроенный или связанный в сборку \ "TFBIC.RCT.Monitor \" во время компиляции, или что все спутниковые сборки Требуются загружаемые и полностью подписан. "}

    // get initial images 
ResourceManager rm = new ResourceManager(
    "Resource1",System.Reflection.Assembly.GetExecutingAssembly());
CultureInfo ci = Thread.CurrentThread.CurrentCulture;


string strTest = rm.GetString("String1");  // just testing 

Bitmap bmCircleGreen = (Bitmap)rm.GetObject("circleGreen");      
Bitmap bmCircleYellow = (Bitmap)rm.GetObject("circleYellow");      
Bitmap bmCircleRed = (Bitmap)rm.GetObject("circleRed");  

Моя форма - первый класс в моем проекте (я уже видел эту ошибку).
Я назначил клавишу для своего проекта безрезультатно.
Не уверен, что еще попробовать.

Ответы [ 4 ]

4 голосов
/ 18 декабря 2009

Вы не забыли включить пространство имен / папку по умолчанию при обращении к ресурсу?

ResourceManager rm = new ResourceManager("DefaultNamespace.Folder.ResourceName");

Если вы не уверены в правильности имени, загрузите сборку в Reflector и просмотрите ее, чтобы увидеть, что это такое.

3 голосов
/ 18 декабря 2009

1-й аргумент неверен. Но ResourceManager уже создан для вас. Вы можете увидеть его код: в окне обозревателя решений откройте узел Properties, откройте узел Resources.resx и дважды щелкните файл Resources.Designer.cs.

Вы получите его экземпляр с Properties.Resources.ResourceManager. Если вы добавили растровые изображения с помощью Project + Properties, вкладка Resources (настоятельно рекомендуется), вы можете просто обратиться к свойству по названию, которое вы ему дали. Как Properties.Resources.circleGreen. Имейте в виду, что вы получаете новый объект изображения каждый раз, когда вы используете это свойство, вам может потребоваться скопировать его в переменную, если вы используете его более одного раза.

2 голосов
/ 26 ноября 2012

У меня тоже была такая же проблема. добавив "DefaultNameSpace." («BusinessLogic» - это пространство имен по умолчанию в моем случае), прежде чем resourcefileName в следующей строке решило мою проблему

 public static ResourceManager rm = new ResourceManager(string.Concat("BusinessLogic." , Constants.Common.ResourceFileName), Assembly.GetExecutingAssembly());
1 голос
/ 05 марта 2015

У меня была такая же проблема сегодня на winform, созданной VS-дизайнером. Я добавил изображение к элементу menuStrip:

this->menuitemFileSettings->Image = (cli::safe_cast<System::Drawing::Image^>
  (resources->GetObject(L"menuitemFileSettings.Image")));

С тех пор появилась та же ошибка. Тестирование с изображениями на других элементах управления было таким же.

  • На основе MS KB класс Form должен быть первым в коде. Это было нормально в моем коде.
  • Файл resouces также имеет то же имя (frmMain.resx), что и класс winforms (frmMain).
  • Проверяя созданный exe-файл с помощью ILSpy, я даже нашел ресурс изображения в файле. Что-то, что я ретроспективно не понимаю.
  • Я не использую какую-либо локализацию.
  • Я создал новую winform, скопировал все соответствующие части, тот же сбой.

Каким-то образом я, наконец, наткнулся на запись «Управляемые ресурсы» в настройках проекта. Параметр «имя файла ресурса» имеет (по умолчанию) значение $(IntDir)\$(RootNamespace).$(InputName).resources ..., что правильно, но когда я понял, что путь содержит имя пространства имен , я проверил пространство имен и обнаружил, что я изменил его (с NS_Winform на NS_assemblies) для более легкого импорта сборок.

Изменил его обратно, теперь работает нормально. : -)
Но я до сих пор не понимаю, как ресурсы контента
1) был включен в exe, несмотря на неправильное пространство имен, и
2) не найден, хотя включен.

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