相信不少读者使用Addins开发方式在Mstn(或其他基于Mstn的产品)上做二次开发时,都会遇到一个同样的烦恼,那就是一旦在Mstn中加载我们编译好的Addins程序集后,就无法卸载。如果我们对源代码做了修改,想要看一下修改后的运行效果,此时就得退出Mstn,然后重启Mstn再去加载重新编译后的程序集。这大大增加了我们调试程序排查错误原因的时间,不过在使用了本文介绍的VS热重载(Hot Reload)功能后,这个问题将迎刃而解。
VS热重载是VS2019(2019 16.11)新增加的功能,使用这个功能我们可以在调试模式下直接对C#代码进行修改,修改完成后不需要停止调试就可以在当前被调试运行的进程中查看运行效果。接下来我们看一下具体如何操作。
1.选择VS菜单项Debug>Attach to Process...,在弹出的对话框中选择我们要调试的Mstn进程(注意“Attach to:”要选择“Managed (.NET 4.x)”,选择方法是点击后面的“Select...”按钮后在弹出的对话框中选择),如下图所示。双击此条目,或单击右下角“Attach”按钮。
2.在我们的命令函数中在需要暂停执行的代码行处插入断点,然后在Mstn的keyin命令对话框中加载我们的程序集,并执行其提供的keyin命令。此时程序会运行到我们的断点处,如下图所示
4.此时我们可以对当前代码进行修改,例如在32行后再增加其他语句,或者也可以直接对32行进行修改,如下所示:
5.保存当前修改,并单击如下图所示的按钮后,继续执行(可按下F10单步执行或F5连续运行)我们的代码。
在Mstn中会看到我们修改后的运行效果,连续弹出两个对话框且对话框中显示的内容也是我们修改后的内容。可以看到我们在调试模式下直接修改当前正在运行的代码,并且继续执行后运行的也是我们修改后的代码,并不需要重新启动Mstn以及重新加载我们的程序集,大大减少了我们调试程序排查错误的时间。当然热重载也不意味着我们可以随意更改代码,有些更改目前还不支持,例如给Class类添加方法,字段,构造函数等,详细内容可到微软官网查询。