Я работал в визуальной студии и у меня был файл класса: Foo.cs ... Я создал файл ресурсов (resx) с именем Foo.resx, потому что я также планирую иметь Foo.es-SP.resx.
Visual studio очень хорошо спрятала файл ресурсов точно так же, как убирает файлы кода программной части для страниц xaml.
Проблема в том, что приложение не компилируется, потому что генератор ресурсов создал класс Foo.Designer.cs (дизайнер), который имеет внутренний класс Foo для ресурса, имя которого совпадает с именем моего класса Foo:
Foo.cs
public class Foo { ... }
Foo.Designer.cs
internal class Foo { ... }
что очень раздражает, потому что мое приложение сейчас не компилируется. Итак, я решил обмануть Visual Studio и переименовать файл (а не сам класс). Теперь у меня есть FooC.cs, FooC.resx и FooC.Designer.cs. Это изменило класс resx на internal class FooC { ... }
Он компилируется, но не дает сбоев, когда я запускаю приложение, когда пытаюсь захватить ресурс.
Почему Visual Studio создает внутренний класс, который конфликтует с моим существующим классом? Очевидно, что создаваемый ресурс для вашего класса должен иметь такое же имя, потому что он организует его для вас.
Почему я получаю сообщение об ошибке выполнения, когда пытаюсь использовать ресурс, помеченный как «Встроенный ресурс»?
Сообщение об ошибке:
System.Resources.MissingManifestResourceException: не удалось найти ресурсы, подходящие для указанной культуры или нейтральной культуры. Убедитесь, что «MyProj.FooC.resources» был правильно встроен или связан со сборкой «MyProj» во время компиляции, или что все необходимые вспомогательные сборки загружаются и полностью подписаны. в System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing (String fileName)