Piszę aplikację o interfejs API Peachtree i muszę pracować z każdą wersją API. Niestety dll z Peachtree 2011 nie może wchodzić w interakcje z Peachtree 2010 i na odwrót, mimo że te dwie biblioteki dll są przechowywane w tym samym miejscu i działają z dokładnie tym samym kodem.Załadować dll COM w czasie wykonywania?
Pomyślałem, że powinienem móc odnieść się do biblioteki dll według jej ścieżki pliku, pozostawić konkretną wersję jako fałszywą, osadzić typy interopów na false i skopiować lokalną na false, a ona po prostu użyłaby dowolnej wersji maszyny, ale ja otrzymam błąd, kiedy to zrobię - "Wyjątek został zgłoszony przez cel inwokacji."
Czy istnieje sposób późnego związania biblioteki DLL, mimo że jest to COM?
Mogę dostarczyć próbki kodu, które mogą być przydatne, ale to raczej kwestia konfiguracji projektu niż cokolwiek innego.
EDYCJA: Dziękuję bardzo za pomoc. Znalazłem moje rozwiązanie na pytanie innej osoby i opublikowałem je tutaj.
Zazwyczaj odwołuje DLL współdziałania w czasie kompilacji, a jeśli jest on obecny w systemie, to będzie załadować dll COM przy starcie. Czy jest więcej informacji w błędzie lub wewnętrzny wyjątek? Czy istnieje kod błędu (0xZZZZZZZZ)? Czy możesz połączyć śledzenie stosu, czy to daje zbyt dużo informacji o Twojej aplikacji? The Peachtree API, czy to COM, czy jest to DLL, który łączy się z COM? –