как удалить pluginassembly после AppDomain. Разгрузитесь (домен)

17
задан starblue 25 April 2009 в 10:05
поделиться

4 ответа

Я думаю, что у меня есть ответ! ответ от Øyvind Skaar не будет работать, если требуется удалить загруженный блок.

вместо

using (FileStream dll = File.OpenRead(path))
{
   fileContent = new byte[dll.Length];
   dll.Read(fileContent, 0, (int)dll.Length);
}
Assembly assembly = appDomain.Load(fileContent);

необходимо использовать

byte[] b = File.ReadAllBytes(assemblyName);
assembly = Assembly.Load(b);

наилучшие пожелания

22
ответ дан 30 November 2019 в 11:23
поделиться

При загрузке блока как потока он должен работать.

byte[] fileContent;
string path = "../../../test/bin/Debug/test.dll"; //Path to plugin assembly
using (FileStream dll = File.OpenRead(path))
{
   fileContent = new byte[dll.Length];
   dll.Read(fileContent, 0, (int)dll.Length);
}
Assembly assembly = appDomain.Load(fileContent);
File.Delete(path);
4
ответ дан 30 November 2019 в 11:23
поделиться

То, что мы делаем, должно иметь одну папку, за которой наблюдают за блоками. Когда блок добавляется, копии приложений он к временному каталогу дает ему уникальное имя файла и загружает его оттуда.

, Когда приложение сначала загружается, оно пытается убрать временный каталог.

я не думаю, что непосредственно отвечает на Ваш вопрос, но он, вероятно, решает Вашу проблему.

3
ответ дан 30 November 2019 в 11:23
поделиться

Я знаю, что эта ветка совсем мертва , но в настоящее время я работаю над этим и только что получил ответ (в 1:30 утра ...)

AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
AppDomain app = AppDomain.CreateDomain("YaCsi", null, setup);
app.DoCallBack(LoaderCallback);
AppDomain.Unload(app);
File.Delete("__YaCsi_Test01.dll");

static void LoaderCallback()
{
    byte[] raw = File.ReadAllBytes("__YaCsi_Test01.dll");
    Assembly yacsi = Assembly.Load(raw);
    ((IScript)yacsi.CreateInstance("Script")).Go();
}

И на самом деле никаких исключений не возникает !!! Надеюсь, кто-нибудь прочитает это и это отвечу там на вопрос!

8
ответ дан 30 November 2019 в 11:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: