You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#从CAD库文件获取块时生成dll后运行报错求助

错误警告

问题根源

你使用的相对路径是相对于程序当前工作目录的:

  • 调试时工作目录默认是项目输出目录(如bin/Debug),和你预设的相对路径层级匹配,因此可以正常读取文件
  • 编译为dll被其他程序调用时,工作目录会变为调用方程序的启动目录,和dll实际存放目录不匹配,因此找不到dwg文件

修复代码

改为获取当前执行dll自身所在的目录,再拼接dwg文件名即可,只要保持dll和CadLibrary.dwg在同一目录下就不会出现路径错误:

using System.Reflection;
using Autodesk.AutoCAD.DatabaseServices;

// 其他原有逻辑
using (Database OpenDb = new Database(false, true))
{
    // 获取当前dll所在目录路径
    string dllDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    // 拼接dwg文件完整路径
    string sPath = Path.Combine(dllDir, "CadLibrary.dwg");
    
    // 可选:新增文件存在校验,方便后续排查问题
    if (!File.Exists(sPath))
    {
        throw new FileNotFoundException("未找到CAD库文件", sPath);
    }
    
    OpenDb.ReadDwgFile(sPath, System.IO.FileShare.ReadWrite, true, "");
    // 后续原有块提取逻辑
}

注意事项

  • 调用Assembly相关API需要先引用System.Reflection命名空间
  • 用Path.Combine拼接路径可以避免不同场景下的路径分隔符不兼容问题
  • 后续如果需要调整dwg存放位置,仅需修改拼接的子路径即可,不需要修改基础目录获取逻辑

内容的提问来源于stack exchange,提问作者PhilipZone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:45:03