4、调试,在项目属性中,设置调试->启动外部程序,指定cad的启动路径,指定工作目录为当前程序的生成目录,既可调试。
  这里每次调试后,都要在启动cad后,通过netload命令加载dll,比较麻烦,可以在上面的工作目录下添加一个lsp脚本文件cad2012.lsp,里面添加一条加载的语句(command "netload" "cadObjArx.dll")
  这样每次启动调试后,cad为自动加载目录下的cadObjArx.dll。
  还有一个问题,因为上面引用了两个objectArx的库,系统默认会把这两个库复制到生成目录下,会导致莫名奇妙的加载失败,设置成不输出后,正常了。
  5、部署,可以再建一个可执行程序的项目,通过调用com组件的方式来启动cad和加载dll,也可以用上面那个方式吧lsp脚本文件和要使用的cad文件放在同一目录下,cad为自动执行脚本
  下面通过一个控制台程序启动cad并加载dll
Console.WriteLine("start..");
string sProgID = "AutoCAD.Application.18.2";
try
{
if (System.Diagnostics.Process.GetProcessesByName("acad").Count() > 0)//判断当前有没cad在运行
{
Console.WriteLine("获取打开的cad");
acApp = (AcadApplication)Marshal.GetActiveObject(sProgID);//获取当前运行的cad对象
}
else
{
Console.WriteLine("open cad");
acApp = new AcadApplication();//没有直接建一个
acApp.Visible = true;
}
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
}
if (acApp != null)
{
Console.WriteLine("netload begin ");
try
{//加载dll
string dllPath = @"D:workspace estcadObjArxinDebugcadObjArx.dll";
string sCommand = "(command "netload" "{0}") ";
dllPath = dllPath.Replace("\", "\\");
acApp.ActiveDocument.SendCommand(string.Format(sCommand, dllPath));
}
catch (Exception exload)
{
Console.WriteLine("netload err:{0}", exload.Message);
}
}