明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1817|回复: 6

[讨论][求助]两个怪问题,附上源码

[复制链接]
发表于 2009-11-23 17:03:00 | 显示全部楼层 |阅读模式

遇到两个怪问题,请各位高手帮忙看看。

环境:Microsoft Visual Studio 2005 与 AutoCAD 2008 - Simplified Chinese

问题1:

用netload加载我的“CadNetTest.dll”,先执行里面的“savetest”命令,再执行“opentest”,出现图“Snap1.JPG”的错(无法找到程序集“CadNetTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”。);

问题1的解决方法是:将“CadNetTest.dll”放在cad的安装目录下,但会对于装有多个版本cad时,打包程序要复制多份到各cad的目录下,这样不好;


问题2:

将“CadNetTest.dll”所在的目录加在cad的“支持文件搜索路径”下时(如图Snap2.JPG),重启cad,些时所有命令都无效呀(如图Snap3.JPG)

问题2的解决方法是:用图Snap4.JPG 生成的项目又可以,上面的项目我是用“类库”生成的,到底错在哪;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2009-11-23 17:20:00 | 显示全部楼层

反序列化的问题参考这个帖子

http://www.mjtd.com/bbs/dispbbs.asp?boardid=33&replyid=106005&id=70085&page=10&skin=0&landlord=0&Star=2

将“CadNetTest.dll”所在的目录加在cad的“支持文件搜索路径”下时(如图Snap2.JPG),重启cad,些时所有命令都无效呀

应该不会出现这样的问题,贴上你的注册表项的内容看看

 楼主| 发表于 2009-11-23 17:26:00 | 显示全部楼层
狐哥,你就用我上面的工程试呀,我是用netload加载的呀,我在几台电脑上试过了,一样
发表于 2009-11-23 17:45:00 | 显示全部楼层
二楼的帖子有看么?
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Autodesk.AutoCAD.Runtime;
  5. using System.IO;
  6. using System.Runtime.Serialization;
  7. using System.Runtime.Serialization.Formatters.Binary;
  8. using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;
  9. [assembly: CommandClass(typeof(CadNetTest.Class1))]
  10. namespace CadNetTest
  11. {
  12.     public class UBinder : SerializationBinder
  13.     {
  14.         public override Type BindToType(string assemblyName, string typeName)
  15.         {
  16.             return Type.GetType(typeName);
  17.         }
  18.     }
  19.     public class Class1
  20.     {
  21.         [CommandMethod("test")]
  22.         public void test()
  23.         {
  24.             AcadApp.ShowAlertDialog("test");
  25.         }
  26.         [CommandMethod("savetest")]
  27.         public void savetest()
  28.         {
  29.             try
  30.             {
  31.                 SaveProjData(@"c:\\li.tmp");
  32.             }
  33.             catch (System.Exception e)
  34.             {
  35.                 AcadApp.ShowAlertDialog(e.Message);
  36.             }
  37.         }
  38.         [CommandMethod("opentest")]
  39.         public void opentest()
  40.         {
  41.             try
  42.             {
  43.                 GetProjData(@"c:\\li.tmp");
  44.             }
  45.             catch (System.Exception e)
  46.             {
  47.                 AcadApp.ShowAlertDialog(e.Message);
  48.             }
  49.         }
  50.         public static void GetProjData(string strProjFile)
  51.         {
  52.             ProjectData objRtn = new ProjectData();
  53.             if (File.Exists(strProjFile))
  54.             {
  55.                 IFormatter formatter = new BinaryFormatter();
  56.                 formatter.Binder = new UBinder();
  57.                 Stream stream = new FileStream(strProjFile, FileMode.Open, FileAccess.Read, FileShare.Read);
  58.                 objRtn = (ProjectData)formatter.Deserialize(stream);
  59.                 stream.Close();
  60.             }
  61.             string strTemp = objRtn.BeamFile;
  62.         }
  63.         /// <summary>
  64.         /// 保存数据
  65.         /// </summary>
  66.         /// <param name="strProjFile"></param>        
  67.         public static void SaveProjData(string strProjFile)
  68.         {
  69.             ProjectData objProjData = new ProjectData();
  70.             objProjData.BeamFile = "test";
  71.             if (File.Exists(strProjFile))
  72.             {
  73.                 File.Delete(strProjFile);
  74.             }
  75.             IFormatter formatter = new BinaryFormatter();
  76.             Stream stream = new FileStream(strProjFile, FileMode.Create, FileAccess.Write, FileShare.None);
  77.             formatter.Serialize(stream, objProjData);
  78.             stream.Close();
  79.         }
  80.     }
  81. }
 楼主| 发表于 2009-11-24 16:49:00 | 显示全部楼层

第一问解决了;第二问呀,没解决,老出“未知命令”

发表于 2009-11-24 21:36:00 | 显示全部楼层

你提供的样例没有发现问题的

两个dll设置“复制本地”为false么?

 楼主| 发表于 2009-11-25 08:34:00 | 显示全部楼层
狐哥,dll复制到本地了呀,不加搜索路径是可以的,加了搜索路径就不行呀,我在多台电脑上试了,看看这个工程咱回事?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 20:36 , Processed in 0.171878 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表