Кто-нибудь знает, как избавиться от надстроек, созданных с помощью 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);
}
}