Visual Studio 2010开发AutoCAD 2012 .net 应用程序调试时断点不起作用

AutoCAD 2012系列产品很快就要正式发布了,对于.net 开发者来说,VS2010无疑是最好用的工具,所以也有好多人在VS2010和AutoCAD 2012 beta版上做开发测试。你在开发时可能会遇到调试断点不起作用的问题。

 如果你是在使用VS2010 基于AutoCAD 2011 及其垂直产品(Map 3D / Civil 3D/ AutoCAD Mechanical / AutoCAD MEP 2011 等等)上做开发,断点调试的问题请参考峻祁连以前的文章:

使用Visual Studio 2010调试断点不起作用的问题解决办法

 如果你是用的AutoCAD 2012系列产品,在按照上面的方法来更改acad.exe.config 就有问题了,可能会引起AutoCAD崩溃。实际在VS2010+ AutoCAD 2012开发调试过程中,发现普通的Class里面的断点是可以跟踪到的,可能是创建自定义的Form做界面是,Form1.cs中的代码断点却不管用。 这怎么办呢?

 经过研究,原来是AutoCAD的纤程(Fiber)捣的鬼。我没写错字,是纤程(Fiber)而不是线程(Thread)。VS2010的调试器和AutoCAD的纤程一起工作时会有问题。解决的办法就是关闭AutoCAD纤程。

在AutoCAD中你通过系统环境变量FIBERWORLD来查看当前纤程是否打开,如果是1,则你可以通过把系统环境变量NEXTFIBERWORD设为0,并且关闭所有文档。这时新建文档时就是纤程关闭状态了,你还可以通过FIBERWORLD变量来查看确认。

关闭Fiber后,在Form中的断点应该就工作正常了。

image

 另外在AutoCAD .NET应用程序中打开新创建推荐使用

Autodesk.Autodesk.ApplicationServices.Application.ShowModalDialog 和Autodesk.Autodesk.ApplicationServices.Application.ShowModelessDialog 方法,否则可能会有些不可预期的问题。

 如果你想重新开启纤程(Fiber),你需要把NEXTFIBERWORD设为1,然后重新启动AutoCAD才能生效。

 Cheers,



PS:
>修改的命令是NEXTFIBERWORLD,原文应该是笔者的笔误。
>关闭纤程后,虽然VS调试可以用,但貌似打开某些DWG图纸会出问题,比如单击保存没反应,模型空间无法操作等。现在是装了两个CAD2012,一个中文的用来浏览文件,一个英文的用来调试。


以上是我从网上搜集到的代码。我试了几天终究不能解决调试问题,要么是整个vs代码不能调试,要么就是不能用F11调试(即进入引用项目调试)。也许是各人的情况不尽相同吧(我的程序是.net3.5,cad是2012)!也许是功夫不负有心人,今天我在尝试以前更改安装文件中acad.exe.config中代码时候,
<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup> 
把配置中红色部分去掉。竟然可以完全调试了。去掉了能用,说明属性为默认值false。
去网上查资料,得出
这个属性的意思是,是否允许指定是否启用 .NET Framework 2.0 版 运行时激活策略,或者是否使用 .NET Framework 4 版 激活策略。
为true的时候;
为所选运行时启用 .NET Framework 2.0 版 运行时激活策略,该策略要将运行时激活技术(如 CorBindToRuntimeEx 功能)绑定到从配置文件选择的运行时,而不是将它们盖在 CLR 版本 2.0 上。 因此,如果从配置文件选择 CLR 版本 4 或更高版本,则使用 .NET Framework 的早期版本创建的混合模式程序集将与所选 CLR 版本一同加载。 设置此值可防止 CLR 版本 1.1 或 2.0 加载到同一进程,有效地禁用进程中的并行功能。
为false的时候;
使用 .NET Framework 4 及更高版本的默认激活策略,即允许旧式运行时激活技术将 CLR 版本 1.1 或 2.0 加载到进程。 设置此值可防止混合模式程序集加载到 .NET Framework 4 或更高版本,除非他们内置有 .NET Framework 4 或更高版本。此值为默认值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值