- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我使用 CSharpCodeProvider
为我的应用编译即时插件。
现在可以尝试编译一个文件,它看起来不错,但会产生很多错误,例如 C# 代码与二进制文件粘在一起。有许多字符被处理为 error CS1056: Unexpected character
。
这种行为是意料之中的,但是这种“恶意”文件的编译过程非常耗时。
我认为合理的一个解决方案是限制错误的数量,之后 CSharpCodeProvider.CompileAssemblyFromFile
返回。
是否可以设置这样的限制?
如果可以避免的话,我一开始真的不想非常仔细地检查文件。
最佳答案
我不知道是否有 CSharpCodeProvider 的属性或字段可以控制这个,但一个可能的解决方案是改变你问的问题 - 如果问题是尝试编译所花费的时间,而不是错误数量,我的解决方案是在单独的任务上运行 CSharpCodeProvider,但如果完成时间太长,则终止该任务。
然后您可以提供自己的错误信息:
“你的代码太烂了,不到5分钟就编译不出来了。” :P
至于安全性,您可以尝试通过 Application.Run 在单独的 AppDomain 中运行东西吗?不知道您的应用程序有多复杂,但您可以使用注入(inject)的插件启动主窗体的新实例。
关于c# - CSharpCodeProvider.CompileAssemblyFromFile 中的最大错误数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17109140/
我使用 CSharpCodeProvider 为我的应用编译即时插件。 现在可以尝试编译一个文件,它看起来不错,但会产生很多错误,例如 C# 代码与二进制文件粘在一起。有许多字符被处理为 error
我曾尝试用文件编译代码,但它有一些错误。错误:1.global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject
我是一名优秀的程序员,十分优秀!