2010-03-02 3 views
2

Я встречаю следующее исключение, когда копирую всю программу directoy на другую машину. Какие инструменты я могу использовать для его отладки? Спасибо.Сборка или файлы не могут быть загружены при запуске exec

Unhandled Exception: System.TypeInitializationException: Инициализатор типа fo r 'SomeClass' бросил исключение n. ---> System.IO.FileLoadException: Не удалось загрузить файл или сборку 'SomeAssembly.dll, Version = 0.0.0.0, Culture = neut ral, PublicKeyToken = null' или одна из его зависимостей. Это приложение имеет ошибку d для запуска, поскольку неправильная конфигурация приложения. Повторная установка приложения может решить эту проблему. (Исключение из HRESULT: 0x800736b1) Имя файла: 'SomeAssembly.dll, версия = 0.0.0.0, культура = нейтральной, PublicKeyToken = NULL' ---> System.Runtime.InteropServi ces.COMException (0x800736b1): Это приложение не удалось запустить, поскольку неправильная конфигурация приложения . Повторная установка приложения может устранить проблему thi s. (Исключение из HRESULT: 0x800736B1)

ответ

4

Это ошибка Windows, а не ошибка .NET. Код ошибки: 14001, ERROR_SXS_CANT_GEN_ACTCTX, «Приложение не удалось запустить, потому что его бок о бок конфигурация неверна. Подробнее см. Журнал событий приложения».

Просмотрите журнал событий Windows, он сообщает вам, какую DLL вы забыли установить на целевую машину. Если это сборка в смешанном режиме, то обычно это DLL среды выполнения C/C++, или вы развернули сборку отладки.

+0

@bobugz: сообщение об ошибке «Зависимая сборка Microsoft.VC90.DebugCRT не найдена и последняя ошибка была Связанная сборка не установлена ​​в вашей системе». Как я могу найти «Microsoft.VC90.DebugCRT» на моей успешной машине? – Ricky

+0

Да, это DLL среды выполнения C/C++, и вы * сделали * развертывание отладочной сборки. Создайте сборку релизов, установите это: http://www.microsoft.com/downloads/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&displaylang=en –

+0

Такое же исключение все еще выкидывается после установки ссылки u предоставлена. – Ricky

0

Если вы просто копируете файлы, убедитесь, что DLL не блокируется ОС. Чтобы проверить это, щелкните правой кнопкой мыши по dll, перейдите в «Свойства» и посмотрите в правом нижнем углу диалогового окна под кнопкой «Дополнительно». Если есть кнопка, которая говорит «Разблокировать», нажмите на нее. Вам придется либо сделать это для всех, либо добавить их в GAC с помощью утилиты gacutil.

Paul

1

Вы можете использовать fusion log для отладки такого рода проблемы. Он покажет вам, где он ищет зависимости, и если он их нашел, и если он нашел их и не смог их загрузить, почему.

+0

хороший инструмент, спасибо u! – Ricky

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