AutoCAD 2010的二次开发告一段落,现在整理一些开发中遇到的问题。
最早遇到的问题是关于AutoCAD 2010在VS 2010上无法调试。奇怪的是这问题只出现在我同事电脑上,我的电脑一切OK,我暗喜^_^,莫非是人品问题。
开发环境:Windows XP SP3+VS2010+AutoCAD2010
这里主要讨论以下几个问题:
1、AutoCAD 2010在VS 2010上无法命中断点问题;
2、调试AutoCAD 2010在VS 2010 中的实现自定义添加;
3、设置断点,它显示一个空的圆圈,当前不会命中断点,还没有为该文档加载任何符号。
关于问题1,断点不起作用的原因归结为Visual Studio 2010不会选择正确的版本的调试器,在调试时启动了默认的debugger(v4.0),此调试器不会看到针对旧版本的.NET 项目中的断点,但是为了让我们的.NET应用程序能在AutoCAD 2010等上运行,我们需要.NET Framework 2.0( 3.5也是运行在CLR 2.0之上的)。
下面提供三种方法使VS 2010 在这些项目上使用正确的调试器 。哪种解决方案最适合您将取决于您具体的方案(我会倾向于解决方案2,够简单)。
解决方案1
启动AutoCAD2010程序,加载您开发的组件(可以通过写入注册表的方式实现自动加载),然后将它(acad.exe)附加到VS2010中(调试->附加到进程)。需要注意的是选择代码类型默认是自动确定类型的,少数情况自动确定的类型并不一定正确,这时候会出现无法加载符号的情况,即问题3所描述,所以需要我们手动勾选代码类型。
解决方案2
修改AutoCAD的配置文件,这个文件在AutoCAD的安装目录下。打开配置文件(acad.exe.config)如下:
修改配置文件,以便它包含 <supportedRuntime 版本="v2.0.50727" />节点,如下:
解决方案3
把宿主acad.exe文件作为一个已有的项目添加到您的解决方案中,并把debugger设置为v2.0。
- 右键单击Solution Explorer,选择添加->现有项目,浏览到AutoCAD的启动文件Acad.exe
- 右键单击该项目,把它设置为启动项目 设为启动项目
- 打开项目属性对话框
- 设置 调试器类型 为 托管(3.5、3.0、2.0版)
至此,可以正常调试了。
PS:文章截图为VS2012
参考文章:
使用Visual Studio 2010调试断点不起作用的问题解决办法
Hitting breakpoints in .NET Class Libraries while debugging with Visual Studio 2010