1

次のような別のアプリ(app2)をロードするアプリ(app1)があります。

this._appDomain.ExecuteAssembly(assemblyName);

その行を実行すると、次のエラーが発生します。

ファイルまたはアセンブリを読み込めませんでした。

App2にはFooへの参照があります。app1でFooへの参照を追加すると、機能します。問題は、app1がFooを参照したくないということです。App1の主な目的は、ネットワーク共有でapp2の新しいバージョンを検出し、app2をアンロードし、新しいバイナリをコピーしてから、上記の行を使用してapp2を再起動することです。その後、app1に古いFooが含まれている場合、app2は自身の実行ディレクトリでFooの代わりにそれを使用します。

app2のみがFooを参照し、app1がそのエラーなしでapp2をロードするようにするにはどうすればよいですか?

注:シャドウコピーを使用していますが、app1にFooへの参照がある場合に機能します。

appDomainSetup.ShadowCopyFiles   = "true";
4

2 に答える 2

2

この SO の質問を参照してください: How to add folder to assembly search path at runtime in .NET?

または、構成に<codebase>タグを追加して、アセンブリを検索する場所を指定し、app2 の依存関係への参照を追加することもできます。

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="MyAssembly2"  culture="neutral" publicKeyToken="307041694a995978"/>
            <codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>
于 2012-01-06T19:13:32.517 に答える