Как связать сборку .NET 2.0 в решении .NET 4.0 - PullRequest
2 голосов
/ 14 августа 2010

У меня есть проект, созданный с использованием .NET 4.0. У меня много кода, который было бы больно преобразовывать обратно в 2.0.

Я пытаюсь импортировать Dll, созданную с помощью .NET 2.0. Все работает, пока я не попытаюсь выполнить код из этой DLL. Он говорит, что не может загрузить указанный модуль или одну из его зависимостей

Я использовал dumpbin.exe, чтобы проверить, какие у него зависимости

File Type: DLL

  Section contains the following imports:

    mscoree.dll
                402000 Import Address Table
                4057F0 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                    0 _CorDllMain

Итак, я предполагаю, что dll пытается загрузить, но не может найти mscoree.dll из версии 2.0 и, таким образом, вызывает исключение.

Я попытался загрузить свой целевой модуль вручную с помощью

Assembly asm = Assembly.LoadFrom(dllPath);

Отладчик Visual Studio теперь отображает модуль как загруженный, но все равно не может получить к нему доступ. Поисковая система Windows сообщает о десятках «mscoree.dll», разбросанных по всему каталогу c: \ windows, поэтому я немного скептически отношусь к загрузке вручную.

Ответы [ 2 ]

3 голосов
/ 14 августа 2010

Вы не близки к диагностике проблемы. Dumpbin.exe не показывает ничего такого, чего не показывал бы ни для одной управляемой сборки. Также это не проблема, специфичная для смешивания зависимостей CLR.

Используйте fuslogvw.exe, чтобы узнать, что отсутствует зависимость.

1 голос
/ 14 августа 2010
  1. Начните с поиска всех его зависимостей. Тот факт, что вы не перечислили их здесь, вызывает беспокойство.
  2. Имеется ли в вашем приложении прямая ссылка на все упомянутые зависимости.
...