ProGet Azure FileShare Package Store Extension
This repo contains the source code for a ProGet 3.x extension that allows the use of Azure File Shares to store packages.
How to use:
- clone the repo
- compile the code
- grab the
ProGetAzureFileShareExtension.progetxfile from the output directory
- create a folder on the ProGet server(s)
- copy the file to the ProGet server(s) to thew new folder
- in ProGet -> Administration -> Advanced Settings, change
- restart IIS and the ProGet service
- ensure that the account that proget is running under has modify rights to %TEMP%
- in ProGet -> Administration -> Manage Feeds -> -> Package Store -> Change, paste the following
<ProGetAzureFileShareExtension.AzureFileShareNuGetPackageStore Assembly="ProGetAzureFileShareExtension"> <Properties RootPath="P:\PackageFolder" DriveLetter="P:" FileShareName="AzureFileShareName" UserName="StorageAccountName" AccessKey="StorageAccountAccessKey" LogFileName="c:\temp\somelogfilepath.log" /> </ProGetAzureFileShareExtension.AzureFileShareNuGetPackageStore>
LogFileName is optional. If not provided, logging is disabled.
Why does this extension exist?
Azure File Shares are the closest thing to a SAN available on Azure. Unfortunately, they do not support domain account security - they have their own username and password (access key). This means that there is no transparent network access to the share.
Therefore, this extension attempts to reconnect the network share before use. Other than that, this extension is (in theory) identical to the default nuget package store built into ProGet.
This code is based on the DefaultNuGetPackageStore class graciously provided by Inedo, and change has deliberately been limited to only modifications.
This has been tested against ProGet 3.8.6. It is known not to work against 4.x.
- Determine if its possible to inherit from DefaultNugetPackageStore, and call base methods to insulate against changes
- Change back to using SDK (instead of dll's in the lib folder) once new version released by Inedo
Copyright 2016 ASOS.com Limited
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.