CSharpCodeProvider.CompileAssemblyFromFile中的最大错误量

本文关键字:大错误 CompileAssemblyFromFile CSharpCodeProvider | 更新日期: 2023-09-27 18:18:19

我使用CSharpCodeProvider为我的应用程序编译即时插件。

现在有可能尝试编译一个文件,看起来不错,但会产生许多错误,例如c#代码粘在二进制文件中。有许多字符,用error CS1056: Unexpected character处理。

这种行为是意料之中的,但是编译这样一个"恶意"文件的过程是非常耗时的。

我发现一个合理的解决方案是限制错误的数量,之后CSharpCodeProvider.CompileAssemblyFromFile返回。

有可能设定这样的限制吗?

一开始我并不想非常仔细地检查文件,如果可能的话。

CSharpCodeProvider.CompileAssemblyFromFile中的最大错误量

我不知道是否有CSharpCodeProvider的属性或字段可以控制这一点,但一个可能的解决方案是改变你问的问题-如果问题是尝试编译所需的时间,而不是错误的数量,我的解决方案是在单独的任务上运行CSharpCodeProvider,但杀死任务,如果需要太长时间才能完成。

然后你可以提供你自己的错误信息:

"你的代码太糟糕了。"它不可能在5分钟内编译完成。": P

至于安全性,你可以尝试在一个单独的AppDomain中通过Application.Run?不知道你的应用程序有多复杂,但你可以在主表单的新实例中注入插件。