[讨论][求助]两个怪问题,附上源码
<p>遇到两个怪问题,请各位高手帮忙看看。</p><p>环境:Microsoft Visual Studio 2005 与 AutoCAD 2008 - Simplified Chinese</p><p>问题1:</p><p>用netload加载我的“CadNetTest.dll”,先执行里面的“savetest”命令,再执行“opentest”,出现图“Snap1.JPG”的错(无法找到程序集“CadNetTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”。);</p><p>问题1的解决方法是:将“CadNetTest.dll”放在cad的安装目录下,但会对于装有多个版本cad时,打包程序要复制多份到各cad的目录下,这样不好;</p><p><br/>问题2:</p><p>将“CadNetTest.dll”所在的目录加在cad的“支持文件搜索路径”下时(如图Snap2.JPG),重启cad,些时所有命令都无效呀(如图Snap3.JPG)</p><p>问题2的解决方法是:用图Snap4.JPG 生成的项目又可以,上面的项目我是用“类库”生成的,到底错在哪;</p> <p>反序列化的问题参考这个帖子</p><p><a href="http://www.mjtd.com/bbs/dispbbs.asp?boardid=33&replyid=106005&id=70085&page=10&skin=0&landlord=0&Star=2">http://www.mjtd.com/bbs/dispbbs.asp?boardid=33&replyid=106005&id=70085&page=10&skin=0&landlord=0&Star=2</a></p><p>将“CadNetTest.dll”所在的目录加在cad的“支持文件搜索路径”下时(如图Snap2.JPG),重启cad,些时所有命令都无效呀</p><p>应该不会出现这样的问题,贴上你的注册表项的内容看看</p> 狐哥,你就用我上面的工程试呀,我是用netload加载的呀,我在几台电脑上试过了,一样 二楼的帖子有看么?using System;
using System.Collections.Generic;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;
namespace CadNetTest
{
public class UBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
return Type.GetType(typeName);
}
}
public class Class1
{
public void test()
{
AcadApp.ShowAlertDialog("test");
}
public void savetest()
{
try
{
SaveProjData(@"c:\\li.tmp");
}
catch (System.Exception e)
{
AcadApp.ShowAlertDialog(e.Message);
}
}
public void opentest()
{
try
{
GetProjData(@"c:\\li.tmp");
}
catch (System.Exception e)
{
AcadApp.ShowAlertDialog(e.Message);
}
}
public static void GetProjData(string strProjFile)
{
ProjectData objRtn = new ProjectData();
if (File.Exists(strProjFile))
{
IFormatter formatter = new BinaryFormatter();
formatter.Binder = new UBinder();
Stream stream = new FileStream(strProjFile, FileMode.Open, FileAccess.Read, FileShare.Read);
objRtn = (ProjectData)formatter.Deserialize(stream);
stream.Close();
}
string strTemp = objRtn.BeamFile;
}
/// <summary>
/// 保存数据
/// </summary>
/// <param name="strProjFile"></param>
public static void SaveProjData(string strProjFile)
{
ProjectData objProjData = new ProjectData();
objProjData.BeamFile = "test";
if (File.Exists(strProjFile))
{
File.Delete(strProjFile);
}
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(strProjFile, FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, objProjData);
stream.Close();
}
}
}
<p>第一问解决了;第二问呀,没解决,老出“未知命令”</p> <p>你提供的样例没有发现问题的</p><p>两个dll设置“复制本地”为false么?</p> 狐哥,dll复制到本地了呀,不加搜索路径是可以的,加了搜索路径就不行呀,我在多台电脑上试了,看看这个工程咱回事?
页:
[1]