У меня есть дочерний домен приложений, в который я хочу загружать некоторые библиотеки dll при запуске и выпускать файлы, чтобы любой мог их удалить.
При запуске я делаю
Loader al = (Loader)domain.CreateInstanceAndUnwrap(
typeof(Loader).Assembly.FullName,
typeof(Loader).FullName);
al.Load(path)
для следующего класса.
class Loader : MarshalByRefObject
{
internal void Load(string path)
{
Assembly assembly;
try
{
assembly = Assembly.Load(File.ReadAllBytes(path));
}
catch (Exception) { return; }
}
internal UseType(string fullyQualifiedTypeName)
{
Type userType = Type.GetType(fullyQualifiedTypeName);
}
}
Позже я вызываю UseType
и получаю правильный тип, но больше не могу удалить файл, потому что это как если бы дочерний домен приложения заблокировал dll.
По сути, я хочу добиться кэширования файла сборки при запуске, а затем использовать вызовы GetType
, чтобы выпустить действительный файл DLL.
Действительно ли возможно достичь чего-то подобного?