-1

次の展開構造があります。

deployment/
    Service1.dll
    Service2.dll
    Service3.dll
    Common.dll
    Host.exe

起動時に、3 つのサービス dll が一時的な場所にコピーされ、私Assembly.LoadFromはそれらをそのように明示的にロードするために使用します。私のコードは変更を探し、deploymentこれらのアセンブリは独自の AppDomain に読み込まれるため、それらをシャットダウンし、新しいバージョンをコピーして、再度起動することができます。これはうまくいきます。

私が抱えている問題は、これら 3 つのサービスすべてが依存していることですCommon.dll(メインのホスト実行可能ファイルは依存していませ)。起動時に、この一般的な dll一時的な場所にコピーされますが、ホストは、deployment一時的な場所ではなく 1 つを解決しています。

使用してみましAppDomainSetup.PrivateBinPathたが、一時的な場所を指していましたが、展開フォルダー内の場所に解決されています。

展開フォルダーで解決しようとする前に、CLR が最初に一時フォルダーを参照するように強制する方法はありますか(他の依存関係はありますが、いわば「シャドウ」する必要はありません)。

編集:明確にするために、common.dllが変更された場合、すべてのサービスが最初にアンロードされ、共通の dll への依存関係が解放されてから、3 つすべてがコピーされて再起動されます。

4

3 に答える 3

0

AppDomain をセットアップするときに、 たとえばApplicationBaseを設定しようとしましたか?appDomain.SetupInformation.ApplicationBase = @"C:\ShadowCopyTest\"

于 2013-06-27T23:17:26.730 に答える