博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
强迫症福利--收起.NET程序的dll来
阅读量:5315 次
发布时间:2019-06-14

本文共 1978 字,大约阅读时间需要 6 分钟。

原文:

作为上床后需要下床检查好几次门关了没有的资深强迫症患者,有一个及其搞我的问题,就是dll问题。

曾几何时,在没有nuget的年代,当有依赖项需要引用的时候,只能通过文件引用来管理引用问题,版本问题,更新问题层出不穷,很是难受。

后来出来nuget,喜大普奔,总算解决了引用的问题。开心之余,依然还有一个很膈应人的问题:生成文件夹满地的dll,找个exe眼睛很难受。

讲道理这个也不是什么大问题,但是就是心痒痒,就特别想把这些dll收到一个单独文件夹里面,外面就留exe和配置等文件。然后就找这个东西:PrettyBin。

PrettyBin

PrettyBin是一个开源的nuget包:,使用它可以将.NET Framework程序引用的文件收到lib文件夹里面,使用起来也非常方便,老样子,直接nuget安装。

Install-Package PrettyBin

提示重新加载项目,点击确定,就完事了。

安装之前,输出是这样的:
616093-20190509011826843-867839415.png

安装之后,输出是这样的:

616093-20190509011838953-1738509163.png

dll之类的文件都进lib文件夹了,感觉世界都干净了很多。

补充

  1. 细心的童鞋应该能够发现,我写的是.NET Framework的程序引用,.NET Core,.NET Standard呢?

    答案是:.NET Core啥的东西生成的就是dll,都一样就没必要了。

  2. 安装prettybin之后,再安装新的包会怎么样?受不受影响?

    依然有用,不受影响。

  3. 对于新的nuget管理形式PackageReference效果如何怎么样?

    这个有说法的,需要先了解这个包工作的原理。

原理解析

首先看看安装的时候,nuget包管理器弹出的提示:

正在执行脚本文件“ConsoleApp4\packages\PrettyBin.1.1.0\tools\init.ps1”Init BinPrettify正在执行脚本文件“ConsoleApp4\packages\PrettyBin.1.1.0\tools\install.ps1”Install PrettifyBin; http://schemas.microsoft.com/developer/msbuild/2003No Target AfterBuild Node. CreatingNo ItemGroup whith MoveToLibFolder tag. CreatingNo Move tag in AfterBuild Target. CreatingEdititing App.configruntimeNode itemsNo probing Node. Creating已将“PrettyBin 1.1.0”成功安装到 ConsoleApp4

可以看到,这里首先执行的是给项目文件添加`msbuild内容,增加了AfterBuild节点,MoveToLibFolder节点和Move节点。

msbuild可以设置生成后的操作,成功生成之后,将目录下面的dll文件,pdb文件和xml都转到了lib文件夹。

然后修改了app.config文件,在runtime底下增加了一个probing节点。

probing节点提供.NET程序集查找的选项,privatepath指定路径,详细资料可以查看MSDN:

补充资料:关于

所以,prettybin是通过运行powershell脚本设置生成成功后转移文件,并将程序集查找路径调整为lib文件夹。

根据,PackageReference方式nuget是不支持install.ps1脚本的。所以并不能支持prettybin。

新建.NET Framework程序是默认是通过传统的package.config文件进行包管理的,新建.NET Core和.NET Standard都是默认使用PackageReference包管理。

结论

  1. 如果需要使用PrettyBin,那么直接默认配置.NET FRAMEWORK项目的nuget管理方式,完美支持。
  2. 如果需要升级新的包管理方式,可以在安装了PrettyBin之后升级项目,依然支持。
  3. 升级了PackageReference之后,安装PrettyBin无效。

P.S. 补充不使用prettybin,也不调用AFTERBUILD的一种实现:

posted on
2019-05-09 10:02 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10836829.html

你可能感兴趣的文章
[snmp++]读取cisco路由交换机信息[一] - 环境搭建
查看>>
文本字符集转换
查看>>
CSS3弹性伸缩布局(一)——box布局
查看>>
设计模式 - Mediator
查看>>
数据结构小总结(成都磨子桥技工学校数据结构前12题)
查看>>
css2--collapse
查看>>
.net post xml 数据
查看>>
How to change the text color in the terminal
查看>>
Eclipse启动时布局不合理调整
查看>>
转: telnet命令学习
查看>>
GIT
查看>>
样式和主题的区别(Styles and Themes)
查看>>
我的第一篇博客
查看>>
方法调用(车票练习)
查看>>
bzoj 4598: [Sdoi2016]模式字符串
查看>>
uoj#119. 【UR #8】决战圆锥曲线(线段树+复杂度分析)
查看>>
Comet OJ - Contest #0题解
查看>>
From 7.8 To 7.14
查看>>
string
查看>>
Java的LockSupport.park()实现分析
查看>>