cad中netload 不能加载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cad中netload 不能加载相关的知识,希望对你有一定的参考价值。
错误详细信息: System.IO.FileLoadException: 未能加载文件或程序集“file:///C:\Program Files\Autodesk\AutoCAD 2013\DgnLsPurge.dll”或它的某一个依赖项。不支持操作。 (异常来自 HRESULT:0x80131515)
文件名:“file:///C:\Program Files\Autodesk\AutoCAD 2013\DgnLsPurge.dll” ---> System.NotSupportedException: 尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理。此发行版的 .NET Framework 默认情况下不启用 CAS 策略,因此,此加载可能会很危险。如果此加载不是要对程序集进行沙盒处理,请启用 loadFromRemoteSources 开关。有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkId=155569。
在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
在 System.Reflection.Assembly.LoadFrom(String assemblyFile)
在 Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
在 loadmgd()
1、首先打开CAD软件后,点击管理选项卡按钮。
2、然后就能在这里点击-加载应用程序按钮。
3、此时可以在这里看到加载卸载应用程序窗口。
4、就可以在这里选择文件类型程序。
5、在这里就可以看到已加载的应用程序。
6、最后,根据自己的需求选中文件后点击加载按钮就可以载入。
参考技术A你试下这个方法,找到这个文件(右键+属性+解锁),注意在红色方框内会提出一行文字,大致的意思是系统组止了该文件运行,点解锁了关掉CAD从开应该可以运行了。我也是遇到线型无法删除造成CAD文件过大,补丁能够运行了,但是问题还是无法清理线型。
参考技术B 在cad的安装目录里acad.exe.config; AdMigrator.exe.config这两个文件,用txt打开,添加:<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime> 参考技术C 在runtime中增加<runtime><loadFromRemoteSources enabled="true" /></runtime> 参考技术D 不知道你的CAD什么版本的,重新安装下CAD软件,安装的时候注意留意这个插件安装有没有报错.NET Framework
CAD 二次开发 -- 自动加载开发的DLL
CAD二次开发可以采用写扩展DLL的方式实现。该DLL的函数可以被CAD调用。
但是调用前,必须用命令netload 将该dll加载到CAD。
其实可以修改注册表,当CAD软件启动后,自动加载扩展DLL。
为此,我写了一个函数,很方便的修改注册表,达到自动加载dll的目的!
该函数支持各个版本cad。
1 //strCadRegKey = "HLD_CAD_Import"; //唯一注册标识 可用公司名称和程序名称 2 //strDll dll文件路径 3 private bool WriteRegistryKey(string strDll,string strCadRegKey) 4 { 5 try 6 { 7 RegistryKey localMachine = Registry.LocalMachine; 8 RegistryKey SOFTWARE = localMachine.OpenSubKey("SOFTWARE", true); 9 RegistryKey Autodesk = SOFTWARE.OpenSubKey("Autodesk", true); 10 RegistryKey AutoCAD = Autodesk.OpenSubKey("AutoCAD", true); 11 12 int result = 0; 13 foreach (string subDir in GetRegSubDir(AutoCAD, "R")) 14 { 15 try 16 { 17 RegistryKey CadVersion = AutoCAD.OpenSubKey(subDir, true); 18 19 string AcadVersion = GetRegSubDir(CadVersion, "ACAD-").FirstOrDefault(); 20 RegistryKey ACAD = CadVersion.OpenSubKey(AcadVersion, true); 21 22 RegistryKey Applications = ACAD.OpenSubKey("Applications", true); 23 24 //删除旧有记录 25 try 26 { 27 Applications.DeleteSubKeyTree(strCadRegKey); 28 } 29 catch (Exception ex) 30 { } 31 32 RegistryKey MXCAD = Applications.CreateSubKey(strCadRegKey); 33 MXCAD.SetValue("LOADCTRLS", 0x02); 34 MXCAD.SetValue("LOADER", strDll); 35 MXCAD.SetValue("MANAGED", 0x01); 36 result++; 37 } 38 catch (Exception ex) 39 { 40 if (showMessage) 41 System.Windows.Forms.MessageBox.Show(string.Format("注册时出错!{0}", ex.Message)); 42 } 43 } 44 45 if (result > 0 && showMessage) 46 System.Windows.Forms.MessageBox.Show(string.Format("注册成功!")); 47 return true; 48 } 49 catch (Exception ex) 50 { 51 52 return false; 53 } 54 }
技术交流联系qq 13712486
以上是关于cad中netload 不能加载的主要内容,如果未能解决你的问题,请参考以下文章