Pio*_*fer 12 c# runtime-compilation
我CSharpCodeProvider用来编译我的应用程序的即时插件.
现在可以尝试编译一个看起来不错的文件,但会生成许多错误,例如粘贴二进制文件的C#代码.有许多字符,用处理error CS1056: Unexpected character.
这种行为是预期的,但是这种"恶意"文件的编译过程非常耗时.
我认为合理的一个解决方案是限制错误的数量,之后CSharpCodeProvider.CompileAssemblyFromFile返回.
是否可以设置这样的限制?
如果可以避免的话,我真的不想在第一时间仔细检查文件.
我不知道 CSharpCodeProvider 是否有属性或字段可以控制此问题,但可能的解决方案是更改您提出的问题 - 如果问题是尝试编译所需的时间,而不是错误的数量,我的解决方案是在单独的任务上运行 CSharpCodeProvider,但如果完成时间太长则终止该任务。
然后您可以提供自己的错误消息:
“你的代码太糟糕了,不到5分钟就编译不完。” :P
至于安全性,您可以尝试通过 Application.Run 在单独的 AppDomain 中运行东西?不知道您的应用程序有多复杂,但您可能会使用注入的插件启动主表单的新实例。
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |