0

DLLを動的にロードするにはどうすればよいですか?

提案しないでください:

  1. DLLはすでに作成されており、変更または更新できないため、GACを提案しないでください。
  2. Assembly.LoadFrom(...)この機能はプロジェクトの外部ではなくデバッグで機能するため、ヒントパスを提案しないでください。

そのDLL/exeをプロジェクト外のテストマシンにコピーすると、エラーが表示されます:.dllを読み込めませんでした。

また、MSDNフォーラムで質問をしました。

誰か助けてもらえますか?

ありがとう
Ashish

4

2 に答える 2

2

System.Reflection.Assembly.LoadFile()これには問題なく機能します。

を取得している場合はBadImageFormatException、読み込もうとしているアセンブリが、読み込みを行っているアセンブリと同じプラットフォーム ターゲット (x86 または x64) 用にコンパイルされているかどうかを確認します。

コメントに基づいて更新

.NET 2.0 アセンブリを .NET 4.0 アプリケーションに読み込もうとしていて、アプリケーション構成ファイルに次のように記述しているようです。

<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0" />    
    </startup>
</configuration>

その場合は、構成ファイルが実行可能ファイルと共にターゲット マシンにデプロイされていることを確認してください。たとえば、アプリケーションが呼び出されMyProgram.exeた場合、構成ファイルを呼び出す必要があり、効果を得るには、ターゲット マシンMyProgram.exe.config実行可能ファイルと同じフォルダーにコピーする必要があります。それが存在します。

于 2012-08-13T10:14:29.600 に答える
0

1) loadfrom の代わりに assembly.loadfile 関数を使用してみてください。プロジェクト外でも機能します。2) アセンブリ混合モード エラーが発生した場合は、bin フォルダーで生成された dll と共に xml ファイルをコピーするだけです。xml ファイルには app.config ファイル データが含まれています。app.config ファイルのコードは...

リンクも確認してください... http://social.msdn.microsoft.com/Forums/en/csharpide/thread/99691cc4-27df-48e7-b4aa-377f74109425

于 2012-08-14T06:56:56.697 に答える