MEF и ShadowCopying DLL, чтобы я мог перезаписывать их во время выполнения.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 MEF и ShadowCopying DLL, чтобы я мог перезаписывать их во время выполнения.

Сообщение Anonymous »

Я пытаюсь остановить блокировку DLL моего приложения в каталоге плагинов MEF, чтобы иметь возможность перезаписывать сборки во время выполнения (обратите внимание, что на самом деле я не пытаюсь заставить MEF перезагружать их на лету, при следующем запуске приложения это нормально , я просто не хочу останавливать приложение для копирования)

Я пытаюсь сделать это, создав домен приложения с теневым копированием для моих загруженных mef сборок как ниже:

Код: Выделить всё

[Serializable]
public class Composer:IComposer
{
private readonly string _pluginPath;
public Composer(IConfigurePluginDirectory pluginDirectoryConfig)
{
_pluginPath = pluginDirectoryConfig.Path;
var setup = new AppDomainSetup();
setup.ShadowCopyFiles = "true"; // really??? is bool not good enough for you?
var appDomain = AppDomain.CreateDomain(AppDomain.CurrentDomain.FriendlyName + "_PluginDomain", AppDomain.CurrentDomain.Evidence, setup);

appDomain.DoCallBack(new CrossAppDomainDelegate(DoWorkInShadowCopiedDomain));
}

private void DoWorkInShadowCopiedDomain()
{
// This work will happen in the shadow copied AppDomain.

var catalog = new AggregateCatalog();
var dc = new DirectoryCatalog(_pluginPath);
catalog.Catalogs.Add(dc);
Container = new CompositionContainer(catalog);
}

public CompositionContainer Container { get; private set; }
}
а затем получить доступ к моему каталогу компонентов MEF через CompositionContainer в этом классе. Однако контейнер композиции, похоже, инициализируется только внутри домена теневого копирования (что имеет смысл), и это означает, что в моем домене приложения он равен нулю. Мне просто интересно, есть ли лучший способ сделать это или какой-то способ междоменного запроса, чтобы получить мои компоненты MEF

Подробнее здесь: https://stackoverflow.com/questions/125 ... at-runtime
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как мне запретить пользователям snmp4j USM перезаписывать во время выполнения?
    Гость » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Гость
  • Прекратить перезаписывать адреса в векторе?
    Гость » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Гость
  • Как запретить AVPlayer перезаписывать статус воспроизведения MPNowPlayingInfoCenter?
    Anonymous » » в форуме IOS
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Будет ли модуль DotEnv в структуре Laravel перезаписывать существующую переменную ENV в моей системе?
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Добавить правило перезаписывать пользовательский тип поста
    Anonymous » » в форуме Php
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»