AutoCAD.net二次开发netload不能卸载问题解决方法
使用C#.net或者VB.net对AutoCAD进行二次开发的同学们都知道,运行程序需要在AutoCAD里用netload命令加载编译好的dll文件。这时候如果程序不满意,需要修改之后再次生成,就会发现dll被AutoCAD占用,不可写。只能关闭AutoCAD才能让dll文件变成可写,才能再次生成。然后打开AutoCAD再次用netload加载dll。
每一个程序都是需要调试和修改很多次的,打开一次cad需要一定的时间,特别是版本较高,电脑又比较渣的时候。这让编程过程浪费了大量时间。所以每个AutoCAD.net编程者都试图要寻找在AutoCAD中卸载dll的方法。本人作为一个初学者也是如此。
昨天在明经通道论坛浏览,无意间发现有人在讨论这个问题。某位名叫“brbright”的网友回了这么一段话:
不过并没有说更具体的方法步骤。我决定用他的这两句代码试一下。
首先,我想到要运行这两句代码,我们还是需要一个类库dll在AutoCAD里运行的,所以说,思路就是把这个代码做成一个dll在cad中加载,然后再用这段代码中定义的命令加载我们真正要用的那个程序的dll。
好了,我们新建一个项目。
写入如下代码:
定义一个netloadx命令。
之后生成,在AutoCAD中用netload加载这个netload.dll,然后运行netloadx加载我的程序zhy.dll。
一切正常。
之后我修改我的zhy程序,然后生成程序。显示生成成功,说明zhy.dll未被占用:
到这里我很兴奋,看来马上要成功了。
在AutoCAD里再次使用netloadx加载zhy.dll。AutoCAD中显示如下的提示,加载未成功。
这是什么原因呢?
我把这段提示用翻译软件大概翻译了一下,又到百度上查了一下。大概的意思是版本问题。我想可能是我新生成的zhy.dll和原来的版本相同,AutoCAD认为已经加载了这个版本的程序集,就不能再加载同样的一个版本了。所以,我在visual studio里把程序的版本修改了一下:
这里原来是1.0.0.0,我修改成1.1.0.0,之后再次生成,生成成功。在AutoCAD里再次用netloadx加载zhy.dll。加载成功!
看起来确实是版本问题。
所以说每次生成之前,修改一下程序的版本就可以了。
不过这样似乎还是有点麻烦。所以我想到了放版本信息的那个文件。是否可以修改一下,能够自动改变版本。
这个文件在这里:
这个文件里写了版本信息:
注意上面的那段注释。我想假如用注释上说的:也可以使用……默认值,方法是……使用“*”,那么是不是AutoCAD就不会再注意版本问题了呢?试一下。
于是我使用注释里写的另一种版本写法把这段代码改成这样:
修改程序,再次生成,生成成功,在AutoCAD中用netloadx再次加载zhy.dll,加载成功!
再次修改程序,再次生成程序,再次用netloadx加载zhy.dll,加载成功!
我反复试了很多次,每一次都加载成功!完美!
好了,以上!
PS:感谢明经通道论坛!特别感谢明经通道论坛的这位“brbright”大神!
本文由【QQ307501169伤脑筋】编写,转载请注明出处!
原文链接: