五分钟了解怎么使用paket.exe和batch脚本去打包Vs项目

1. 创建一个Vs解决方案PackTest和一个Shape类库

 

2. 在解决方案目录下新建一个名为Packages的文件夹,新建.paket文件夹,将paket.exe文件放入.paket文件夹目录下,如下所示:

3. 在VS项目新建一个解决方案文件夹,我们称之为Nuget。

事实上这个nuget文件夹在硬盘上我们是看不到的。只能在vs项目上能看到,以后一些打包管理的文件我们都放在这个解决方案文件夹nuget里面:

4.我们在Nuget下面新建一个paket.template文件

这个就是我们要打包的模板:

然后在模板里面填写内容,待以后运行batch脚本能够根据这个template文件去打包

id就是我们打包后的包id

version就是生成包的名称前缀,也是版本号。接着往下看你就知道version的作用了;

author就是作者

description 即信息描述,可以描述你打包的程序或者程序集的功能

files下面的五行是你要打包的程序集或者文件,==>  前的字段(比如Debug/shape.dll)是将要被打包文件的相对路径,它们必须能找到,否则就会打包不成功。

那么dependencies文件又是什么呢?接着往下看

5. 和新建paket.template一样,我们新建一个paket.dependencies

理论上来说,这个paket.dependencies是必须存在的,因为你的程序集或者程序可能需要依赖于其他的程序集(别人写的dll),然后你在里面填写你要依赖的程序集,以及它的可下载源链接

source 后面跟你要依赖的包的源

neget下面是你依赖的程序集的名称和其版本条件,比如我这里依赖的程序集是Framework,Framework的版本必须在1.300.0.0以上,低于1.400.0.0,如果你没有要依赖的源,dependencies可以是空着的,但是文件必须要创建的。

6. 还要建立一个history.md文件

history.md文件是我们要对版本更新升级或者变更时要对版本增加了什么内容,以便别人使用你的程序集时有所了解。history的名称和内容可自由发挥,不过一般来说一个开发团队都有规定.

我们在paket.template里有声明说 history.md ==>  也就是说,以后我们打包的话,history.md也要和dll一起被打包 

基本工作准备好了,接下来就是编写batch打包脚本了

7. 在Nuget文件夹下面新建一个pack.bat

我们先看设置打包参数

version这个没得说,就是和template里的version一个样

Out=pack.out  就是让Out变量为pack.out ,一会儿调用,接着看

Project=Shape 就是打包的项目

rem 分别编译Debug和Release下面的两行说的是

分别对解决方案下的项目文件都进行编译,这样才能够生成我们需要打包的程序集dll等相关文件,当然也可以打包exe文件

值得一提的是,倒数第二行

注意Packages\.paket就是上面我们把paket.exe所放在文件夹的路径,这里使用了相对路径,如果你的Packages放在了上层目录,应该使用\..来表示上层目录。 看见%Out%没,一会儿我们打好的包就会放在Out变量里面,也就是pack.out文件夹里面,packlog.txt是打包的日志,可以查看打包过程的信息

设置编译参数,就是为了去编译debug和release设置的相对路径,照抄就行

这里我们还需要在需要编译的项目,右键-属性,在预先生成事件命令添加一行call指令,一会儿脚本编译的时候,paket.exe才能启动,call "$(SolutionDir)Packages\.paket\paket.exe" install。

注意,这里的$(SolutionDir)指的是我解决方案PackTest的目录,要根据自己paket.exe所放的目录来写这个指令

8. 大功告成,现在我们可以打开解决方案所在的文件夹,直接去点击pack.bat就行了!

双击pack.bat文件

虽然多出了三个文件,但是在pack.out里面并没有发现我们要的东西,也就是打好的包!!!!

 

我们可以去看看日志,发现日志都提示说没有错误,也没有警告。我敲??肯定是什么地方写错了!!!

我们在pack.bat脚本中写入pause(暂停),去看看脚本运行到哪个地方中断了!!

发现运行的脚本有个提示,下图红框

这段信息说我们的dll是找不到!!! paket.template模板的打包信息写错了!!!

 

我们去看看paket.template的打包信息

上图paket.template中files下,说的是dll放在paket.template同级目录下的Dubug文件夹下面,然而在去查看paket.templage所在目录下并没有Debug文件夹!!!!

那么我们编译的dll放在哪里呢?

哦!原来dll是在Shape里面的bin目录下

那我就改一下paket.template吧!

再次双击pack.bat文件,别忘了把pack.bat文件的暂停给去掉了!!

进入pack.out文件夹,就会发现我们打包好的东东了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值