雪山飞狐_lzh 发表于 2015-4-8 11:14:51

让你的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!


zxk 发表于 2020-10-2 14:43:44

gxlx2007 发表于 2015-4-9 16:40
有版本转换器,一切都OK

哪里有版本转换器

qq1254582201 发表于 2020-4-21 15:03:53

好东西,你值得拥有!!!!

靜偌止水 发表于 2020-9-18 14:24:43

先来踩点,支持

zhengjian211 发表于 2015-4-8 11:35:18

群里赶来支持狐哥

自贡黄明儒 发表于 2015-4-8 11:41:06

版主呀,搞个lisp的插件可好?

雪山飞狐_lzh 发表于 2015-4-8 12:01:06

唯一的问题是,如果cad支持的.Net框架不是.net4.0,似乎不能调试。。。
只能在高版本Cad中调试
应该有办法解决吧,汗

bencat9527 发表于 2015-4-8 18:27:43

看得不是很明白,
还有一个问题,就是13版以前的CAD和13版(含)以后的CAD,其基本类库的名字换掉了,很郁闷

雪山飞狐_lzh 发表于 2015-4-8 18:41:26

Autocad低版本使用的.net2.0框架.正常情况无法netload高版本dll.
上面的配置是让cad运行在4.o运行库以加载dll

zzyong00 发表于 2015-4-8 22:39:17

看来用.net开发,版本问题也是比较麻烦
用vba/vb开发,版本问题基本不是问题,可偏偏不是autodesk主要发展方向。。。。

gxlx2007 发表于 2015-4-9 16:40:40

有版本转换器,一切都OK

雪山飞狐_lzh 发表于 2015-4-9 17:51:22

版本转换器可不能直接转dll吧

雪山飞狐_lzh 发表于 2015-4-9 20:03:43

本帖最后由 雪山飞狐_lzh 于 2015-4-9 20:06 编辑

今天测试了一下 可以用Auto2012调试 2008不能调试(?),但可以在这两个版本使用同一个。Net4.0dll
也就是说 现在应该不用在意Dll的版本号,全用最新的(要通用估计还得是4.0,因为XP 最高到4.0)
页: [1] 2 3
查看完整版本: 让你的AutoCad支持高版本.Net