Кто-нибудь знает, как избавиться от надстроек, созданных с помощью System.AddIn. Все примеры в Интернете, кажется, показывают, как легко загружать и использовать надстройки, но ни один из них не показывает, как избавиться от них, когда они живы. Моя проблема в том, что я создаю надстройки в новых процессах, и эти процессы никогда не собираются сборщиком мусора, что очевидно является проблемой.
Ниже приведен пример кода, иллюстрирующий мою проблему. Предположим, что пользователь никогда не выходит из этого приложения, а вместо этого создает множество экземпляров ICalculator. Как вообще избавиться от этих дополнительных процессов?
static void Main(string[] args)
{
string addInRoot = GetExecutingDirectory();
// Update the cache files of the pipeline segments and add-ins
string[] warnings = AddInStore.Update(addInRoot);
// search for add-ins of type ICalculator
Collection<AddInToken> tokens = AddInStore.FindAddIns(typeof(ICalculatorHost), addInRoot);
string line = Console.ReadLine();
while (true)
{
AddInToken calcToken = ChooseCalculator(tokens);
AddInProcess addInProcess = new AddInProcess();
ICalculatorHost calc = calcToken.Activate<ICalculatorHost>(addInProcess, AddInSecurityLevel.Internet);
// run the add-in
RunCalculator(calc);
}
}