我想运行一个本地NuGet Gallery来为我的构建系统提供依赖项。
我注意到在web.config中它要求提供Azure详细信息,但代码似乎建议您可以选择“FileSystem”作为存储后端。
我的问题是:
我正在尝试避免使用文件系统,因为这就是我们现在使用的NuGet Server,它非常慢。一些开发人员喜欢打包并推送每一个成功的构建,因此可伸缩性非常重要。
我希望这里的任何答案也能帮助别人。对于背景,这是设置您自己的NuGet Gallery的一个很好的链接。遗憾的是,作者省略了与实际包存储有关的所有细节:https://github.com/NuGet/NuGetGallery/wiki/Hosting-the-NuGet-Gallery-Locally-in-IIS
答案 0 :(得分: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,则必须对代码进行一些更改。
首先,创建一个名为SqlServerFileStorageService
的类并实现IFileStorageService
。该接口有几种方法。重要的是GetFile()
和SaveFile()
。合并folderName
和fileName
将创建一个可在数据库表中使用的唯一键。
您可以使用相同的连接字符串 NuGetGallery 或为您的数据访问添加新的连接字符串。
然后,您将一个项目添加到名为PackageStoreType
的枚举SqlServer
。
在ContainerBinding.cs中添加PackageStoreType.SqlServer
的案例以绑定到SqlServerFileStorageService
。
现在,NuGet Gallery应该创建一个SqlServerFileStorageService
,所有获取和保存都将使用您的类将blob存储在SQL Server中。
希望有所帮助。