[求助]如何卸载net程序,实现netload/netunload
看到那一段英文了 似乎是要改edit and continue但还是看不明白
谁成功实现netload/netunload过 能说一下吗?
再次加载时没法覆盖程序集,抛出命令重复的异常,老铁知道为什么不?版本号已经修改了。。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开发向导建的项目,把项目里的这一段初始代码
复制代码
删掉,就可以正常加载了。。不晓得为什么。。
最近也遇到这个问题,根据测试,是项目填的太多了,不要"MyGroup":
用简化的模式,大部分都没有问题
edit and continue 是调试时用的
没有netunload,或者说.Net程序无法卸载
谢谢版大
只能重开cad了?。
我也试了好多次,没用。 买新机器吧,我就是这么做的,开CAD6秒。 你可以了解一下AppDomain,.NET程序不能像C++写就的dll(arx就是其中的一种)那样卸载。我感觉托管程序的加载、卸载相对于传统本地dll应该要容易一些,不知道微软当初设计的时候是出于什么考虑,不提供这种实现功能,现在导致每次重新编译之后就得重新启动CAD再加载一次,严重影响了效率 不要用NETLOAD,将dll复制到内存再加载,可以避免文件被占用。
//打开文件,将文件以二进制方式复制到内存,自动关闭文件
byte[] buffer = System.IO.File.ReadAllBytes(file_dir);
//加载内存中的文件
Assembly assembly = Assembly.Load(buffer);
页:
[1]
2