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=".in eleasedata.dll" target="lib et40" /> 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:WindowsMicrosoft.NETFrameworkv4.0.30319msbuild.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目录,即是程序的源代码文件