Приложение WPF не запускается при смене платформы Active solution с любого процессора на x86

#c# #.net #wpf

#c# #.net #wpf

Вопрос:

Я работаю над приложением WPF. Которое работает нормально с «Любым процессором» в качестве платформы активного решения, но при смене его на «x86» приложение запускается, но останавливается без отображения какой-либо формы или сообщения об ошибке. Приложение не выдает никаких исключений и не регистрирует никаких ошибок в журнале событий.

Я запускаю это приложение на платформе .NET 4.0 framework и 64-разрядной ОС Windows 7.

ценю вашу помощь в решении этой проблемы.

Спасибо, maxk

Ответ №1:

Во-первых, странно, что вы не получаете никаких сообщений об ошибках. Даже при запуске встроенного приложения без отладчика?

Лучший ответ, который кто-либо может дать на основе предоставленной информации, — это выполнить некоторую отладку методом проб и ошибок:
1) Создайте новый пустой проект, установите для него значение x86, посмотрите, запускается ли он. Если нет, то с настройками вашего компьютера возникли серьезные проблемы, которые, вероятно, придется переустановить.
2) В вашем собственном проекте, если у вас есть какие-либо внешние ссылки, начните удалять их одну за другой и посмотрите, начнет ли ваше приложение запускаться. Возможно, упомянутая dll вызывает хаос в 32-разрядном режиме.
3) Начните комментировать блоки кода, чтобы посмотреть, начнет ли ваше приложение запускаться после этого. Я обнаружил, что наличие ошибок в методах Window_Loaded (особенно во время отладки) может вызвать проблемы — исключения не обрабатываются, сбой приложения и т.д.
4) Возможно, у вас неисправен плагин Visual Studio (я предполагаю, что вы используете VS и проблемы возникают на вашем компьютере разработки). Попробуйте запустить приложение без отладки…
5) Создайте виртуальную машину и попробуйте свое приложение там, если оно там работает, значит, ваша машина каким-то образом «повреждена»..

PS! Просто для вашего сведения, поскольку вы используете 64-разрядную ОС, то при любых настройках процессора ваше приложение становится 64-разрядным. Принудительное использование 32-разрядной версии может вызвать проблемы, если вы используете плохо написанные собственные библиотеки DLL (хотя обычно бывает наоборот — проблемы возникают при переходе с 32-разрядной версии на 64-разрядную).