Я создал сборку и позже ее переименовал.
Затем я начал получать ошибки времени выполнения при вызове:
toolsMenuName = resourceManager.GetString(resourceName);
Переменная resourceName
– «enTools» во время выполнения.
Не удалось найти ресурсы, подходящие для указанной культуры или нейтральной культуры. Убедитесь, что «Jfc.TFSAddIn.CommandBar.resources» был правильно встроен или связан в сборку «Jfc.TFSAddIn» во время компиляции или что все необходимые сборочные сборки необходимы для загрузки и полной подписки.
Код:
string resourceName; ResourceManager resourceManager = new ResourceManager("Jfc.TFSAddIn.CommandBar", Assembly.GetExecutingAssembly()); CultureInfo cultureInfo = new CultureInfo(_applicationObject.LocaleID); if(cultureInfo.TwoLetterISOLanguageName == "zh") { CultureInfo parentCultureInfo = cultureInfo.Parent; resourceName = String.Concat(parentCultureInfo.Name, "Tools"); } else { resourceName = String.Concat(cultureInfo.TwoLetterISOLanguageName, "Tools"); } toolsMenuName = resourceManager.GetString(resourceName); // EXCEPTION IS HERE
Я вижу файл CommandBar.resx, включенный в проект, я могу открыть его и увидеть там строку «enTools». Кажется, что либо ресурсы не включены в сборку, либо ресурсы включены, но .NET не может разрешить имя.
Я думаю, что более простым решением было бы создать отдельный файл ресурсов для каждого языка.
Что касается этого случая, проверьте, имеет ли assembly, содержащая ресурсы, пространство имен по умолчанию для одного и того же текста (Project-> Properties-> Default namespace, в VS)
Проверьте также, если файл resx имеет свойство BuildAction, установленное в «Embedded resource»
Звучит похоже на вопрос, который у нас был. Пространство имен было неправильным в дизайне файла ресурса. Я исправил его, вручную перезапустив пользовательский инструмент в файле resx.
Щелкните правой кнопкой мыши файл your.resx и выберите «Выполнить пользовательский инструмент».
Я уверен, что у вас уже есть ответ, но на всякий случай:
Вы можете просмотреть свое ManifestResourceName, вызвав
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames()
Убедитесь, что имя манифеста и ваше имя в вызове GetString () идентичны.
Кроме того, убедитесь, что у вас есть правильное пространство имен в файле designer.resx:
namespace Jfc.TFSAddIn { ... global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager( "Jfc.TFSAddIn.CommandBar", typeof(CommandBar).Assembly); ... }
Открытые свойства файла resx: «Build Action» должно быть «Embedded Resource»
Для меня источником проблемы было именование файлов rex, начинающихся с числа:
20160216_tranlation.resx
Я должен был добавить символ подчеркивания _
перед именем файла GetGlobalResourceObject
при вызове GetGlobalResourceObject
:
public static string getResource(string key) { return HttpContext.GetGlobalResourceObject("_20160216_tranlation", key).ToString(); }
Этот ответ решил проблему для меня! GetGlobalResourceObject
Я исправил пространство имен в файле конструктора (Resources.Designer.cs) в статическом свойстве ResourceManager, и это сработало для меня.
См. Следующий код:
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XYZAssembly.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } }
Я добавил временный class в моей Form.cs во время (тестирование отладки), из-за которого было вызвано это исключение. Файл Form.resx (Name || Resource ID) был изменен на имя временного classа вместо имени classа Form. Это вызвало у меня проблему. I (исправлено || облегчено), создав отдельный файл для моего временного classа в проекте.
Одним из решений является изменение свойства файла resx из содержимого в Embedded Resource и его создание. Убедитесь, что на этот раз u vil get
Я столкнулся с этой проблемой в Xamarin.Forms, когда я попытался переименовать проект, ресурсы больше не могли быть загружены с тем же заявленным текстом ошибки.
Чтобы исправить эту проблему, мне пришлось модифицировать .csproj текстовым редактором и изменить логическое имя встроенного ресурса.
ResXFileCodeGenerator TextResources.Designer.cs YourNewNamespaceName.TextResources.resources Designer
Также следите за автогенерированным classом при его восстановлении, пространство имен, указанное в нем, может измениться.
Надеюсь, это поможет кому-то, кто попал в ту же ситуацию.
Получил эту ошибку, когда добавил class ABOVE в class частичной формы в моем приложении форм Windows.
Он ушел, когда я переместил class BELOW на частичный class формы.