aden Sie die Assembly in die neue AppDomain, ohne sie in die übergeordnete AppDomain zu lade

Ich versuche, eine DLL in eine Konsolen-App zu laden, sie dann zu entladen und die Datei vollständig zu löschen. Das Problem, das ich habe, ist, dass das Laden der DLL in einer eigenen AppDomain einen Verweis in der übergeordneten AppDomain erstellt, sodass ich die DLL-Datei nur dann zerstören kann, wenn ich das Programm vollständig heruntergefahren habe. Irgendwelche Gedanken darüber, wie dieser Code funktioniert?

string fileLocation = @"C:\Collector.dll";
AppDomain domain = AppDomain.CreateDomain(fileLocation);
domain.Load(@"Services.Collector");
AppDomain.Unload(domain);

BTW Ich habe diesen Code auch ohne Glück versucht

string fileLocation = @"C:\Collector.dll";
byte[] assemblyFileBuffer = File.ReadAllBytes(fileLocation);

AppDomainSetup domainSetup = new AppDomainSetup();
domainSetup.ApplicationBase = Environment.CurrentDirectory;
domainSetup.ShadowCopyFiles = "true";
domainSetup.CachePath = Environment.CurrentDirectory;
AppDomain tempAppDomain = AppDomain.CreateDomain("Services.Collector", AppDomain.CurrentDomain.Evidence, domainSetup);

//Load up the temp assembly and do stuff 
Assembly projectAssembly = tempAppDomain.Load(assemblyFileBuffer);

//Then I'm trying to clean up 
AppDomain.Unload(tempAppDomain);
tempAppDomain = null;
File.Delete(fileLocation); 

Antworten auf die Frage(4)

Ihre Antwort auf die Frage