我們做了一個非常類似的過程,對於大約50多個網站使用相同的代碼庫。我們使用Azure REST Management API來完成部署。我建議將網站特定的設置從web.config移動到單獨的ServiceConfiguration..cscfg文件,然後使用CloudConfigurationManager.GetSetting("settingsKey")
獲取配置值。創建一個簡單的密鑰列表,可能是基於域的訪問您的設置。
Azure團隊使用Management API here有一個很好的代碼示例。我們對此進行了調整,以便在我們的代碼庫中創建控制檯應用程序並在TFS構建過程中調用該控制檯應用程序下面是我們用得到的託管服務列表中訂閱,然後更新每個託管服務部署的相關代碼:
var packageUrl = UploadFileToBlob(package);
var services = new ListHostedServicesCommand();
services.Run();
hostedServices = services.HostedServices;
var date = DateTime.UtcNow.ToString("yyyyMMdd-hhmmss-");
var label = date + "some-deployment-name";
var fileinfo = new FileInfo(config);
if (!string.IsNullOrEmpty(packageUrl) && fileinfo.Exists)
{
// get the url of the package uploaded to blob
AzureCommand.PackageLocation = packageUrl;
AzureCommand.ConfigFileLocation = fileinfo.FullName;
AzureCommand.DeploymentSlot = "production";
AzureCommand.Mode = "auto";
AzureCommand.Label = label;
foreach (var hostedService in hostedServices)
{
Console.WriteLine("updating: " + hostedService.ServiceName);
// get the deployment unique name - required for upgrade
AzureCommand.HostedServiceName = hostedService.ServiceName;
AzureCommand.DeploymentName = null;
var getDeployment = new GetDeploymentCommand();
getDeployment.Run();
AzureCommand.DeploymentName = getDeployment.Deployment.Name;
// upgrade the existing deployment
var upgradeDeployment = new UpgradeDeploymentCommand();
upgradeDeployment.Run();
servicesOperations.Add(upgradeDeployment.TrackingId, upgradeDeployment.ServiceManagement);
}
// check status of all operations submitted
foreach (var servicesOperation in servicesOperations)
{
// check status of operations
AzureCommand.WaitForAsyncOperation(servicesOperation.Value, servicesOperation.Key);
}
}
我們使用[八達通](https://octopusdeploy.com/)項目等任務。 – VMAtm 2014-08-11 08:37:30
另請參閱此[問題](http://programmers.stackexchange.com/questions/122729/alternatives-to-octopus-for-deploying-net-applications#) – VMAtm 2014-08-11 08:43:36