有没有办法只缓存程序集而不运行

功能建议 · 28 次浏览
FaniX 创建于 3天12小时前

C#代码的编译需要消耗一定时间,所以每次初次运行的时候都会在运行C#脚本那一步卡一会,在一些强交互的流程下会影响使用体验。

我想在动作开始的时候检测一段C#代码是否已有缓存,如果没有的话就编译和缓存C#代码、提示正在编译的消息,但不运行(不执行Exec函数)。当正式用运行的时候直接使用缓存的内容,避免编译耗时对交互流程的影响。

不知道能不能实现?


回复内容
CL 3天9小时前
#1

选择一下缓存程序集,然后重启一下quicker,右键调试运行,看看c#步骤需要多长时间? 这时候应该只是加载已有程序集,理论上应该比较快的。

FaniX 回复 CL 3天4小时前 :

如果是普通模式运行C#脚本,不管是否勾选“允许缓存程序集”,第二次运行同一脚本的时候都是比较快的,只是初次运行时比较慢(应该是因为需要编译)。由于编译过程没有提示,所以初次运行动作的时候到了C#脚本这一步就会卡一下,不太流畅。因此我希望能够在动作的开头编译和缓存动作内需要用到的C#代码(不执行Exec函数)并显示消息提示用户需要等待一会。不过目前好像没有只缓存代码但不执行Exec函数的办法,也无法判断代码是否已经编译过(如果编译过就不需要提示消息)。

运行C#脚本的步骤有一个生成程序集的选项,但是那个需要设置命名空间,而且给的示例里好像没有Exec函数,直接贴运行脚本的代码也是无法通过编译的。

CL 回复 FaniX 3天1小时前 :

目前没这个选项。 我感觉可能最新的windows里修改了什么机制,CodeDOM编译速度不如Roslyn了,后面再研究下试试了。

回复主贴