Внешний компонент выдал исключение из сторонней сборки - PullRequest
1 голос
/ 08 марта 2012

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

В одном из наших приложений сборка работает правильно.

В другом приложении она генерировала следующееисключение:

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

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

<startup useLegacyV2RuntimeActivationPolicy="true">

(приложение, которое уже работаетимел этот параметр в app.config)

Хотя это и решило проблему «сборки в смешанном режиме», теперь я вижу несколько другую проблему:

External component has thrown an exception

Странная вещьчто у меня есть одно приложение, которое работает правильно, и другое приложение, которое не работает.Они оба вызывают стороннюю сборку через один и тот же код (который является еще одной из наших сборок).

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

Я сравнил файлы app.config для всех приложений, и они по сути одинаковы, и я дважды проверил, что всеНастройки сборки одинаковы для каждого.Оба проекта нацелены на .NET 4.0 и X86.

Очевидно, что в этих двух приложениях есть что-то отличное, но я не могу понять, что это такое.

Средой разработки является Visual Studio 2010.

Есть ли у кого-нибудь какие-либо предложения о том, какие еще области я мог бы исследовать?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Если отсутствуют зависимости, вы можете использовать такие инструменты, как CheckAsm для управляемых и Dependency Walker для неуправляемых библиотек для проверки зависимостей.

1 голос
/ 08 марта 2012

@ tsells был прав: отсутствовала зависимость

Рассматриваемая сторонняя сборка зависела от другой библиотеки DLL, которая присутствовала в первой папке bin приложений.

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

Оттуда оставалось только определить, какая DLL отсутствовала, и включить ее во второй проект приложений.

...