2010-02-03 9 views
1

У меня есть сборник DLL, который используется рядом приложений. Они компилируются и выполняются отлично на моей машине разработки. Но если я попытаюсь их развернуть, я просто получаю сообщение «ваше приложение сбой» из Windows, когда я пытаюсь запустить их. Я понял, что, поскольку они .NET, я могу установить Visual Studio и посмотреть, что такое исключение. Но как только я устанавливаю Visual Studio, все работает отлично! Я пытался идентифицировать что-либо (например, определенные версии .NET framework), которые VS устанавливает и пытается воспроизвести, но все равно ничего не будет работать, пока не будет установлена ​​сама визуальная студия. Я, конечно, не могу требовать, чтобы люди устанавливали визуальную студию для использования моего приложения. Что я могу сделать?Приложения работают только при установке Visual Studio?

+1

Не могли бы вы опубликовать точную ошибку? Так как это DLL, когда он точно падает? Нагрузка DLL? Что загружает DLL? Как это делается? Имеет ли исполняющий PE (или dll?) Административные привилегии? – bdd

+0

Вы уверены, что .net framework установлен на вашей тестовой машине? Кроме того, убедитесь, что все DLL-файлы включены в ту же папку, что и приложение. – Cyclone

+1

можете ли вы определить, какие зависимости использует Reflector? Затем убедитесь, что он не зависит от каких-либо Microsoft (например, не .NET framework) или сборки VisualStudio. –

ответ

5

Если вы ссылаетесь на DLL из консольного приложения, он должен сбрасывать трассировку стека на консоль при ее сбое ... что может помочь.

Кроме того, попробуйте enabling the Fusion log, чтобы помочь отладить проблемы с поиском ссылок.

0

Добавить блок try/catch в программу, отображающую или отправляющую сообщения об исключении.

Также убедитесь, что установлена ​​правильная версия .Net.

И, наконец, просмотрите список связанных DLL-файлов и убедитесь, что все они существуют.

0

Попробуйте установить .NET Framework на целевые компьютеры.

0

Похоже, что вы не можете выполнять сборку во время развертывания. Используйте инструмент, например, .Net Reflector.
The accepted answer по другому вопросу дает конкретные инструкции.

1

Это, скорее всего, DLL, которая имеет зависимость от библиотеки времени выполнения (CRT). Вы должны убедиться, что развертываете сборку выпуска DLL, отладочная версия библиотек CRT не может быть распространена. Если вы скомпилированы с параметром/MD, вам также потребуется развернуть DLL-библиотеки CRT на целевой машине. Компиляция с/MT позволяет избежать этого, но этот параметр недоступен, если вы используете управляемый код в своей DLL.

Смежные вопросы