System.Resources.MissingManifestResourceException, когда форма и resx находятся в папке проектаC#

Место общения программистов C#
Ответить
Anonymous
 System.Resources.MissingManifestResourceException, когда форма и resx находятся в папке проекта

Сообщение Anonymous »

У меня есть устаревшее приложение .NET Framework Winforms, которое я переношу из старого формата файла csproj в новый формат в стиле SDK. Я сделал это, создав в решении новый проект в стиле SDK с другим именем, а затем перетащив все формы и файлы кода в новый проект в обозревателе решений Visual Studio. Затем я удаляю старый проект и переименовываю новый (csproj и содержащую папку), пока он выгружается, а затем перезагружаю его. В прошлом это хорошо помогало мне в библиотечных проектах. Visual Studio, похоже, вносит некоторые изменения в то, как проекты в стиле SDK обрабатывают файлы C# и встроенные ресурсы, например, меняют Compile Include на Compile Update и т. д.:
старый проект:

Код: Выделить всё

  
Form



EditView.cs



Designer
EditView.cs

новый проект:

Код: Выделить всё

  
Form


Designer

Но у меня также есть несколько форм, которые находятся в папке проекта и соответствующем подкаталоге файловой системы.
старый проект:

Код: Выделить всё

  
Form


Main.cs


Designer
Main.cs

новый проект:

Код: Выделить всё

  
Form


Designer

Это компилируется, но во время выполнения при попытке запуска приложения в отладчике возникает следующее исключение
System.Resources.MissingManifestResourceException: ' Не удалось найти ресурсы, подходящие для указанной или нейтральной культуры. Убедитесь, что "MainApp.Main.resources" был правильно встроен или связан со сборкой "MainApp" во время компиляции, или что все необходимые вспомогательные сборки загружаются и полностью подписаны.'
Я был можно исправить это, перетащив главную форму из папки проекта на уровень проекта, что также переместило ее из подкаталога файловой системы. Помимо этого, единственное изменение, которое я вижу, это то, что оно соответствующим образом изменило пути в файле csproj, удалив «Файлы основного класса» из Main.cs и Main.resx:

Код: Выделить всё

    
Form


Designer

Когда я это сделал, VS предоставил мне возможность настроить пространства имен, и я согласился.
Изображение

На этом этапе я снова запустил приложение, и исправление сработало, но я получил то же исключение в файле ресурсов другой формы, который находился в папке проекта. Затем я решил, что у меня должна быть возможность перетащить форму обратно в папку проекта и отказаться от настройки пространства имен, но VS не предоставил мне такой возможности. Когда форма и resx вернулись в папку проекта, исключение вернулось. Я не уверен, что опция пространства имен действительно имеет значение, поскольку это, похоже, только строковые ресурсы, а для модификатора доступа установлено значение «Без генерации кода». Если с ними связано пространство имен, я не могу его найти.
Это большое монолитное устаревшее приложение, и в папках проекта находится множество форм. Я бы предпочел не перемещать файл в файловой системе, поскольку это означает, что я потеряю историю GitHub. Добавьте к этому тот факт, что это ошибка времени выполнения, и если я пропущу исправление какой-либо из них, они могут появиться позже, когда откроется какое-либо затронутое диалоговое окно. Поэтому я ищу наиболее систематический и проверяемый способ решения этой проблемы.
Итак, мой вопрос: как я могу исправить исключение, оставляя файлы в подкаталоге/папке проекта и Надеюсь, я найду в проекте какой-нибудь файл, в котором учитываются этот подкаталог и потенциально затронутое пространство имен, чтобы я мог убедиться, что ничего не пропустил?
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/792 ... re-in-proj
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»