Приложение WPF DotNET будет работать в режиме отладки, но .EXE не будет работать - PullRequest
10 голосов
/ 17 ноября 2010

Я написал приложение WPF на C # с использованием VS 2010. Приложение будет нормально работать в режиме отладки с использованием Visual Studio, но когда я запускаю .EXE из папки bin \ release, ничего не происходит.Я не получаю никаких сообщений об ошибках из Windows, и в VS нет ошибок или предупреждений.Я попытался построить, перестроить и очистить решение (в каждом возможном порядке) без удачи.Мое решение содержит 2 проекта, каждый из которых использует платформу .NET 4.0, и на моем компьютере установлен .NET 4.0.Я пробовал на XP и Win7 и до сих пор ничего.

Я также только что заметил, что вывод отладки при запуске приложения в режиме отладки говорит: «Не удается найти или открыть файл PDB» после каждого .Dll он загружается.в папку Release каждый раз, но я пытался изменить ее на папку отладки и очистить / пересобрать, просто чтобы посмотреть, изменит ли это что-то, но это не помогло, поэтому я изменил ее, попробовал еще раз и все еще ничего.1005 *

Есть идеи?

Ответы [ 8 ]

9 голосов
/ 17 ноября 2010

Вот несколько идей, которые приходят на ум

  • Если вы работаете на компьютере с архитектурой x64, попробуйте изменить приложение с AnyCPU на x86.В этом режиме приложения по умолчанию работают в режиме отладки, и, возможно, проблема, возникающая в x64, вызывает проблему в сборках выпуска
  • Возможно, двоичные файлы выпуска устарели.Удалите двоичные файлы из папки Release, пересоберите и запустите вновь сгенерированные запуски
  • Запустите сборку релиза под отладчиком в Visual Studio и посмотрите, не произойдет ли сбой до
5 голосов
/ 24 ноября 2015

Я тоже столкнулся с вышеуказанной проблемой, однако ни одно из других решений не помогло мне.

Мое приложение регистрирует в Event Viewer перечисленные идентификаторы событий 1018 и 1022. Похоже, это было странным образом связано с dll ASP.NET 2.0 (странно; поскольку это был только пустой проект WPF) Журналы содержали такие сообщения:

Windows не может открыть 64-разрядный расширяемый счетчик DLL ASP.NET_64_2.0.50727 в 32-разрядной среде

В конце концов, это было решено, когда я отключил свой антивирус . Я читал, что эта резолюция работает для кого-то с McAfee; и это также работало для моей среды, в которой есть Avast.

2 голосов
/ 15 апреля 2011

У меня была очень похожая проблема.

Проверьте этот параметр в записи пула приложений:

  • Перейти к расширенным настройкам.
  • Измените «Включить 32-разрядные приложения» на «ИСТИНА».

Это сработало для меня!

2 голосов
/ 17 ноября 2010

Я предполагаю, что вы пробовали на машине, на которой не установлена ​​Visual Studio, а также ни один из компонентов, которые вы используете для разработки.

У вас есть только один вариант: запустить приложение с отладчиком на компьютере, который вызывает проблемы, и проверить наличие исключений. (например, используйте WinDBG - это легко и просто).

Это похоже на проблему с отсутствующими зависимостями, но может быть и другое.

Лаборатории отладки должны предоставить вам достаточно информации о том, как использовать windbg для поиска вашей проблемы:

Также используйте это:

1 голос
/ 17 ноября 2010

(JaredPar) ответ выглядит правильно (x64), но если нет, попробуйте щелкнуть правой кнопкой мыши на EXE и запустить в режиме администратора для win 7.

0 голосов
/ 14 июня 2018

Та же проблема.
Решено добавлением отсутствующих dll в путь к новой папке exe-файла.
В моем случае некоторые dll-файлы WindowsApiCodePack и класс dll, которые были в решении.

0 голосов
/ 30 апреля 2012

Я столкнулся с подобной проблемой, мне не хватало пользовательской папки в режиме выпуска, на который я ссылался в конструкторе. Добавление папки в релиз решило проблему.

0 голосов
/ 17 ноября 2010

Я собираюсь пойти с дикой догадкой, что:

  • Либо у вас есть какие-то странные повреждения в вашей установке .NET Framework
  • Существует некоторая отладка / выпуск, специфичныйкод, использующий #if DEBUG или такой, который существенно отличается, чтобы вызвать проблемы.
  • Вы еще не скомпилировали недавно в Release (попробуйте изменить его на Release до компиляции вашего последнего кода и убедитесь, что у вас нет ошибок).

Это единственное, что я могу придумать, если подумать.

...