ビジネス ロジックが実行時に読み込まれる dll に配置されるように、バックエンドを設計しました。ShadowCopyFiles = true とファイル システム モニタリングを使用すると、ホスト プロセスを再起動せずにビジネス ロジックを変更できます。
ここまでは順調ですね...
ホスト appdomain A と子の 1 つ B を呼び出しましょう。
残念ながら、B によって参照されているが A によって参照されていないアセンブリ C に変更を加えた場合、これらの変更は B が再ロードされたときに反映されません。AがC自体をロードするためだと思います。A が C を読み込まないようにするには、どのような手順を踏む必要がありますか?
これは、A が B をロードするために使用するコードです。
AppDomainSetup appDomainSetup = new AppDomainSetup();
appDomainSetup.CachePath = ServiceDLLPath + @"\Shadow";
appDomainSetup.ShadowCopyFiles = "true";
ad = AppDomain.CreateDomain(assemblyName, null, appDomainSetup);
ad.InitializeLifetimeService();
try
{
service = (IService)ad.CreateInstanceFromAndUnwrap(assemblyName,
"AppName.Services." + typeName);
service.Start();
}
catch (Exception e)
{
LogManager.Log("AppDomain load failed: " + e.Message);
return false;
}