C # MAF Активировать AddIn без блокировки DLL - PullRequest
0 голосов
/ 21 марта 2012

Используя System.AddIn, есть ли способ загрузить и активировать AddIn без блокировки файла .dll? Я хочу удалить или переопределить файл, чтобы загрузить новую версию моего AddIn.

Единственный способ разблокировать файл в данный момент - отключить надстройку. Но мне нужно, чтобы он всегда оставался активным для входящих вызовов (Async-сервис, да, кошмар).

Или, может быть, есть другой способ обновить надстройки во время выполнения, и я делаю это неправильно. Я хотел бы знать, какой может быть правильный способ сделать это. Спасибо!

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Как насчет функциональности ShadowCopy класса System.AppDomain?

Я еще не пробовал, но вы можете попробовать следующее:

  1. Создать AppDomainSetup .
  2. В экземпляре AppDomainSetup задайте для ShadowCopyFiles значение true.
  3. В экземпляре AppDomainSetup установите для ShadowCopyFilesDirectories пути к каталогам, которые содержат сборки, которые вы хотите перезаписывать во время выполнения.Это может быть просто каталог, в котором находится сборка надстройки.Вы должны немного поэкспериментировать.
  4. В экземпляре AppDomainSetup установите все остальное в соответствии с вашими потребностями.
  5. Используйте эту перегрузку AppDomain.CreateAppDomain для создания нового домена приложения.
  6. Загрузить надстройку , используя эту перегрузку AddInToken.LoadAddIn

Более подробную информацию о теневом копировании можно найти здесь .Также прочитайте эту ветку на странице System.AddIn Tools и Samples на странице CodePlex.

0 голосов
/ 21 марта 2012

Как вы ожидаете, что после того, как вы загрузите новую версию, хэндовер будет работать?

Похоже, вам нужны две надстройки: одна (которую вы никогда не меняете), чтобы просто принимать и буферизовать входящие вызовы, и другая (которую вы изменяете), чтобы выполнять работу по обработке этих вызовов. Затем вы можете закрыть и обновить надстройку обработки. Тем временем надстройка для приема сообщений может буферизовать асинхронные вызовы до тех пор, пока не будет запущена новая версия надстройки обработки.

...