引用的dll都放在根目录下,随着项目的日益增大,根目录下充满了各种各样的dll,非常的不美观。
如何让程序识别不同目录下的dll?
这是最简单的方法,当然也有一定的局限性,就是没法对dll做控制,另外,无法解决第三方DllImprt
中引入的程序集不在根目录下的问题,不过无论怎么说,这个都基本解决了问题。
配置如下,多个目录用;分隔
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="3rdLib;MyLibs;SubFolder\Sub.dll"/>
</assemblyBinding>
</runtime>
.net程序如何把引用的dll放到子目录里面
.net程序引用dll,一般都会把dll文件放在Debug目录底下。如果引用的dll很多,比如超过20个,整个目录看起来就很乱,
在config加入如下:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
这样,我们就可以加子目录,把各个dll分门别类的放好
C# 将引用的DLL文件放到指定的目录下
引用的DLL比较多的时候,全部的DLL都放在exe同目录下,显得比较乱而且不利于管理。为了更好的管理软件中的各种文件应该分门别类的放入相应的文件夹中。
下面是解决该问题的一种方法:
右键点击项目:属性-》设置,项目会生成一个app.config文件,在<configuration>节点后面添加<runtime>节点再添加下面的节点,重新生成一下就可以达到预期效果了。指定的目录即为生成exe所在路径的次级dll文件目录。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
</configuration>
在配置文件中,添加一个AssemblyBinding元素,可多个路径,用英文分号分隔。
在<configuration>节点后面添加<runtime>节点再添加下面的节点,
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin/dll;" />
</assemblyBinding>
</runtime>
</configuration>
修改dll文件的引用属性
点击添加成功的引用,将“复制本地”改成false(不然程序运行的时候会将子文件夹下的dll文件复制到根目录中)。