2016-01-08 17 views
5

問題TFS CI建立天青Web應用程序(應用服務)失敗,因爲文件鎖定(msvcr100.dll)

嘗試發佈從TFS CI的Azure的Web應用程序時,遇到了一個部署錯誤。文件被鎖定,這會阻止構建更新。

症狀

  • 出版手動(Web部署在Visual Studio中發佈),通常成功。
  • 停止Web應用程序併發布允許它成功,但是如果我們需要每次都需要停止並啓動Web應用程序,那麼這會損害我們CI的重點。
  • CI發佈到Web角色和工作者角色似乎沒有這個問題,我們只在將它發佈到Web應用程序(以前的Web站點,當前的Azure門戶術語現在是應用程序服務)上。
  • 只有通過TFS通過CI構建發佈才能以此方式一致地失敗。

錯誤

Web部署任務失敗。 (Web Deploy無法修改目標文件 'msvcr100.dll',因爲它被外部 進程鎖定。爲了允許發佈操作成功,您可能需要重新啓動應用程序以釋放鎖,或使用 的AppOffline規則處理.NET應用程序在你的下一個發佈 試圖瞭解更多:。 http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE

在鏈路的信息是不是非常有幫助。

ERROR_FILE_IN_USE 診斷 - 由於目標文件當前正在使用中,所以無法覆蓋或刪除目標文件。 解決方案 - 確保在執行同步之前目標文件未被使用。如果要將內容同步到IIS 7或更高版本上託管的網站 (使用appHostConfig,iisApp或 contentPath提供程序),請考慮通過啓用appOffline規則在 期間使應用程序脫機。

試圖分辨率

編輯

How to take web app offline while publishing?與使用EnableMSDeployAppOffline配置走的是應用的離線交易 - 不幸的是這個配置似乎只通過Visual Studio(不CI)做WebDeploy時得到支持。

+0

見截圖你找到了一個解決方案? –

+0

沒有找到解決方案,目前我們直接從VS發佈該項目。值得慶幸的是,這個網站不在我們的主要產品構建週期內,但這意味着我們無法使用我們的CI流程。儘管如此,阻止我們將主要產品從Cloud Service遷移到App Service。 –

+0

這很糟糕,我試圖使用VSTS設置配置項,但我得到這個錯誤,並且手動重新啓動應用程序沒有任何意義,只要CI去 –

回答

2

您可以使用CI中的Web Deploy v3來部署您的Web應用程序。

在Web Deploy V3中,我們添加了支持,可以在發佈前自動將ASP.Net 應用程序脫機。如果用戶 想要確保其應用程序沒有鎖定文件 (例如,SQL CE sdf文件一次只允許與文件的一次連接 )被覆蓋,或者如果他們想要確保訪問者 他們的網站不能影響發佈過程。發佈流程 完成後,App_Offline.htm文件將被刪除,並且網站 將再次聯機。

或者你可以添加PowerShell腳本像下面部署Web應用程序天青:

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 

借鑑:https://msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/deploy-aspnet5

+0

我已經在發佈配置文件中設置了 True,但從TFS發佈時仍會出現錯誤CI。 –

+0

@ดาว使用MSDeploy還是MSBuild? –

+0

我將如何使用VSO tfs構建這個設置? – TWilly

0

新的 「部署AzureRM Web App的」 任務有一個選項使應用程序脫機,這將防止此錯誤。

的複選框

enter image description here

+0

哇!那個截圖從哪裏來? –

+0

https://www.visualstudio.com/en-us/features/continuous-integration-vs.aspx VS在線編譯系統。不完全確定它叫做vNext,VSO? – TWilly

+0

在我的情況下,這並不能解決問題。奇怪。 – sebvst

相關問題