2015-08-19 16 views
6

Stworzyłem dummy Hello Project ASP.NET 5 (MVC 6) obsługiwany w Git Visual Studio Online. Wykonałem instrukcje opisane w artykule this document, aby utworzyć i zainstalować na moich stronach internetowych Azure.Buduj ASP.NET 5 na witryny Azure z Visual Studio Online ERROR_FILE_IN_USE

Zajęło mi kilka prób, ponieważ kompilacja nie powiodła się z błędami takimi jak "Nie można przywrócić pakietu NuGet" lub nieistniejącego już folderu WWW (który musiałem zatwierdzić do kontroli kodu źródłowego, aby to działało), ale mam to działa, a aplikacja jest działa i działa.

Problem, który potrzebuję pomocy, dotyczy konfiguracji Continuous Integration. W Visual Studio wybrałem wyzwalacz CI do budowania/wdrażania, gdy w moim głównym oddziale znajduje się odprawa. Spowoduje to prawidłowe uruchomienie, ale ciągle kończy się niepowodzeniem z tym błędem.

Error Code: ERROR_FILE_IN_USE More Information: Web Deploy cannot modify the file 'AspNet.Loader.dll' on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock, or use the AppOffline rule handler for .Net applications on your next publish attempt.

Jak rozwiązać ten problem?

Dziękuję.

PS: Nie wiem również, dlaczego w witrynach Azure w ramach wdrożenia nie widzę dziennika. Kiedy używałem haka GitHub, wyświetlałem wszystkie nieudane/udane wdrożenia.

Zwykle w Azure ramach aplikacji internetowych> wdrożeń

Odpowiedz

1

wpadłem na ten sam problem. Prawdopodobnie istnieją bardziej eleganckie sposoby radzenia sobie z nim, jeśli masz wiele stanowisk wdrożeniowych, ale moja sytuacja, w której ma miejsce minuta przestoju podczas wdrażania, jest akceptowalna.

Możesz zmodyfikować skrypt, aby używać Start-AzureWebsite i Stop-AzureWebsite Uwaga: Dodałem $ hostNameIndex, ponieważ musi to zmienić, jeśli dodasz nazwy domen. Następnie możesz przekazać to w Argumentach skryptu Azure PowerShell.

 
    param($websiteName, $packOutput, $hostNameIndex = 1) 
    Stop-AzureWebsite -Name $websiteName 
    $website = Get-AzureWebsite -Name $websiteName 

    # get the scm url to use with MSDeploy. 
    # By default this will be the second in the array. Changes when you add custom domain names. 
    # Here I have the default and 2 custom so scm is in 4th position ie. index: 3 
    $msdeployurl = $website.EnabledHostNames[$hostNameIndex] 

    $publishProperties = @{'WebPublishMethod'='MSDeploy'; 
         'MSDeployServiceUrl'=$msdeployurl; 
         'DeployIisAppPath'=$website.Name; 
         'Username'=$website.PublishingUsername; 
         'Password'=$website.PublishingPassword} 


    $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 
    Start-AzureWebsite -Name $websiteName 

Zasoby:

  1. https://msdn.microsoft.com/en-us/library/azure/dn495288.aspx
  2. https://msdn.microsoft.com/en-us/library/azure/dn495185.aspx
  3. https://msdn.microsoft.com/Library/vs/alm/Build/azure/deploy-aspnet5
+0

Dziękuję. To miłe obejście problemu, ale nie widzę powodu, dla którego to wdrożenie nie wykorzystuje nowego kompilatora i po prostu odświeża aplikację bez ponownego uruchamiania .. :( – iberodev

+1

Nie jestem pewien, czy Roslyn ma tu za dużo do zrobienia. Z Roslyn kompilujemy artefakty w pamięci zamiast bibliotek opartych na plikach podczas pracy.Tutaj kompilacja tworzy bibliotekę DLL jako artefakty kompilacji, a następnie przesyła je do Azure.Myślę, że lokalnie pula aplikacji jest nadal przetwarzana, gdy wprowadzana jest zmiana kodu Tak czy inaczej, problem polega na tym, że Loader jest zablokowany i zatrzymując stronę internetową, zmuszamy ją do puszczenia. Mam nadzieję, że ma sens? Mam również nadzieję, że jest poprawna :) –

+0

Doskonale, to ma sens. – iberodev