2016-01-08 17 views
5

ProblemTFS CI zbudować w Azure Web App (App Service) nie powiedzie się z powodu pliku blokującego (msvcr100.dll)

otrzymuję błąd podczas próby wdrażania publikować na Azure Web App z TFS CI. Plik jest zablokowany, co uniemożliwia aktualizację kompilacji.

Objawy

  • wydawnictwa ręcznie (Web Deploy opublikować z poziomu Visual Studio), zazwyczaj udaje.
  • Zatrzymanie aplikacji sieciowej i publikowanie umożliwia jej powodzenie, jednak to pokonuje punkt naszego CI, jeśli potrzebujemy zatrzymać i uruchomić aplikację internetową za każdym razem.
  • CI publikuje do ról sieci Web, a ról pracowników nie wydaje się, że mają ten problem, dostajemy go tylko w przypadku publikowania w aplikacjach internetowych (dawniej witryny sieci Web, bieżący okres usługi Azure Portal to teraz usługa aplikacji).
  • Tylko publikowanie z kompilacji CI za pośrednictwem TFS kończy się niepowodzeniem w ten sposób.

Błąd

Web zadanie rozmieszczania nie powiodła się. (Wdrażanie aplikacji WWW nie może zmodyfikować pliku "msvcr100.dll" w miejscu docelowym, ponieważ jest zablokowany przez zewnętrzny proces . Aby umożliwić pomyślne zakończenie operacji publikowania, można ponownie uruchomić aplikację, aby zwolnić blokadę, lub użyj procedurę obsługi reguł AppOffline dla aplikacji .NET na następnym publikować próbę Dowiedz się więcej na stronie:.. http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE)

informacje w linku nie jest bardzo pomocne.

ERROR_FILE_IN_USE Diagnoza - Plik docelowy nie może zostać nadpisany lub usunięty, ponieważ jest aktualnie używany. Rozdzielczość - Upewnij się, że plik docelowy nie jest używany przed wykonaniem synchronizacji. Jeśli synchronizujesz zawartość z witryną internetową hostowaną w usługach IIS 7 lub nowszych (przy użyciu dostawców appHostConfig, iisApp lub contentPath), rozważ wyłączenie tej aplikacji w trybie offline podczas synchronizacji, włączając regułę appOffline.

Próby uchwał

Edit

How to take web app offline while publishing? oferty z podjęciem aplikacji w trybie offline przy użyciu konfiguracji EnableMSDeployAppOffline - niestety ten config tylko wydaje się być obsługiwane, gdy robi WebDeploy przez Visual Studio (nie CI).

+0

Czy znaleźć rozwiązanie dla tego? –

+0

Nie znaleziono rozwiązania, obecnie publikujemy ten projekt bezpośrednio z VS. Na szczęście ta strona jest poza głównym cyklem budowy produktu, ale oznacza, że ​​nie możemy w ogóle korzystać z naszego procesu CI. Jednak powstrzymanie nas przed przeniesieniem naszego głównego produktu z usługi Cloud Service do usługi App Service. –

+0

To jest do bani, próbowałem skonfigurować CI przy użyciu VSTS, ale otrzymuję ten błąd, a ręczne ponowne uruchamianie aplikacji nie ma sensu, jeśli chodzi o CI –

Odpowiedz

2

Możesz użyć Web Deploy v3 w CI, aby wdrożyć swoją aplikację internetową.

W aplikacji Web Deploy V3 dodaliśmy obsługę automatycznego pobierania aplikacji ASP.Net w trybie offline przed opublikowaniem. Jest to przydatne, gdy użytkownik chce się upewnić, że jego aplikacja nie ma blokady pliku (np. Pliki sdf SQL CE, które zezwalają tylko na jedno połączenie z plikiem o czasu), które zostały nadpisane lub jeśli chcą że odwiedzający ich witrynę nie mają wpływu na proces publikowania. Po zakończeniu procesu publikowania plik App_Offline.htm zostanie usunięty, a witryna ponownie będzie online.

Albo można dodać skrypt PowerShell jak po wdrożyć aplikację do 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 

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

+0

Mam już zestaw True w profilu publikowania, ale błąd nadal występuje podczas publikowania z TFS CI. –

+0

@ ดาว Czy używasz MSDeploy lub MSBuild? –

+0

jak ustawić to za pomocą kompilacji VSO tfs? – TWilly

0

Nowy "Deploy AzureRM Web App" zadanie ma opcję aby przełączyć aplikację w tryb offline, co zapobiegnie wystąpieniu tego błędu.

patrz ilustracja do wyboru

enter image description here

+0

wow! gdzie jest ten zrzut ekranu? –

+0

https://www.visualstudio.com/en-us/features/continuous-integration-vs.aspx System kompilacji VS Online. Nie wiem dokładnie, jak się nazywa, vNext, VSO? – TWilly

+0

W moim przypadku to nie rozwiązuje problemu. Dziwne. – sebvst

Powiązane problemy