我有一个包含3个项目的解决方案。其中2个项目引用了log4net和其他几个DLL。
当我创建安装包并为每个项目添加项目输出时 - 它将DLL放入主“应用程序文件夹”中。如果我将这些DLL拖到我在安装项目中创建的单独文件夹中,应用程序将无法运行“无法找到log4net”。我希望这些DLL引用真的像“bin”或任何名称,只是不是主文件夹,他们添加混乱 - 我只是想在我的主文件夹中的2.exe。
我尝试在每个项目中添加一个引用路径以指向“bin”文件夹。然后在安装项目中,我添加了一个名为“bin”的输出文件夹,并将DLL移动到该文件夹中,仍然无效。
我错过了什么!我花了几个小时环顾四周试图弄清楚我做错了什么,也许这就是我出生的方式!谢谢你的帮助!
答案 0 :(得分:10)
您可以使用app.config文件中的<probing>
element指定要搜索的Fusion(程序集加载程序)的专用路径。
这允许您指定路径,这些路径是Fusion在尝试查找要绑定的程序集时应搜索的应用程序目录的子路径。一个例子(取自文档页面)是:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
这意味着当尝试绑定到程序集时,Fusion将在bin,bin2 \ subbin(但不是bin2,IIRC)和bin3子目录中搜索程序集。
答案 1 :(得分:3)
为此,我写了一个名为PrettyBin的nuget包 它将后期构建目标添加到项目中,将dll移动到&#34; lib&#34;子文件夹,并修改app.config以查看