Я пытаюсь изолировать потенциально вредоносный код, выполняя его в плагине MAF, запущенном в его собственном процессе:
var x = token.Activate<Ix>(new AddInProcess(), AddInSecurityLevel.Internet);
Похоже, это работает хорошо, за исключением того, что при обработке исключения StackOverflowException отображается диалоговое окно: «AddInProcess.exe перестал работать». Это очень затрудняет тестирование
[TestMethod]
public void TestStackOverflow() {
var host = new Host(Environment.CurrentDirectory
+ "/../../../build/pipeline");
host.Run("foo");
host.Tick();
Thread.Sleep(1000);
host.Monitors.Count.Should().Be(0);
host.Shutdown();
}
Если я нажму кнопку «закрыть» до того, как истечет режим сна, тест пройден успешно, в противном случае он не пройден. Это означает, что процесс не завершается, пока не будет нажата кнопка «Закрыть». Учитывая, что я ожидаю завершения процесса, как я могу убедиться, что это происходит без вызова этого диалога? Я попытался настроить свою ОС на «никогда не проверять решения», но диалог все равно появляется. Установка «автоматической проверки решений» позволяет избежать диалога, но занимает до десяти секунд, что нежелательно ... и я бы предпочел избегать настройки ОС.