Dal*_*ale 5 c# tfs azure visual-studio-2013
问题
尝试从TFS CI发布到Azure Web App时出现部署错误.文件被锁定,这会阻止构建更新.
症状
错误
Web部署任务失败.(Web部署无法修改目标上的文件'msvcr100.dll',因为它被外部进程锁定.为了允许发布操作成功,您可能需要重新启动应用程序以释放锁定,或者使用适用于下次发布尝试的.Net应用程序的AppOffline规则处理程序.有关详细信息,请访问:http://go.microsoft.com/fwlink/?LinkId = 221672 #ERROR_FILE_IN_USE .)
链接中的信息不是很有帮助.
ERROR_FILE_IN_USE诊断 - 无法覆盖或删除目标文件,因为它当前正在使用中.解决方案 - 确保在执行同步之前未使用目标文件.如果要将内容同步到IIS 7或更高版本上托管的网站(使用appHostConfig,iisApp或contentPath提供程序),请考虑通过启用appOffline规则在同步期间使应用程序脱机.
尝试过的决议
编辑
如何在发布时使Web应用程序脱机?处理使用EnableMSDeployAppOffline配置使应用程序脱机 - 遗憾的是,在通过Visual Studio(而不是CI)执行WebDeploy时,似乎只支持此配置.
您可以使用CI 中的Web Deploy v3来部署 Web 应用程序。
在 Web Deploy V3 中,我们添加了在发布 ASP.Net 应用程序之前自动使其脱机的支持。如果用户想要确保其应用程序不会对某个文件(例如,一次只允许一个连接到该文件的 SQL CE sdf 文件)进行覆盖锁定,或者如果他们想要确保访问者他们的网站不能影响发布过程。发布过程完成后,App_Offline.htm 文件将被删除,站点将再次上线。
或者,您可以添加如下所示的 PowerShell 脚本来将 Web 应用程序部署到 Azure:
param($websiteName, $packOutput)
$website = Get-AzureWebsite -Name $websiteName
# get the scm url to use with MSDeploy. By default this will be the second in the array
$msdeployurl = $website.EnabledHostNames[1]
$publishProperties = @{'WebPublishMethod'='MSDeploy';
'MSDeployServiceUrl'=$msdeployurl;
'DeployIisAppPath'=$website.Name;
'Username'=$website.PublishingUsername;
'Password'=$website.PublishingPassword}
Write-Output "Stopping web app..."
Stop-AzureWebsite -Name $websiteName
Write-Output "Publishing web app..."
$publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1"
. $publishScript -publishProperties $publishProperties -packOutput $packOutput
Write-Output "Starting web app..."
Start-AzureWebsite -Name $websiteName
Run Code Online (Sandbox Code Playgroud)
参考来源:https://msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/deploy-aspnet5