设置解决方案中其他项目中引用的dll类库的位置



我正在做一个有3个项目(c#)的解决方案。

  1. 主要可执行项目
  2. Dll
  3. Dll

主要项目参考了其他项目。我想在我的主要项目中有以下文件结构:

main.exe 
Libraries - folder
  + 2.dll
  + 3.dll

但不幸的是,VS正在将这些DLL文件放到EXE位置。

有什么简单的解决方案吗?

您可以更改子DLL上的输出路径以指向库。

但是,这不是.Net在运行时为DLL解析而探测的标准路径,因此在尝试部署它时可能会遇到问题,除非您手动从这些位置加载。

如果您将项目引用标记为Copy Local,那么我认为您无法通过配置更改Visual Studio将文件复制到的目录。

但是,您可以设置一个生成后命令,在每次生成后自动将文件移动到所需的子目录中。

更新

我喜欢这个网站,因为它让我每天都能学到新东西。作为一个恰当的例子,我刚刚发现了可以添加到配置文件中的探测元素,以便向标准探测路径添加额外的路径。

此配置元素允许.Net在libraries文件夹中搜索要加载的DLL,这样,一旦DLL就位,您就不必做任何额外的工作(您仍然需要使用postbuild命令将它们移动到该目录)。

这里有一个示例配置条目来支持您的配置:

<configuration>
   <runtime>
      <assemblyBinding>
         <probing privatePath="binlibraries"/>
      </assemblyBinding>
   </runtime>
</configuration>

我也有同样的问题,但前面的例子不起作用。只有在我指出方案后,一切都很好:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="Libraries"/>
    </assemblyBinding>
  </runtime>
</configuration>

最新更新