如何将所有引用的DLL移动到c#中的单独文件夹中?

我有一个包含3个项目的解决方案。 其中2个项目引用了log4net和其他几个DLL。

当我创建安装包并为每个项目添加项目输出时 – 它将DLL丢弃到主“应用程序文件夹”中。 如果我将这些DLL拖到我在安装项目中创建的单独文件夹中,应用程序将无法运行“无法找到log4net”。 我希望这些DLL引用真的像“bin”或任何名称,只是不是他们添加混乱的主文件夹 – 我只想在主文件夹中的我的2.exe。

我尝试在每个项目中添加一个引用路径指向“bin”文件夹。 然后在安装项目中,我添加了一个名为“bin”的输出文件夹,并将DLL移动到该文件夹​​中,仍然无效。

我错过了什么! 我花了几个小时环顾四周试图弄清楚我做错了什么,也许这就是我出生的方式! 谢谢你的帮助!

您可以使用app.config文件中的元素指定要搜索的Fusion(程序集加载程序)的专用路径。

这允许您指定路径,这些路径是Fusion在尝试查找要绑定的程序集时应搜索的应用程序目录的子路径。 一个例子(取自文档页面)是:

        

这意味着Fusion将在尝试绑定它们时在bin,bin2 \ subbin(但不是bin2,IIRC)和bin3子目录中搜索程序集。

我为此编写了一个名为PrettyBin的nuget包它将一个post build目标添加到一个项目中,将dll移动到一个“lib”子文件夹,并修改app.config以查看那里