Настройка C # с целевой платформой x64 не поддерживает 64-битную ОС Windows 7 - PullRequest
2 голосов
/ 26 октября 2010

Я работаю с приложением c # windows form и использую mysql в качестве бэкэнда. я создал настройку для своего проекта, задав целевое свойство платформы как x64. Когда я устанавливаю свое приложение в Windows 7 64-битной ОС, оно устанавливается без ошибок. но когда я открываю установленное приложение, оно не может открыться, оно показывает «Windows закрывает приложение». каково решение моей проблемы. Даже если я не установил драйвер MySQL.

У меня есть другое приложение c # windows form с DirectX без какого-либо бэкенда, у этого приложения тоже проблема

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 26 октября 2010

Вот этапы диагностики, которые я бы прошел:

  • Проверьте журнал событий. Если CLR не удалось загрузить ваше приложение для начала, возможно, что-то там есть.

  • Попробуйте использовать Fusion Log Viewer , чтобы увидеть, что происходит с точки зрения привязки сборки.

  • Имеются ли в используемом вами драйвере MySQL отдельные 32- и 64-битные библиотеки DLL, и вы уверены, что устанавливаете правильный?

  • Можете ли вы проверить это, не пройдя полную установку (т. Е. Собрать и запустить на Win7 x64 box без установочной части)?

  • Будет ли сбой при сборке "Любой процессор"? Или есть какая-то конкретная причина, почему вы не можете этого сделать?

  • Сбой при сборке для x86, который все равно должен нормально работать на x64 box? (Если вам действительно не нужно использовать много памяти в приложении, для запуска x86 CLR могут быть полезны некоторые особенности производительности, особенно с точки зрения памяти, поскольку каждая ссылка вдвое меньше.)

  • Если вы создаете небольшое «тестовое приложение», которое не не использует MySQL, произойдет ли это?

  • Можете ли вы написать крошечное консольное приложение, которое использует , использует MySQL, и сделать так, чтобы это не сработало, показывая тем самым минимальное количество "пользовательского" кода, необходимого для провоцирования сбоя?

0 голосов
/ 26 октября 2010

Скорее всего, источником вашей проблемы является то, что ваше приложение работает как 64-битный процесс, но оно зависит от компонента, который доступен только в 32-битной версии.Это не является неожиданным, когда вы зависите от DirectX.MySQL, в чем я не уверен.

Когда вы строите свой проект, вы решаете, какую платформу вы хотите настроить.Это делается в настройках вашего проекта в Visual Studio.

  • Щелкните правой кнопкой мыши проект в обозревателе решений и выберите в меню Свойства .Важно, чтобы вы щелкнули правой кнопкой мыши проект, который создает ваше приложение, а не, например, проект установки.
  • В левой части окна, отображающего настройки, у вас есть несколько вкладок.Выберите вторую вкладку с именем Build .
  • Есть список со списком с именем Цель платформы .Именно здесь вы определяете, какую платформу следует настроить.

У вас есть четыре варианта:

  • Любой ЦП : если вы выберете это, ваше приложение будет работатькак "родная битность" вашей операционной системы.В 64-битной Windows ваше приложение будет работать как 64-битное. Не выберите этот параметр, если у вас есть зависимость от компонента, который доступен только в 32-разрядной версии.Если это так, и вы выбираете это, ваше приложение будет нормально работать на 32-битной Windows, но не будет работать на 64-битной Windows.Это симптом, который вы испытываете.
  • x86 : если вы выберете это, ваше приложение всегда будет работать в 32-битной версии. Выберите это , если у вас есть зависимость от компонента, который доступен только в 32-битной версии.
  • x64 : если вы выберете эту опцию, ваше приложение всегда будет работать в 64-битной версии.и откажется работать на 32-битной Windows.Это, вероятно, не то, что вы намереваетесь.
  • Itanium : Это для другой архитектуры процессора.
...