13

アプリケーションのDLLをサブフォルダー内に配置する必要があります。app.configを介してこのサブフォルダーを設定することができます。

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="Libs"/>
    </assemblyBinding>
  </runtime>

しかし、いくつかの理由で、この場合は.configファイルを使用したくありません。アプリケーションコードから直接プロービングパスを設定することは可能ですか?DLLは常にこのフォルダ内にあると確信しています。

何か案は?

4

2 に答える 2

14

プローブ パスは、プライマリ アプリ ドメインの AppDomainSetup によって定義されます。既定の CLR ホストでは、コードの実行が開始される前にその AD が自動的に作成されます。セットアップを構成する唯一の方法は、.config ファイルを使用することです。exe と同じ名前にする必要があります。その後は凍結され、コードに加えた変更は効果がありません。

回避策は、独自の AD を作成して、そのセットアップを変更したり、AppDomain.AssemblyResolve イベントを実装したりできるようにすることです。どちらも、単純なソリューション (.config ファイルまたはアセンブリを適切なディレクトリに保持するだけ) と比較して有利ではありません。うーん。

于 2011-03-07T15:17:30.477 に答える
4

AppDomain.CurrentDomain.AssemblyResolveにサブスクライブして、ハンドラー内の特定の場所を確認するだけです...

于 2011-03-07T13:44:59.627 に答える