Mögliches Duplikat:
Wie wird die Plugin-Assembly nach AppDomain.Unload(domain) gelöscht?
Ich kämpfe mit einem Problem beim Laden einer Assembly in einer temporären AppDomain, um deren GetUsedReferences-Eigenschaft zu lesen. Sobald ich das getan habe, rufe ich AppDomain.Unload(tempDomain) auf und versuche dann, mein Chaos zu beseitigen, indem ich die Dateien lösche. Das schlägt fehl, weil die Datei gesperrt ist. Ich habe die temporäre Domäne jedoch entladen! Ich bin für jede Idee oder jeden Vorschlag dankbar. Hier ist ein Teil meines Codes:
//I already have btyes for the .dll and the .pdb from the actual files
AppDomainSetup domainSetup = new AppDomainSetup();
domainSetup.ApplicationBase = Environment.CurrentDirectory;
domainSetup.ShadowCopyFiles = "true";
domainSetup.CachePath = Environment.CurrentDirectory;
AppDomain tempAppDomain = AppDomain.CreateDomain("TempAppDomain", AppDomain.CurrentDomain.Evidence, domainSetup);
//Load up the temp assembly and do stuff
Assembly projectAssembly = tempAppDomain.Load(assemblyFileBuffer, symbolsFileBuffer);
//Then I'm trying to clean up
AppDomain.Unload(tempAppDomain);
tempAppDomain = null;
File.Delete(tempAssemblyFile); //I even try to force GC
File.Delete(tempSymbolsFile);
Die Löschvorgänge schlagen jedoch fehl, da die Dateien noch gesperrt sind. Sollten sie nicht freigegeben werden, weil ich die temporäre AppDomain entladen habe?