在内部架设NuGet服务器

在公司内部有很多基础框架或者基础组件,甚至对于使用SOA架构的公司来说,会有大量的业务组件的契约程序集,对于这些框架或组件的引用管理有的人使用源代码管理工具,但是NuGet相比源代码管理工具更方便:

1) 安装和卸载:不需要手动添加和移除引用,不需要手动改写配置文件甚至是一些初始化服务的代码。版本升级也只需要执行一条命令。

2) 打包:多文件打包,支持依赖管理等,使用的人没有繁琐的配置。

对于官方的包,可以在http://www.nuget.org/ 找到,自己也可以提交包上去。但是如果不希望把包公开的话,可以在内部架设一个NuGet服务器。

下面介绍一下基本步骤以及如何进行打包。

1) 下载 NuGetServer.rar (包含源代码,改编自mceranski-nugetserver,找不到原始下载地址了)编译后,发布到内网服务器上。这个MVC3网站有几个功能:

一是提供Nuget的服务,提供所有包的信息,供VS2010中NuGet包管理器使用

二是提供了几个页面,可以上传包也可以浏览所有的包

三是提供了一个web服务,可以供程序在编译后自动上传包

2) 下载 Lib.rar (仅是可执行文件),解压缩到解决方案目录下的Lib目录中。这个压缩包里提供了两个程序:

一是官网提供的NuGet.exe小工具,可以打包文件称nupkg

二是自己写的一个上传包到NuGet服务端Web服务的小工具,这里是源代码,它会上传最新编译的那个包

3) 配置需要打包的项目的属性:

IF NOT "$(ConfigurationName)"=="Release" EXIT /B 0 
IF NOT EXIST $(SolutionDir)ReleasePackages MD $(SolutionDir)ReleasePackages 
$(SolutionDir)Libs\NuGet.exe Pack $(ProjectDir)$(ProjectName).nuspec -o $(SolutionDir)ReleasePackages\ 
$(SolutionDir)Libs\NuGetPackageUploader.exe $(SolutionDir)ReleasePackages\

这段脚本完成的功能是:

如果是Release方式编译的话,先创建ReleasePackages文件夹,然后调用NuGet.exe 打包,最后调用NuGetPackageUploader.exe 上传包

4) 在项目中创建[项目名].nuspec,包描述文件:

<?xml version="1.0" encoding="utf-8"?> 
<package> 
  <metadata> 
    <id>WcfExtension</id> 
    <version>1.0.0.0</version> 
    <title>WcfExtension</title> 
    <authors>作者</authors> 
    <projectUrl>项目地址</projectUrl> 
    <description>A communication framework based on Wcf</description> 
  </metadata> 
  <files> 
    <file src="bin\Release\*.dll" target="lib" /> 
    <file src="bin\Release\*.transform" target="content" /> 
  </files> 
</package> 
在这里,我们把所有的dll打入包,并且还把用于转换配置文件的transform文件打入包。

为了自动在配置文件中增加节点,我们在项目文件下创建app.config.transform和web.config.transform,设置为:

文件内容和普通的配置文件无异:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
  <configSections> 
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> 
  </configSections> 
  <appSettings> 
    <add key="configservice_address" value="192.168.129.11:1888/WcfConfigService.svc" /> 
    <add key="logservice_address" value="192.168.129.12:1889/WcfLogService.svc" /> 
    <add key="redis_address" value="192.168.129.175" /> 
    <add key="redis_message_client_channel" value="WcfConfigClientChange"/> 
    <add key="redis_message_service_channel" value="WcfConfigServiceChange"/> 
  </appSettings> 
  <unity configSource="unity.config" /> 
</configuration>

5) 以release编译项目之后,可以发现ReleasePackages中多了一个包,并且这个包会上传到远程的NuGet服务端。

如果没有上传成功,请检查NuGetPackageUploader.exe.config中的地址是否修改为你部署的服务端的地址。

6) 在官网安装了VS2010的NuGet包管理器插件之后:

配置一下NuGet服务端地址应该就可以看到自己上传的所有包了:

如果你的网站部署到nuget.xxx.com,那么这里的地址填写nuget.xxx.com/nuget就可以了。

找到包点击Install按钮就可以安装上这个组件了。

打开包管理器控制台,输入get-help NuGet,可以看到其它的一些命令:

------------------        ---------------------------------------------- 
Get-Package                Gets the set of packages available from the package source.

Install-Package            Installs a package and its dependencies into the project.

Uninstall-Package        Uninstalls a package. If other packages depend on this package, 
                        the command will fail unless the –Force option is specified.

Update-Package            Updates a package and its dependencies to a newer version.

New-Package                Creates a new package when supplied with a Nuspec package specification file.

Add-BindingRedirect        Examines all assemblies within the output path for a project and adds binding 
                        redirects to the application (or web) configuration file where necessary. 
                    
Get-Project                Returns a reference to the DTE (Development Tools Environment) for the active 
                        or specified project.

