NuGet.Server是由.NET Foundation提供的一个包,用于建立一个ASP.NET应用程序,该应用程序能够在任何运行IIS的服务器上。简单地说,NuGet.Server在服务器上建立一个文件夹,并能够经过HTTP(S)获取内容。设置起来很简单,适用于简单的场景。html
如下为建立ASP.NET Web应用程序的详细步骤。web
在Visual Studio中,选择File> New> Project,搜索“ASP.NET”,为C#选择ASP.NET Web应用程序(.NET Framework)模板,并将Framework设置为“.NET Framework 4.6”:api
为应用程序提供除NuGet.Server之外的合适名称,好比上图的MyServer,选择OK,而后在下一个对话框中选择空模板,而后选择肯定。安全
右键单击该项目,选择管理NuGet包。服务器
在Package Manager UI中,选择Browse选项卡,而后搜索并安装最新版本的NuGet.Server包(若是您的目标是.NET Framework 4.6)。(您也可使用软件包管理器控制台进行安装Install-Package NuGet.Server
。)若是出现提示,请接受许可条款。网络
安装NuGet.Server将空的Web应用程序转换为软件包源代码。它安装了各类其余软件包,Packages
在应用程序中建立一个文件夹,并修改web.config以配置
其余信息(请参阅该文件中的注释以获取详细信息)。app
注意:框架
在NuGet.Server包完成对web.config文件的修改以后,仔细检查它。NuGet.Server可能不会覆盖现有的元素,而是建立重复的元素。当您稍后尝试运行该项目时,这些重复项会致使“内部服务器错误”。例如,若是您在安装NuGet.Server包以前,web.config
包含<compilation debug="true" targetFramework="4.5.2" />
,则NuGet.Server包不会覆盖它,而是会插入第二个<compilation debug="true" targetFramework="4.6" />
。在这种状况下,请删除具备较旧框架版本的元素。dom
要将应用程序发布到服务器时在源中提供包,请在Visual Studio中将每一个.nupkg
文件添加到Packages
的文件夹中,而后将每一个文件的“ 生成操做”设置为“ 内容”并将“ 复制到输出目录”设置为“始终复制(右键>属性):布局
在Visual Studio中本地运行站点(F5)。主页提供了NuGet服务器网址,以下所示。若是您看到错误,请仔细检查您web.config
的重复元素是否在前面的步骤5中提到。
点击上图圈出来的here能够看到关于包的信息。
第一次运行应用程序时,NuGet.Server从新构建Packages
文件夹以包含每一个软件包的文件夹。这与NuGet 3.3引入的本地存储布局相匹配,目的是提升性能。添加更多软件包时,请继续遵循此结构,如上图。
本地测试经过后,根据须要将应用程序部署到其余内部或外部站点。
一旦部署到http://<domain>
,您用于软件包源的URL将会是http://<domain>/nuget
。
在NuGet.Server
1.5及更高版本中,您能够在web.config文件中,修改appSetting/packagesPath的
值自定义包文件夹路径:
<appSettings> <!-- Set the value here to specify your custom packages folder. --> <add key="packagesPath" value="C:\MyPackages" /> </appSettings>
packagesPath
能够是绝对路径或虚拟路径。
当packagesPath
省略或保留为空时,packages文件夹是默认值~/Packages
。
一旦NuGet.Server站点运行,您可使用nuget push 添加软件包,只要您在web.config中设置API密钥值。
安装NuGet.Server包后,web.config
包含一个空appSetting/apiKey
值:
<appSettings> <add key="apiKey" value="" /> </appSettings>
当apiKey
省略或空白时,将包推送到包服务器功能将被禁用。
要启用此功能,请将该apiKey
值设置为一个值(理想状况下为强密码),并确保appSettings/requireApiKey
值为true
:
<appSettings> <!-- Sets whether an API Key is required to push/delete packages --> <add key="requireApiKey" value="true" /> <!-- Set a shared password (for all users) to push/delete packages --> <add key="apiKey" value="" /> </appSettings>
若是您的服务器已经安全,或者您不须要API密钥(例如,在本地团队网络上使用私有服务器时),则能够设置requireApiKey
为false
。全部有权访问服务器的用户均可以往此包服务器推送软件包。
使用NuGet.Server时,nuget delete命令会从存储库中删除一个包,只要您将API密钥包含在注释中便可。
若是您想要改变行为来取消包(将其保留为包恢复),请将web.config中的enableDelisting键更改成true。