侧边栏壁纸
  • 累计撰写 97 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

CSharp添加引用文件夹

祈安千
2026-07-07 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

Why

  • 最近在公司开发的时候,发现很多时候需要引用不同的dll,都是放在不同的文件夹中,然后在App.config里设置类似如下格式

<!--指定加载程序集时公共语言运行时搜索的子目录, 其中privatePath是相对于*.exe.config文件的相对路径,多个文件夹以分号分隔。-->
<probing privatePath="3dparty\OCCT;3dparty\TouchDevice;3dparty\Lib;3dparty\AvalonDock;3dparty\Dev;3dparty\CCDVision" />
  • 这个方法其实很多时候是有用的,如何设置可以看我之前的博客:CSharp添加dll文件夹-祈安千,但是可能是框架相关的情况,目前公司的项目这种方法其实是失效的,本人踩坑了一天,终于发现是这个的问题,最后找到设置环境变量的终极解决办法,可涵盖几乎所有的场景。

How

  • 在程序开启最开始调用函数:PrependNativeDllSearchPaths,以下是代码:

 private static void PrependNativeDllSearchPaths()
 {
     string baseDir = AppDomain.CurrentDomain.BaseDirectory.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
     var prepend = new List<string>();
     foreach (string relative in new[] { @"3dParty\Pcl", @"3dParty\OCCT", @"3dParty\Common" })
     {
         string full = Path.Combine(baseDir, relative);
         if (Directory.Exists(full))
         {
             prepend.Add(full);
         }
     }
     if (prepend.Count == 0)
     {
         return;
     }
     string tail = Environment.GetEnvironmentVariable("PATH") ?? string.Empty;
     Environment.SetEnvironmentVariable("PATH", string.Join(Path.PathSeparator.ToString(), prepend) + Path.PathSeparator + tail);
 }
  • 这种方法只是一种设置临时环境变量的方法,放心在程序退出的时候不会影响你的任何本地的运行环境,可以放心的使用,基于这种方法,其实可以拓展出你想要的基本任何包含库。

Tips

  • 学无止境~

0

评论区