6

私は dotnet を初めてc使用していDllImportます。アプリケーションの場所とは異なるフォルダーにすべてのdllを配置したい。環境変数を変更したくありません。だから私はsetdlldirectoryAPIを使用し、C#アセンブリを介してロードしAssembly.Loadfrom(..)ました。SetdllDirectoryの値を確認して、正常に動作していることを確認しましたGetDllDirectory(..)。しかし、そのフォルダーからC#dllもc dllもロードしていません。C#でパスを指定することで、dllをロードできますAssembly.Loadfrom。しかし、c dllをロードできません。

前もって感謝します!!

4

2 に答える 2

15

次のコードを使用して、実行時に PATH 環境変数にディレクトリ パスを追加することをお勧めします。

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

そうすれば、変更は実行中のプロセスにのみ影響し、プロセスが終了すると破棄されます。

于 2012-07-10T17:06:33.350 に答える
0

LoadFromのドキュメントを見ると、次のように書かれていることがわかります: assemblyFile のネイティブ イメージが存在する場合、それは使用されません。アセンブリをドメイン ニュートラルとして読み込むことはできません。

DLL ディレクトリを EXE のパスに追加する必要があると思います。

于 2012-07-10T16:22:16.410 に答える