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
Czy próbowałeś po prostu dodać .NET 2 dll, jak normalną dll? – Jethro
Wygląda na to, że nie jest DLLem .NET 2.0 - jest to biblioteka DLL .NET 1.1. –
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. –