【转载】AutoCAD.net二次开发netload不能卸载问题解决方法
本帖最后由 qq1254582201 于 2021-4-6 20:17 编辑AutoCAD.net二次开发netload不能卸载问题解决方法
AutoCAD.net二次开发netload不能卸载问题解决方法使用C#.net或者VB.net对AutoCAD进行二次开发的同学们都知道,运行程序需要在AutoCAD里用netload命令加载编译好的dll文件。这时候如果程序不满意,需要修改之后再次生成,就会发现dll被AutoCAD占用,不可写。只能关闭AutoCAD才能让dll文件变成可写,才能再次生成。然后打开AutoCAD再次用netload加载dll。每一个程序都是需要调试和修改很多次的,打开一次cad需要一定的时间,特别是版本较高,电脑又比较渣的时候。这让编程过程浪费了大量时间。所以每个AutoCAD.net编程者都试图要寻找在AutoCAD中卸载dll的方法。本人作为一个初学者也是如此。昨天在明经通道论坛浏览,无意间发现有人在讨论这个问题。某位名叫“brbright”的网友回了这么一段话:http://a3.qpic.cn/psb?/V12Xyae12qufoH/iu.RY9JPd9jyWD905LWJId*vx8IqitIwEr0MjtfrBnw!/b/dAYBAAAAAAAA&ek=1&kp=1&pt=0&bo=KQJSAQAAAAADAF0!&tl=1&su=0140332321&tm=1617710400&sce=0-12-12&rf=2-9不过并没有说更具体的方法步骤。我决定用他的这两句代码试一下。首先,我想到要运行这两句代码,我们还是需要一个类库dll在AutoCAD里运行的,所以说,思路就是把这个代码做成一个dll在cad中加载,然后再用这段代码中定义的命令加载我们真正要用的那个程序的dll。好了,我们新建一个项目。http://a4.qpic.cn/psb?/V12Xyae12qufoH/2fty0TRszVtpcHS3ih7pjREE.pvTnOytsdDSnoOP1sI!/b/dMcAAAAAAAAA&ek=1&kp=1&pt=0&bo=JgEfAQAAAAADABw!&tl=1&su=078382337&tm=1617710400&sce=0-12-12&rf=2-9写入如下代码:http://a2.qpic.cn/psb?/V12Xyae12qufoH/azVOwE67TgptE0bvCSUtoOqM.Vfl5dZpfqqhMontKnQ!/b/dAUBAAAAAAAA&ek=1&kp=1&pt=0&bo=HwLUAQAAAAADAO0!&tl=1&su=0244803921&tm=1617710400&sce=0-12-12&rf=2-9定义一个netloadx命令。之后生成,在AutoCAD中用netload加载这个netload.dll,然后运行netloadx加载我的程序zhy.dll。一切正常。之后我修改我的zhy程序,然后生成程序。显示生成成功,说明zhy.dll未被占用:http://a3.qpic.cn/psb?/V12Xyae12qufoH/dgFUYNElEqlglcT9k*YWbXBnJBbvBMl35QQ2fhLG9ms!/b/dMYAAAAAAAAA&ek=1&kp=1&pt=0&bo=KgKIAAAAAAADAIU!&tl=1&su=0163187825&tm=1617710400&sce=0-12-12&rf=2-9到这里我很兴奋,看来马上要成功了。在AutoCAD里再次使用netloadx加载zhy.dll。AutoCAD中显示如下的提示,加载未成功。http://a3.qpic.cn/psb?/V12Xyae12qufoH/PSmmuFQOlmKshgs85xxh85zr.rGY4bLisw3EUPQBc1I!/b/dAYBAAAAAAAA&ek=1&kp=1&pt=0&bo=HAFSAQAAAAADAGs!&tl=1&su=061331009&tm=1617710400&sce=0-12-12&rf=2-9这是什么原因呢?我把这段提示用翻译软件大概翻译了一下,又到百度上查了一下。大概的意思是版本问题。我想可能是我新生成的zhy.dll和原来的版本相同,AutoCAD认为已经加载了这个版本的程序集,就不能再加载同样的一个版本了。所以,我在visual studio里把程序的版本修改了一下:http://a1.qpic.cn/psb?/V12Xyae12qufoH/46yNJ4Iam0avEBCCCnbAAqcuISWdv38mEVWSrp6*Sdk!/b/dAgBAAAAAAAA&ek=1&kp=1&pt=0&bo=KgLYAQAAAAADANQ!&tl=1&su=095450961&tm=1617710400&sce=0-12-12&rf=2-9这里原来是1.0.0.0,我修改成1.1.0.0,之后再次生成,生成成功。在AutoCAD里再次用netloadx加载zhy.dll。加载成功!http://a4.qpic.cn/psb?/V12Xyae12qufoH/aNTqls7RGvWOQSvTGbKkPgNu6SkLSWx5bly6FjZ8T6Y!/b/dAMBAAAAAAAA&ek=1&kp=1&pt=0&bo=HAFSAQAAAAADAGs!&tl=1&su=0209653729&tm=1617710400&sce=0-12-12&rf=2-9看起来确实是版本问题。所以说每次生成之前,修改一下程序的版本就可以了。不过这样似乎还是有点麻烦。所以我想到了放版本信息的那个文件。是否可以修改一下,能够自动改变版本。这个文件在这里:http://a4.qpic.cn/psb?/V12Xyae12qufoH/NLj90dwSx45DQ587iGEuS.P7ODex3Rwtp02qo14ccw8!/b/dAcBAAAAAAAA&ek=1&kp=1&pt=0&bo=9QDMAAAAAAADABw!&tl=1&su=073561537&tm=1617710400&sce=0-12-12&rf=2-9这个文件里写了版本信息:http://a1.qpic.cn/psb?/V12Xyae12qufoH/A9vzYDZV9xpkwuuvgTKXH4tqnJIdN4pBrLz4CFLtL0Y!/b/dMgAAAAAAAAA&ek=1&kp=1&pt=0&bo=DgLxAAAAAAADANg!&tl=1&su=037616049&tm=1617710400&sce=0-12-12&rf=2-9注意上面的那段注释。我想假如用注释上说的:也可以使用……默认值,方法是……使用“*”,那么是不是AutoCAD就不会再注意版本问题了呢?试一下。于是我使用注释里写的另一种版本写法把这段代码改成这样:http://a1.qpic.cn/psb?/V12Xyae12qufoH/hOAP8ObBvFKMCGWf7gkbw*F1z5nTcC3aLNBbTgaU46g!/b/dMgAAAAAAAAA&ek=1&kp=1&pt=0&bo=FAIAAQAAAAADADI!&tl=1&su=05846049&tm=1617710400&sce=0-12-12&rf=2-9修改程序,再次生成,生成成功,在AutoCAD中用netloadx再次加载zhy.dll,加载成功!再次修改程序,再次生成程序,再次用netloadx加载zhy.dll,加载成功!我反复试了很多次,每一次都加载成功!完美!好了,以上!PS:感谢明经通道论坛!特别感谢明经通道论坛的这位“brbright”大神!本文由【QQ307501169伤脑筋】编写,转载请注明出处!
原文链接:QQ空间
老在顶旧帖子,我也贴一个我的:lol
https://www.cnblogs.com/JJBox/p/13833350.html chenxiy825 发表于 2021-4-17 23:45
图片看不了啊
可以看原作者的QQ空间啊!!!{:1_1:} 图片看不了啊 qq1254582201 发表于 2021-4-19 16:15
可以看原作者的QQ空间啊!!!
QQ空间看到了:lol 试一试,之前的尝试反正都失败了 你有种再说一遍 发表于 2021-5-13 00:28
老在顶旧帖子,我也贴一个我的
https://www.cnblogs.com/JJBox/p/13833350.html
二惊大佬,牛皮操作,不明觉厉。
页:
[1]