转自:http://www.cnblogs.com/lovecindywang/archive/2011/05/12/2044301.html

时间: 2024-10-12 22:04:08

在内部架设NuGet服务器的相关文章

在内部架设NuGet服务器(转)

在公司内部有很多基础框架或者基础组件,甚至对于使用SOA架构的公司来说,会有大量的业务组件的契约程序集,对于这些框架或组件的引用管理有的人使用源代码管理工具,但是NuGet相比源代码管理工具更方便: 1) 安装和卸载:不需要手动添加和移除引用,不需要手动改写配置文件甚至是一些初始化服务的代码.版本升级也只需要执行一条命令. 2) 打包:多文件打包,支持依赖管理等,使用的人没有繁琐的配置. 对于官方的包,可以在http://www.nuget.org/ 找到,自己也可以提交包上去.但是如果不希望把

超详细图解:自己架设NuGet服务器

原文:http://diaosbook.com/Post/2012/12/15/setup-private-nuget-server NuGet 是.NET程序员熟知的给.NET项目自动配置安装library的工具,现在已经整合在了VS2010 SP1和VS2012里.但有时候,尤其在某些公司内部,因为公司防火墙,VS是没办法连接NuGet服务器的.所以我们需要自己架设一个私服. 一.网站构建 首先,确保你的机器在互联网上,并且能够访问NuGet服务器. 创建一个空的ASP.NET网站,选择Fr

用ProGet搭建内部的NuGet服务器(更新安装步骤)

以下是转自dudu的文章,但是我发觉时间的问题,他的安装方法已经不适用了,所以这里我更新了安装方法: 最近团队内部用的一个很简陋的NuGet服务器出问题了,nuget push发包,客户端显示发布成功,服务器上就是没有.懶得再去排查这个问题,早就想换掉这个过于简陋的NuGet服务器,借此机会直接弃旧迎新吧. 在网上搜了搜,发现了ProGet,感觉不错,虽然是商业软件,但提供了免费版本,于是选用它重新搭建我们的NuGet服务器.下面分享一下搭建操作步骤. 1)下载地址:http://inedo.c

搭建公司内部的NuGet服务器

1.  创建NuGet项目 (注意:解决方案名称可以自定义为其他的名称) 2.   安装NuGet Server 在 “NuGetServer” 项目上,右键选择 “管理NuGet程序包” ,选择 “联机” ,右上角搜索框中输入“NuGet.Server”  Enter,在搜索结果中选择 NuGet.Server 项,进行安装即可(如下图所示). 注意:如果安装最后,提示 替换 Web.config ,请选择“全是”. 3.  编译NuGet Server项目 编译“NuGetServer”项目

架设DNS服务器 实战指南(主、从、子、定向转发多图)

一.DNS基础知识(先科普一下): 1.DNS出现的环境: TCP/IP协议通信是基于IP地址的,但是网络管理员无法记住那一串串单调的数字.因此大家基本上是通过访问计算机域名,然后通过 DNS服务器将计算机域名解析为IP地址来实现的.     2.什么是DNS: DNS:域名系统(Domain  Name  System)用于命名组织到域层次结构中的计算机和网络服务.DNS命名用于TCP/IP网络中,通过用户友好的名称查找计算机.当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与

如何架设Git服务器

转:http://my.oschina.net/fgq611/blog/157653 目录[-] 1. 架设Git服务器 2. 搭建Gitweb 3. Push之后发送邮件通知 4. 参考链接 在开发的过程中往往需要一个git服务器来管理和保存代码,如何自己架设一个git服务器呢,方法很简单,这里介绍一下如何架设git服务器,搭建gitweb和push代码之后发送邮件通知组内成员. 1. 架设Git服务器 我们以Ubuntu为例.首先,在git服务器上创建一个名为 'git' 的用户,并为其创建

CentOS下架设Telnet服务器

CentOS下架设Telnet服务器1.什么是Telnet?来自度娘的解释:Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接到服务器.终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样.可以在本地就能控制服务器.要开始一个telnet会话,必须输入用户名和密码来登录服务器.Telnet是常用的

架设rsync服务器同步数据

什么是rsync rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用.本文主要讲述的是如何自架rsync服 务器,以实现文件传输.备份和镜像.相对tar和wget来说,rsync 也有其自身的优点,比如速度快.安全.高效. rsync的安装 在CentOS服务器,我们可以执行以下命令安装 yum install rsync 对于debian.ubuntu服务器,则是以下命令 sudo apt-get install rsync

使用NuGet.Server搭建公司内部的Nuget(包)管理器

使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言 Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基于.NET Framework的应用时,Nuget能把在项目中添加.移除和更新引用的工作变得更加快捷方便.这是维基百科中的定义,实际上Nuget就是一个包管理器,类似于Java的Maven,可以帮助我们更方便的管理dll. 相信每个人都从官方的nuget服务器上下载过一些第三方组件.如:log4net.qu