[求助]如何卸载net程序,实现netload/netunload
<p>看到那一段英文了 似乎是要改edit and continue </p><p>但还是看不明白 </p><p>谁成功实现netload/netunload过 能说一下吗?</p> 怎么没加上附件呢?hector 发表于 2018-5-4 22:25
感谢“brbright”大神,我把它做成了dll方便大家使用(使用的是sharpdevelop4.4+cad2007)。[/ ...
再次加载时没法覆盖程序集,抛出命令重复的异常,老铁知道为什么不?版本号已经修改了。。Cannot load assembly. Error details: Autodesk.AutoCAD.Runtime.Exception: eDuplicateKey
at Autodesk.AutoCAD.Runtime.Interop.Check(Int32 returnValue)
at Autodesk.AutoCAD.Runtime.CommandClass.AddCommand(ICommandLineCallable ca, MethodInfo mi)
at Autodesk.AutoCAD.ApplicationServices.AutoCADApplicationHolder.Initialize(Assembly assembly)
at Autodesk.AutoCAD.ApplicationServices.ExtensionLoader.ProcessAssembly(Assembly assembly) 找到问题了,我是用cad开发向导建的项目,把项目里的这一段初始代码
public void MyCommand() // This method can have any name
{
// Put your command code here
}
删掉,就可以正常加载了。。不晓得为什么。。 <p>edit and continue 是调试时用的</p><p>没有netunload,或者说.Net程序无法<strong>卸载</strong></p> <p>谢谢版大</p><p>只能重开cad了?。 </p> 我也试了好多次,没用。 买新机器吧,我就是这么做的,开CAD6秒。 你可以了解一下AppDomain,.NET程序不能像C++写就的dll(arx就是其中的一种)那样卸载。我感觉托管程序的加载、卸载相对于传统本地dll应该要容易一些,不知道微软当初设计的时候是出于什么考虑,不提供这种实现功能,现在导致每次重新编译之后就得重新启动CAD再加载一次,严重影响了效率 不要用NETLOAD,将dll复制到内存再加载,可以避免文件被占用。
//打开文件,将文件以二进制方式复制到内存,自动关闭文件
byte[] buffer = System.IO.File.ReadAllBytes(file_dir);
//加载内存中的文件
Assembly assembly = Assembly.Load(buffer); brbright 发表于 2016-9-10 15:35
不要用NETLOAD,将dll复制到内存再加载,可以避免文件被占用。
//打开文件,将文件以二进制方式复制到内 ...
大神你真是太牛了,终于解决这个问题了!赞! 也么解决的?能讲讲嘛! 请看我qq空间文章,qq307501169.完整设置教程。