CSharpCodeProvider.CompileAssemblyFromFile中的最大错误数

时间:2013-06-14 13:03:28

标签: c# runtime-compilation

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

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

这种行为是预料之中的,但是这种“恶意”文件的编译过程非常耗时。

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

是否可以设置这样的限制?

如果可以避免,我真的不想非常小心地检查文件。

1 个答案:

答案 0 :(得分:1)

我不知道是否有CSharpCodeProvider的属性或字段可以控制它,但可能的解决方案是更改您要问的问题 - 如果问题是尝试编译所花费的时间,而不是错误的数量,我的解决方案是在单独的任务上运行CSharpCodeProvider,但如果完成任务需要很长时间就终止任务。

然后您可以提供自己的错误消息:

“你的代码太糟糕了。它不能在不到5分钟的时间内完成编译。” :P

至于安全性,您可以尝试通过Application.Run在单独的AppDomain中运行东西? Dunno您的应用程序有多复杂,但您可以在插入插件的情况下启动主表单的新实例。