Caricamento delle DLL dal percorso specificato in SetdllDirectory in c #

Sono nuovo in dotnet. Ho una DLL dotnet che carica una DLL c utilizzando DllImport . Voglio mettere tutte le DLL in una cartella diversa dalla posizione dell’applicazione. Non voglio modificare le variabili ambientali. Quindi ho usato API setdlldirectory e ho caricato il mio assembly c # tramite Assembly.Loadfrom(..) . Ho verificato che SetdllDirectory verificando il valore di GetDllDirectory(..) . Ma non sta né caricando C # dll né c dll da quella cartella. Sono in grado di caricare C# dll specificando il percorso in Assembly.Loadfrom . Ma non è in grado di caricare c dll.

Grazie in anticipo!!

Suggerirei di aggiungere il percorso della directory alla variabile env PATH in runtime, usando il seguente codice:

 var dllDirectory = @"C:/some/path"; Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" + dllDirectory); 

In questo modo, la modifica influisce solo sul processo in esecuzione e viene scartata quando esce.

Dai un’occhiata alla documentazione di LoadFrom e troverai che dice: Se esiste un’immagine nativa per assemblyFile, non viene usata. L’assembly non può essere caricato come dominio neutrale.

Credo che avrai bisogno di aggiungere la directory DLL al percorso dell’EXE.