小编典典

将自定义路径设置为引用的DLL?

c#

我有一个C#项目(称为MainProj),它引用了其他几个DLL项目。通过将这些项目添加到MainProj的引用中,它将构建它们并将其生成的DLL复制到MainProj的工作目录中。

我想做的是让这些引用的DLL位于MainProj工作目录的子目录中,即MainProj / bin / DLLs,而不是工作目录本身。

我不是一个非常有经验的C#程序员,但是来自C 世界,我假设一种方法是删除项目引用,并通过路径和文件名显式加载所需的DLL(即在C
LoadLibrary)。但是,如果可以的话,我更愿意做的是设置某种“引用二进制路径”,这样在我构建时它们都将自动复制到该子目录中(然后从那里被引用而无需我需要显式加载每个)。这样的事情可能吗?

如果不是,那么在C#中完成我所追求的目标的首选方法是什么(例如,带有Assembly.Load/
Assembly.LoadFile/的Assembly.LoadFrom东西?AppDomain或者也许是System.Environment?)


阅读 261

收藏
2020-05-19

共1个答案

小编典典

从此页面(未经我试用):

在程序初始化的某个位置(在从引用程序集访问任何类之前)执行此操作:

AppDomain.CurrentDomain.AppendPrivatePath(@"bin\DLLs");

编辑: 本文说AppendPrivatePath被认为已过时,但也提供了一种解决方法。

编辑2: 看起来最简单,最简单的方法是在app.config文件中(请参阅此处):

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="bin\DLLs" />
    </assemblyBinding>
  </runtime>
</configuration>
2020-05-19