Приложение С# WinForms не будет работать на Win7 после сборки

У меня есть программа, которую я создал, которая читает и записывает файлы. Я собрал его в режиме Release, затем попытался запустить exe на Win7. Сначала при включенном устранении неполадок Windows просто сообщала мне, что приложение закрыто и ищет решение. Через несколько секунд диалог исчезнет и больше ничего не покажет.

Поэтому с некоторыми значительными усилиями я подключил отладчик к процессу, но он только показывал мне дизассемблирование, что говорит мне о том, что ошибка произошла не в коде моего приложения, а где-то во фреймворке.

Странно то, что когда я позволяю отладчику подключиться, затем нажимаю «стоп» в VS и выхожу из отладчика, программа действительно запускается в этот момент!

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

Как решить эту проблему?

Редактировать: Отвечая Мерлину:

Это пользовательское приложение, написанное с нуля на С#. Единственная зависимость, которую он имеет за пределами основных пространств имен .NET, — это Ionic.Zip DLL.

Visual Studio 2008 (написание на C# 3.5) Windows 7 — Home Premium, v6.1 build 7600 CPU — четырехъядерный процессор x64 компилируется под: Любой процессор

Я не пробовал это на другой машине или другой версии VS.

Редактировать: я смог попробовать скомпилированную версию на другом компьютере с Win7, и она работала без проблем, так что это похоже на проблему безопасности (?) Только на моем компьютере.


person Pete Michaud    schedule 03.11.2010    source источник
comment
Вы пробовали запускать приложение от имени администратора? Щелкните правой кнопкой мыши исполняемый файл и выберите пункт меню «Запуск от имени администратора». Посмотрите, поможет ли это   -  person Wesley    schedule 03.11.2010
comment
Вы пробовали искать в журнале событий? Это может дать больше информации. (но, возможно, нет, если он скомпилирован в режиме Relase.)   -  person David    schedule 03.11.2010
comment
Напишите обработчик событий для AppDomain.CurrentDomain.UnhandledException, чтобы вы знали, что происходит не так.   -  person Hans Passant    schedule 03.11.2010
comment
Да, я выполнил запуск от имени администратора, что позволяет запускать отладчик, но программа по-прежнему не работает должным образом.   -  person Pete Michaud    schedule 03.11.2010
comment
В журнале даже отображается следующая ошибка: Имя сбойного приложения: DocumentGenerator.exe, версия: 1.0.0.0, отметка времени: 0x4cd1af70 Имя сбойного модуля: MSCOREE.DLL, версия: 4.0.31106.0, отметка времени: 0x4af3af86 Код исключения: 0x80000003 Смещение ошибки : 0x0000000000005ab8 Идентификатор сбойного процесса: 0x3024 Время запуска сбойного приложения: 0x01cb7b8d899c33a7 Путь сбойного приложения: C:\App\Path\DocumentGenerator.exe Путь сбойного модуля: C:\Windows\SYSTEM32\MSCOREE.DLL 9fb3-406186c7cfa2   -  person Pete Michaud    schedule 03.11.2010
comment
Кроме того, по вашему предложению я добавил обработчик событий в событие UnhandledException, и ничего не изменилось, поэтому я предполагаю, что он терпит неудачу до загрузки какой-либо части моего приложения?   -  person Pete Michaud    schedule 03.11.2010
comment
Почему бы вам не выполнять отладку внутри Visual Studio? Это позволит вам войти в программу с самого начала без хлопот, связанных с попытками подключиться к процессу, который, возможно, уже мертв.   -  person ChrisF    schedule 03.11.2010
comment
Когда я запускаю его в Visual Studio, он работает отлично, ошибок нет. Это происходит только после того, как я соберу exe и попытаюсь запустить его.   -  person Pete Michaud    schedule 03.11.2010


Ответы (4)


Снимите флажок «Включить процесс размещения Visual Studio» в свойствах проекта и посмотрите, работает ли он по-прежнему в VS.

person SLaks    schedule 03.11.2010

Попробуйте это в отладчике с отключенным Just My Code и включенным Native Code, затем проверьте стек вызовов.

Кроме того, что произойдет, если вы запустите его непосредственно в Visual Studio?

person SLaks    schedule 03.11.2010
comment
попробовал, но никаких изменений - отладчик запускается, говорит мне, что не может показать дизассемблирование в режиме выполнения, затем программа запускается. Я могу остановить/выйти из отладчика, и приложение продолжает работать. - person Pete Michaud; 03.11.2010

Я знаю, что это не ответ, поэтому, пожалуйста, не голосуйте за него. Это слишком много, чтобы поместить в комментарий. Я удалю его, когда спрашивающий предоставит информацию.

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

Какую программу компилируете? Пользовательское приложение или приложение с открытым исходным кодом?

Какой вкус:

  • Визуальная студия
  • Windows 7
  • Процессор
  • Процессор, под которым вы компилируете («Любой процессор», «x86» и т. Д.)

Какие зависимости есть у этого приложения и какие версии вы установили? Какие вкусы процессора?

Вы заставили это работать на другой машине? Вы его компилировали и работали с другой версией VS? Вы получили предварительно скомпилированную версию для запуска? Если да, сообщите нам все вышеперечисленное для этой машины.

person Merlyn Morgan-Graham    schedule 03.11.2010

Я бы посоветовал отправить вопрос в службу поддержки Microsoft. Особенно с данными, приведенными здесь, вам будет легко убедить их, что это их проблема. Для этого вам может понадобиться подписка MSDN.

person 0xCAFEBABE    schedule 03.11.2010
comment
Вы ДОЛЖНЫ шутите? Ирония? - person Daniel Mošmondor; 03.11.2010
comment
-1, Звонок в службу поддержки на данном этапе — пустая трата времени и денег. Слишком много осталось переменных, которые он даже не начал идентифицировать, не говоря уже о том, чтобы дать нам параметры. Если ты иронизируешь, то сарказм не сработает :) - person Merlyn Morgan-Graham; 03.11.2010
comment
Я не очень хорошо знаком с закоулками службы поддержки Microsoft. Неужели так сложно попросить их о поддержке? Это не было ни сарказмом, ни шуткой. - person 0xCAFEBABE; 04.11.2010