2011-08-16 21 views
8

Chcę załadować bibliotekę .NET 2.0 do mojego .Net4.0 dll. Poszukałem rozwiązania i znalazłem atrybut useLegacyV2RuntimeActivationPolicy, który mogę dodać do pliku app.config, tak jak w tym adresie: Mixed mode assembly is built against version 'v1.1.4322'dostęp do biblioteki .net2.0 w pliku .net 4.0 dll

Problemem jest dla mnie fakt, że w moim przypadku próbuję użyć .NET2.0 dll w mojej bibliotece DLL 4.0, a nie w 4.0 exe ​​. Powodem jest to, że ta dll 4.0 jest następnie używana w Excelu jako dodatek do automatyzacji.

Obecnie, gdy dostaję mój .NET 4.0 API (który ładuje 2.0 dll dla funkcji) z Excela, dostaję "dll trybu mieszanego 2.0 nie może być załadowany w 4.0 runtime", co jest zrozumiałe, ponieważ COM załadował 4.0 CLR, a tym samym nie może załadować biblioteki dll 2.0.

W jakiś sposób muszę ustawić moją bibliotekę DLL 4.0 na ładowanie środowiska wykonawczego 2.0. Próbowałem dodać app.config do dll 4.0, ale domyślam się, że tylko .exe czyta app.config domyślnie by załadować clr. To jest to, co mam w moim app.config w projekcie 4.0 dll, ale bezużyteczne.

<?xml version="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
    <runtime> 
    <NetFx40_LegacySecurityPolicy enabled="true"/> 
    </runtime> 
</configuration> 

Jak mogę rozwiązać ten problem, aby umożliwić mój .NET 4.0 DLL używać .NET 2.0 dll?

Dzięki Mani

+1

Czy próbowałeś po prostu dodać .NET 2 dll, jak normalną dll? – Jethro

+0

Wygląda na to, że nie jest DLLem .NET 2.0 - jest to biblioteka DLL .NET 1.1. –

+7

Plik .config jest dobry, ale musi to być plik excel.exe.config i skopiowany do katalogu pakietu Office, w którym znajduje się program Excel. –

Odpowiedz

4

Odpowiedź już jest zrobione przez Hans Passant ale on opublikowany jako komentarz. Stąd odpowiadanie tutaj osobno.

Konflikt należy nazwać excel.exe.config i powinien znajdować się w tym samym katalogu biurowym, co plik excel.exe, aby ten scenariusz zadziałał.

Powiązane problemy