让你的AutoCad支持高版本.Net
本帖最后由 雪山飞狐_lzh 于 2015-4-8 12:05 编辑现在.Net的发展迅猛,但是低版本AutoCad开发还要使用对应版本的.Net
这很不爽
为什么不能用扩展属性
为什么不能用Linq
为什么不能用dynamic
。。。
下面的方案可以解决这个问题
以AutoCad2008,VS2010,XP系统为例
找到AutoCad的安装目录
在acad.exe.config文件(没有就新建一个)中键入
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku = ".NETFramework,Version=v4.0"/>
</startup>
</configuration>
然后保存
在VS中建立一个.Net4.0的类库
引用相应的mgd.dll
然后键入下面的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
namespace TlsCad.Test
{
public class Commands
{
public void Test1()
{
dynamic db = Application.DocumentManager.MdiActiveDocument;
dynamic ed = db.Editor;
ed.WriteMessage("OK!");
}
}
}
运行结果:
AutoCAD 菜单实用程序已加载。
命令: COMMANDLINE
命令: netload
命令: t_1
OK!
gxlx2007 发表于 2015-4-9 16:40
有版本转换器,一切都OK
哪里有版本转换器 好东西,你值得拥有!!!! 先来踩点,支持 群里赶来支持狐哥 版主呀,搞个lisp的插件可好? 唯一的问题是,如果cad支持的.Net框架不是.net4.0,似乎不能调试。。。
只能在高版本Cad中调试
应该有办法解决吧,汗 看得不是很明白,
还有一个问题,就是13版以前的CAD和13版(含)以后的CAD,其基本类库的名字换掉了,很郁闷 Autocad低版本使用的.net2.0框架.正常情况无法netload高版本dll.
上面的配置是让cad运行在4.o运行库以加载dll 看来用.net开发,版本问题也是比较麻烦
用vba/vb开发,版本问题基本不是问题,可偏偏不是autodesk主要发展方向。。。。 有版本转换器,一切都OK 版本转换器可不能直接转dll吧 本帖最后由 雪山飞狐_lzh 于 2015-4-9 20:06 编辑
今天测试了一下 可以用Auto2012调试 2008不能调试(?),但可以在这两个版本使用同一个。Net4.0dll
也就是说 现在应该不用在意Dll的版本号,全用最新的(要通用估计还得是4.0,因为XP 最高到4.0)