Не удалось найти какие-либо ресурсы, подходящие для указанной культуры или нейтральной культуры - PullRequest
172 голосов
/ 13 января 2010

У меня есть два веб-проекта ASP.NET (ProjectA и ProjectB). Когда класс в ProjectA создает экземпляр класса ProjectB, который использует файл ресурсов Blah.resx, я получаю эту ошибку:

Исключение типа 'System.Resources.MissingManifestResourceException' произошло в mscorlib.dll, но не было обработано в коде пользователя.

Не удалось найти ресурсы, подходящие для указанной культуры или нейтральной культуры. Убедитесь, что «Resources.Blah.resources» был правильно встроен или связан со сборкой «App_GlobalResources.sn_flri6» во время компиляции, или что все требуемые спутниковые сборки загружаются и полностью подписаны.

Что вызвало это?

На сайте Microsoft есть статья об этом http://support.microsoft.com/kb/318603, в которой предлагается:

Чтобы решить эту проблему, переместите все другие определения классов так, чтобы они появлялись после определения класса формы.

Это решение для проекта Windows Forms, я не уверен, относится ли это также к веб-проектам.

Ответы [ 26 ]

0 голосов
/ 28 февраля 2018

Я тоже столкнулся с той же проблемой, перепробовал все решения, упомянутые в ответе, но ни одно из них не помогло. Оказалось, что во время регистрации кода в TFS. TFS не проверял файл Resx, он проверял только в файле конструктора. Таким образом, все остальные разработчики столкнулись с этой проблемой во время работы на своих машинах. Проверка в файле resx вручную сделала трюк

0 голосов
/ 09 февраля 2019

Еще одна причина: если в вашем пространстве имен есть дефис ("-"), он будет правильно скомпилирован и запущен, но ресурс не будет доступен. Пространства имен (идентификаторы) не должны иметь дефисов, но это, кажется, не применяется нигде, кроме как при загрузке ресурсов. Это сожгло меня дважды за десятилетие.

0 голосов
/ 01 декабря 2017

Это может быть вызвано несовпадающими пространствами имен.Второй ответ сверху (Sibi Elango) говорит, что нужно щелкнуть правой кнопкой мыши по файлу resx и изменить опцию Build на EmbeddedResource, но я уже сделал это и все еще имел ошибку.В верхнем ответе (CFinck's) отмечается способ исправить это путем ручного редактирования файлов, однако у меня возникла эта проблема в MonoDevelop, и мне пришлось установить для пространства имен по умолчанию то же самое, что и для файла CS, который вызывал ресурс (файл,содержащийся код, такой как приведенный ниже код) ...

this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));

После установки пространства имен по умолчанию через графический интерфейс, строка выше больше не вызвала исключение.

0 голосов
/ 20 августа 2016

В моем случае я поместил новый класс поверх формы Windows, в том же файле.

Перемещение добавленного класса из этого файла решило проблему.

Смотрите здесь: http://i.stack.imgur.com/wVu6c.png

0 голосов
/ 24 мая 2019

Еще одна вещь, которую нужно проверить, - это если у вас есть встроенное имя LogicalName или ManifestResourceName. Убедитесь, что они определены правильно, если файл вашего проекта использует их, поскольку они могут привести к тому, что ресурсы будут жить под именем, которое вы не ожидаете.

0 голосов
/ 28 января 2010

То, что вы ссылаетесь на библиотеку DLL проекта B, не означает, что диспетчер ресурсов проекта A знает о каталоге App_GlobalResources проекта B.

Используете ли вы проекты веб-сайтов или проекты веб-приложений? Во втором случае Visual Studio должна позволять вам связывать файлы исходного кода (не уверен насчет первого, я никогда не использовал их). Это малоизвестная, но полезная функция, которая описана здесь . Таким образом, вы можете связать файлы ресурсов проекта B с проектом A.

...