Как да свържете .NET 2.0 сборка в .NET 4.0 решение

Имам проект, създаден с .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, така че съм малко скептичен относно ръчното зареждане.


person Eric    schedule 13.08.2010    source източник


Отговори (2)


Не сте близо до диагностицирането на проблема. Dumpbin.exe не ви показва нищо, което не би показало за управлявано сглобяване. Нито пък това е проблем, който е специфичен за смесването на CLR зависимости.

Използвайте fuslogvw.exe, за да разберете каква зависимост липсва.

person Hans Passant    schedule 13.08.2010

  1. Започнете, като намерите всичките му зависимости. Фактът, че не сте ги изброили тук, е обезпокоителен.
  2. Приложението ви препраща директно към всички споменати зависимости.
person Jonathan Allen    schedule 13.08.2010