2012-07-10 82 views
2

我的c#應用程序正在加載一個C#dll。這個c#dll通過DllImport加載一個c dll。我希望這兩個DLL都存在於當前工作目錄的其他文件夾中。但我不想修改它的環境變量。我試過SetDllDirectory但無法加載這些DLL。 你有什麼想法我可以做到這一點。從其他文件夾加載dll

+0

你是通過反射來加載嗎? – 2012-07-10 11:04:06

+1

嘗試http://stackoverflow.com/questions/1087794/c-sharp-load-a-dll-file-and-access-methods-from-class-within – 2012-07-10 11:05:05

+0

你得到什麼錯誤?你確定這是因爲這些文件夾? – joocer 2012-07-10 12:58:34

回答

0

嘗試增加這對您的配置文件:

<?xml version="1.0"?> 
    <configuration> 
     <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <probing privatePath="FolderName;OtherFolderName"/> 
     </assemblyBinding> 
     </runtime> 
    </configuration> 

這些文件夾必須是你的應用程序目錄的子目錄。

+0

我能夠通過在LoadFrom中指定路徑加載c#dll,但無法加載C DLL(由C#Dll加載)。如果我在應用程序中嘗試LoadLibrary,我可以加載C#和C DLL,因此SetDll目錄工作正常。如果我把所有的DLL放在當前文件夾中,那麼應用程序運行良好。 探測標籤只加載C#的DLL,但無法加載其他文件夾的依賴關係。在這種情況下,它是C DLL。 – 2012-07-11 04:32:15