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。