C# 由于文件锁定(msvcr100.dll),到Azure Web App(应用程序服务)的TFS CI生成失败
问题 尝试从TFS CI发布到Azure Web应用时出现部署错误。文件被锁定,这将阻止生成更新 症状C# 由于文件锁定(msvcr100.dll),到Azure Web App(应用程序服务)的TFS CI生成失败,c#,azure,visual-studio-2013,tfs,C#,Azure,Visual Studio 2013,Tfs,问题 尝试从TFS CI发布到Azure Web应用时出现部署错误。文件被锁定,这将阻止生成更新 症状 手动发布(从VisualStudio中进行Web部署发布)通常会成功 停止Web应用程序并发布可以使其成功,但是如果我们每次都需要停止并启动Web应用程序,那么这就违背了CI的要点 CI发布到Web角色和工作人员角色似乎没有此问题,我们仅在发布到Web应用程序(以前是网站,当前的Azure门户术语现在是应用程序服务)时才发现此问题 只有通过TFS从CI生成发布才会以这种方式持续失败 错误
- 手动发布(从VisualStudio中进行Web部署发布)通常会成功
- 停止Web应用程序并发布可以使其成功,但是如果我们每次都需要停止并启动Web应用程序,那么这就违背了CI的要点
- CI发布到Web角色和工作人员角色似乎没有此问题,我们仅在发布到Web应用程序(以前是网站,当前的Azure门户术语现在是应用程序服务)时才发现此问题
- 只有通过TFS从CI生成发布才会以这种方式持续失败
- 我们使用的是New Relic-从那以后我们已经移除了New Relic,这个问题仍然存在。该二进制文件似乎是一个Microsoft库,但不清楚它与应用程序的关系(未被引用)
- 其他一些SO问题解决了与发布类似的问题,但这些问题都与从TFS CI获取此问题无关。
- 上述问题中的一个答案建议在发布配置文件中使用EnablesDeployAppOffline配置,添加此配置可以从VS中手动执行发布,但无法解决从TFS/CI自动发布时的问题
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
引用自:新的“Deploy AzureRM Web App”任务具有使应用程序脱机的选项,这将防止此错误
有关复选框,请参见屏幕截图
我已在发布配置文件中设置了True,但从TFS CI发布时仍会发生错误@ดาว 您使用的是MSDeploy还是MSBuild?我如何使用VSO tfs build进行设置?您找到解决方案了吗?没有找到解决方案,目前我们直接从VS发布此项目。谢天谢地,此网站超出了我们的主要产品构建周期,但这意味着我们根本无法使用CI流程。阻止我们将我们的主要产品从云服务移动到应用服务。这太糟糕了,我试图使用VSTS设置CI,但我遇到了这个错误,手动重新启动应用程序毫无意义,因为CI goescheck使用powershell脚本为我和在线构建系统修复了这个问题。不太清楚它叫什么,vNext,VSO?