NuGet的简单科普

1:搭建自己的NuGet服务器

新建一网站项目,然后打开 程序包管理器控制台 ,使用 “Install-Package NuGet.Server -Version 2.2.2”命令

2:发布自己的Package

下载NuGet.exe,并把它放到系统变量中

2.1 创建nuspec文件

进入项目目录,按下Shift并单击鼠标右键,选择在此处打开命令窗口

使用 nuget spec 命令,创建nuspec文件

文件部分可替换参数解释如下

  关于程序集版本号的设置 默认是 [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]

可将AssemblyFileVersion注释掉,AssemblyVersion 可设置为1.0.* 生成的版本号将会类似于1.0.6109.25317,后面的2个数字是必然递增的

2.2 nuspec的依赖

2.2.1资源依赖

将依赖的资源文件的生成操作设置为内容

2.2.2 类库依赖

我所谓的类库依赖是指,我们有2个程序集,名字分别是Data,Data.SqlServer,我们针对这个项目不想发布2个包,那么问题在与如何在一个Package中,添加多个类库文件?

此种情况需要添加files节点

此设置是将src指定的文件放到target目录,target相当于生成的package压缩包的根目录,类库依赖的示例:

<file src=".\bin\release\data.dll" target="lib\net40" /> net40 代表 .net framework 版本

2.2.3 Package依赖

我自己将解决方案Package的依赖分为两种

引用通过NuGet引用,发布包时,依赖也是使用NuGet的版本

此种方式对于包的管理来说,比较方便,直接发布即可,但是在调试的时候,稍微繁琐一些(是可以调试的)

引用通过项目引用,发布包时,依赖使用NuGet的版本

此种方式对于调试,比较方便,但是在发布包的时候,需要手动指定依赖的包版本,做法如下:

2.2.4 生成包

使用 nuget.exe pack %ProjectName%.csproj -o %PackagesDir% -sym -Prop Configuration=Release

ProjectName 项目名字,非解决方案名字

PackagesDir Package保存地址,没有则当前目录

友情提示:建议生成包时,先编译下,编译命令 C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe /p:Configuration=Release %ProjectName%.csproj

2.2.5 上传包

2.2.4 生成的包会有2个,分别如上图。

如果你希望客户端引用你的包,在发生问题时可以自行调试,则将symbols.nupkg重命名把symbols.去掉上传。此方式客户端是有你项目的源码,只是没有项目文件

如果你不希望客户端直接看到你的源码,则直接将文件名中间不带symbols的上传即可

文件上传至自己的搭建的项目下的.\Packages目录就完成上传了

3:包的引用和管理

打开Visual Studio,选项 工具->库程序包管理器->程序包管理器设置。选择程序包源,点击“+”号,输入名字和项目地址(http://domain/nuget)

选择自己的项目,右键管理NuGet程序包,点击联机,选择你刚输入的名字,就可以看到你上传的Package包,点击安装即可

管理NuGet程序包中,除联机之外,还有已安装的包(可删除包引用)和更新(可更新包引用)

添加引用之后,自动创建的packages.config文件很重要,很重要,很重要

4:调试

打开解决方案所在的目录,找到packages文件夹,打开对应包的文件夹,进入src目录,即是程序的源代码文件

 

posted on 2016-09-22 16:57  lwein  阅读(491)  评论(0编辑  收藏  举报