2012-07-24 55 views
4

我想運行一個本地的NuGet Gallery來爲我的構建系統提供依賴關係。本地NuGet Gallery部署是否需要Azure帳戶?

我注意到它要求Azure的詳細信息web.config中,但代碼似乎表明,你可以選擇「文件系統」作爲一個存儲後端。

我的問題是:

  1. 如果讓我選擇「文件系統」如何配置的目標文件夾?
  2. 我可以改爲將存儲引擎指向SQL Server的內部實例嗎?

我試圖避免使用文件系統,因爲這就是我們現在使用的NuGet Server,它非常慢。一些開發人員喜歡打包並推送每一個成功的構建,因此可伸縮性非常重要。

我希望這裏的任何答案都能幫助其他人。對於背景,這裏是建立你自己的NuGet畫廊的一個很好的鏈接。可悲的是,筆者省略有關實際的包存儲的所有細節:https://github.com/NuGet/NuGetGallery/wiki/Hosting-the-NuGet-Gallery-Locally-in-IIS

+0

你有nuget畫廊的代碼嗎?我想在Azure上託管它,你知道這些步驟嗎? – Neo 2015-06-17 10:23:43

+1

@Neo對於代碼,請按照上面的鏈接和克隆git回購 – Robin 2015-06-17 15:54:20

+0

,但它沒有任何Web項目代碼,也沒有任何Web,配置配置 – Neo 2015-06-17 17:03:01

回答

2

配置文件系統包存儲區:

<appSettings> 
    <add key="Gallery:PackageStoreType" value="FileSystem" /> 
    <add key="Gallery:FileStorageDirectory" value="C:\Path\To\Packages" /> 
</appSettings> 

指向一個不同的SQL Server:

<connectionStrings> 
    <add name="NuGetGallery" connectionString="Data Source=SQLSERVERNAME;Initial Catalog=NuGetGallery;Integrated Security=SSPI" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

編輯:支持SQL Server作爲包存儲

如果你想你的包作爲存儲在SQL Server中的BLOB,你必須做一些Ø f更改爲代碼。

首先,創建一個名爲SqlServerFileStorageService類並實現IFileStorageService。這個接口有幾種方法。重要的是GetFile()SaveFile()。組合folderNamefileName將創建一個可在數據庫表中使用的唯一鍵。

您可以使用相同的連接字符串NuGetGallery或爲您的數據訪問添加一個新的。

然後添加一個項目叫做SqlServer枚舉PackageStoreType

在ContainerBinding.cs增加的情況下,爲PackageStoreType.SqlServer綁定到你的SqlServerFileStorageService

現在的NuGet畫廊應該創建一個SqlServerFileStorageService和所有獲取並保存會使用你的類存儲在SQL Server中的BLOB。

順便說一句:我基於粗略的看代碼。可能還有一兩步,但這些看起來像是你需要關注的主要方面。

希望有所幫助。

+0

謝謝!答案1很好,但我沒有具體說明,因爲#2搞砸了。我的意思是:'我可以將包自己存儲在我自己的SQL實例中,而不必使用Azure帳戶嗎?'。我知道它存儲在SQL中的文件不知所措,但如果出於某種原因,它可能會更好地執行此操作。 – Robin 2012-07-24 15:27:28

+0

我添加了有關如何執行此操作的說明。您需要編輯圖庫代碼。 – Kiliman 2012-07-24 17:52:52

+0

這看起來不像大量的工作 - 感謝您的建議。我會在某個時間點擊它並對FileSystem存儲進行性能測試。 – Robin 2012-07-25 13:30:17