Максимальное количество ошибок в CSharpCodeProvider.CompileAssemblyFromFile

Я использую CSharpCodeProvider для компиляции мгновенных плагинов для моего приложения.

В настоящее время можно попытаться скомпилировать файл, который выглядит хорошо, но генерирует много ошибок, например код С#, приклеенный к двоичному файлу. Существует много символов, которые обрабатываются с помощью error CS1056: Unexpected character.

Ожидается такое поведение, но процесс компиляции такого "вредоносного" файла очень трудоемкий.

Одним из решений, которое я считаю разумным, было бы ограничение количества ошибок, после чего возвращается CSharpCodeProvider.CompileAssemblyFromFile.

Можно ли установить такой предел?

На самом деле я не хочу очень внимательно проверять файл, если это возможно.

Ответ 1

Я не знаю, есть ли свойство или поле CSharpCodeProvider, которое может контролировать это, но возможным решением является изменение вопроса, который вы задаете, - если проблема - это время, которое требуется для попытки компиляции, а не количество ошибок, моим решением было бы запустить CSharpCodeProvider в отдельной задаче, но убейте задачу, если она затянется слишком долго.

Затем вы можете указать свое собственное сообщение об ошибке:

"Ваш код слишком плохой, он не может быть скомпилирован менее чем за 5 минут".: P

Что же касается безопасности, вы можете попробовать запустить приложение в отдельном AppDomain через Application.Run? Dunno, насколько сложно ваше приложение, но вы можете запустить новый экземпляр вашей основной формы с вложенным плагином.