C#把dll分别放在指定的文件夹的方法步骤https://www.zhangshengrong.com/p/RmNP8RP4Nk/
嗯,大家的解决方案可能会有许多dll,这样不美观,而且也麻烦。
很多小白都不知道如何将这些dll放到如自己程序的bin文件夹下。
本渣今天来试着将dll复制到指定的文件夹下~
比如我之前做的一个Winform使用WebKit内核。然后webkit的dll和文件夹就一大堆全堆积在debug目录下。
这也太乱了吧!!!!!
于是我们便打算将这些文件塞入一个叫bin的文件夹内。
只让我的winform程序能被用户一眼看到,让其他麻烦的dll藏在bin就好了owo。
第一步:在程序内新建App.config文件,如果有就跳过
第二步:打开
然后加入这段代码
这段代码的PrvatPatch所指的是你的dll托管目录
PrivatePath="xxx"可以指定多个文件夹,比如这样写
PrivatePath="233;666;555"这相当于指定233文件夹、666文件夹、555文件夹均是你的dll文件夹。
也可以这样:PrivatePath="2333/4444"相当于指定2333文件夹下的4444文件夹为你的托管目录。
然后在和你应用程序同级目录(xxxx.config)下新建你指定的文件夹的名字~
嗯,弄完后把你所需要托管的dll都扔到这个文件夹里awa。
别着急,我们还有最后一步~
把你所有引用的DLL,包括NuGet的dll。除了系统以外的dll。
把这些引用属性里的"复制本地"按钮 给改成False。
这样程序就不会去复制dll到调试目录下而会老老实实地搜你指定给它的文件夹里有没有这些dll。
如果有,那就直接调用。如果没有,会抛出没找到文件的异常,这时你需要排查有没有放这个文件,文件名字对不对。
同解决方案多项目,引用同DLL文件,同一存放项目DLL引用文件夹配合解决方案文件夹新建DLL文件夹,索引指向同一文件夹引用1、在解决方案资源管理器中右键单击您的解决方案。悬停单击"添加",然后选择"新解决方案文件夹"。这不是一个文件夹并且不指向任何物理文件夹。这是一个抽象用于在解决方案中对项目进行分组的结构,但我们将使用它为了别的称其为"引用的程序集"。
2、接下来,再次右键单击您的解决方案,然后单击"打开文件夹在Windows资源管理器中"。在弹出的Windows资源管理器窗口中添加一个新的"物理文件夹"(该文件夹将位于下面解决方案的根文件夹)。
3、您可以将其称为"引用的程序集",以便解决方案文件夹和物理文件夹共享相同的名称,以避免混淆。抓住所有潜伏在所有DLL中的DLL(即埋在AjaxControlToolkit.dll或DocumentFormat.OpenXml.dll中程序文件)并复制(请勿拖拉-将原件放在原处是)它们进入Windows资源管理器中的"引用的程序集"文件夹(不在解决方案中)。
4、现在,您可以从"引用的程序集"中拖动那些复制的dll。Windows资源管理器中的"物理"文件夹放入"参考程序集"解决方案文件夹中在Visual Studio的解决方案资源管理器中。遍历解决方案中的每个项目并删除所有引用到您将从"参考"中引用的程序集程序集"文件夹。
5、重新添加引用,但这一次(在项目下)右键单击"参考",单击"添加参考...",选择在"浏览"标签上,点击带有绿色箭头的文件夹图标(例如"向上"将鼠标悬停在"一级"上,双击"参考"程序集"文件夹,选择您要引用的所有dll,点击"确定"。6、你完成了。现在,您的解决方案知道了这些dll以及在哪里可以找到它们,当您通过SVN,TFS或其他方式签入代码时,它将把它们推上并复制下来,以供其他人使用。
如果您使用的是TortiseSVN,并且还使用Visual Studio的AnkhSVN插件,则无需执行任何操作。它研究您的解决方案文件(就像TFS一样)以找到该解决方案引用的文件。在这种情况下,它将获取"引用的程序集"解决方案文件夹所引用的新dll,并在提交它们之前自动添加源代码控制跟踪(即,如果像我一样从Visual Studio中的解决方案资源管理器中提交解决方案更改, )。
好了,本期教程到此结束~