Visual Studio (简称VS)提供了暂时中断调试,然后修改代码,接着更新代码就可以实现继续调试运行的功能。但是这个再调试过程中暂时中断修改代码的功能在64位操作系统下无法实现。 这个问题导致64-位上对Revit的二次开发程序的代码修改变的比较麻烦。特别是程序开发过程中,需要反复,就显得更痛苦。
这里我介绍一个办法,能大大减少痛苦,大幅提高工作效率。 :)
通常思路是先退出调试模式,如果你不是采用 在Tools菜单下的Attach to Process...方式开始的调试. 下面是痛苦的过程。
1. Revit会退出
2. 在VS中你可以修改代码
3. 编译程序
4. 重新启动Revit,并加载你的工作模型文件( 反复这个过程特别痛苦,如果模型文件很大,更是。。。)
5. 如果没有使用addin文件的方式,需要使用addinmanager再次加载一次
6. 启动命令,再次开始调试。
高效办法:
使用AddinManager,并且使用Attach to process 这个方式。
顺便说一点AddinManager, 在REvit SDK中可以找到其安装程序。安装后,启动Revit就可以在 add-in- > External Tools 下面发现。在安装到的目录有AddinManager的使用说明,很有帮助。
AddinManager可以加载后立即运行插件中的命令(无需重启动Revit),非常高效方便。 更高效的是,当你对用Addinmanager已经加载的插件的代码修改并编译后,无需再次加载该dll,直接在addinmanager里面运行你的命令,此时运行的已经是你修改代码后的命令了。你无须做任何工作,AddinManager替你代劳了。AddinManager 自动探测是否有更新的dll产生,如果有,AddinManager会把你的插件dll拷贝一份到一个临时目录,并且加载之。这就是为什么再次编译,虽然生成的dll处于同一个位置,系统没有报告文件正在使用,无法覆盖。
好了,赶紧体验下高效办法吧。
注: 我用的是英文VS,请大家你根据你使用的VS语言版本替换下面的一些界面相关的词语。
1. 启动VS, 打开你的工程。 启动Revit,加载你的工作模型
2. 在VS中编写编译你的代码,生成dll。
3. 用AddinManager 加载这个dll。 切记,在使用这个方法时,你不能用addin文件的方式来加载dll。否则编译不成功,因为用Addin文件方式加载的插件dll被Revit实实在在的加载了。VS编译时无法覆盖这个dll。
4. 在Visual Studio 2010/2008 的Tools菜单,点击 Attach To Process...命令。在对话框中选择你需要调试的Revit进程。
5. 确保Attach To 里面写的是 Managed code. (表示对托管代码进行绑定调试)、
6. 点击Attach按钮
7. 在你的代码中设置断点。
8. 在AddinManager里面启动你的命令
9. 运行到断点。你可以看你想看的了。:)
10. 此时想修改一下代码。
11. 点击Debug菜单,再点击Detach All。 (切记不要点击Terminate All)
12. 此时工程退出调试模式,尽情修改你的代码吧!!!
13. 编译工程(猛击Build 菜单下的Build Solution,:))
14. 在Visual Studio 2010/2008 的Tools菜单下,点击 Attach To Process...命令。在对话框中选择你需要调试的Revit进程。
15. 点击Attach按钮
16. 确保你的断点还在
17. 在AddinManager里面再次启动你的命令
18.运行到断点。你可以看你想看的了。:)
反复以上过程,可以反复修改反复调试。
无需重启REvit,无需再打开重复打开rvt文件。这个解决方案会让你每天多1个小时的娱乐和与陪同家人的时间:)
Enjoy it
叶雄进 Joe Ye
Autodesk ADN