Изображения Winform (ResourceManager) не отображаются в Windows 10

У меня есть приложение формы Windows, которое отлично работает в Windows 7, но при открытии в Windows 10 файлы изображений с использованием ResourceManager не отображаются. Приложение использует платформу .Net 3.5. Ниже приведен небольшой код:

static readonly System.Resources.ResourceManager rm = new System.Resources.ResourceManager("ImageResources", Assembly.GetExecutingAssembly());

rm.GetObject("ImageName");

Ниже приведена ошибка:

Не удалось найти ресурсы, соответствующие указанной культуре или нейтральной культуре. Убедитесь, что он был правильно встроен или связан со сборкой во время компиляции, или что все необходимые вспомогательные сборки загружаемы и полностью подписаны. System.Resources.MissingManifestResourceException:

Это связано с какой-то несовместимостью или Windows 10 каким-то образом ограничивает класс ResourceManager для использования всех этих изображений?


person FaizanHussainRabbani    schedule 11.05.2016    source источник
comment
Вы уверены, что изображения были скопированы правильно?   -  person Dr. Stitch    schedule 11.05.2016
comment
Та же установка устанавливается на Windows 7, работает нормально. При установке в Windows 10 изображения не отображаются.   -  person FaizanHussainRabbani    schedule 11.05.2016
comment
Проверьте, какая платформа .NET установлена ​​в Windows 10.   -  person Dr. Stitch    schedule 11.05.2016
comment
Windows 10 поставляется с предустановленной .Net framework 4.   -  person FaizanHussainRabbani    schedule 11.05.2016
comment
Ваше приложение скомпилировано с помощью .NET framework 3.5. Вам следует установить версию 3.5, чтобы приложение не запускалось в версии 4.   -  person Dr. Stitch    schedule 11.05.2016
comment
На самом деле я сначала установил .net 3.5 framework в Windows 10, так как это не позволяло мне установить приложение с 3.5 framework.   -  person FaizanHussainRabbani    schedule 11.05.2016
comment
Проверьте файл конфигурации и убедитесь, что вы используете версию 3.5.   -  person Dr. Stitch    schedule 11.05.2016
comment
Я ничего не упомянул о целевой структуре в файле конфигурации.   -  person FaizanHussainRabbani    schedule 11.05.2016
comment
stackoverflow.com/questions/3953063/   -  person Dr. Stitch    schedule 11.05.2016
comment
Пробовал использовать, но бесполезно.   -  person FaizanHussainRabbani    schedule 11.05.2016
comment
@FaizanRabbani, можете ли вы предоставить содержимое файла *.config вашего приложения?   -  person Alexej Sommer    schedule 11.05.2016


Ответы (2)


Попробуйте проверить значение Environment.Version (например, с помощью некоторых MessageBox) на целевой машине. Если вы получаете 4.0, вам нужно изменить файл конфигурации, как это было предложено доктором Стичем. Если у вас нет файла конфигурации, создайте его, как описано здесь: Как добавить файла конфигурации приложения в проект C#

И измените его содержимое на что-то вроде этого:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
  <supportedRuntime version="v2.0.50727" />
</startup>
</configuration>

Версию среды выполнения вы можете получить на странице поддерживаемых элементов среды выполнения.

person Alexej Sommer    schedule 11.05.2016
comment
Это из-за несовместимости .net framework? Из-за этого ResourceManager не может загружаться должным образом? - person FaizanHussainRabbani; 12.05.2016
comment
Я не могу быть уверен на 100%, но если вы проверите Environment.Version на целевой машине и получите v4.0 (если вы добавите в свое окно сообщения кода, которое показывает значение Environment.Version), то вы можете быть уверены, что это причина Совместимость версий .net framework - person Alexej Sommer; 12.05.2016

В конечном итоге эта проблема была решена путем добавления CultureInfo.CurrentCulture в параметр метода rm.GetObject, т.е.

rm.GetObject("ImageName", CultureInfo.CurrentCulture);
person FaizanHussainRabbani    schedule 17.05.2016