Удаленная отладка веб-сайта Azure с помощью Git deploy не работает

Я пробовал новую функцию удаленной отладки для веб-сайтов Azure, но я думаю, что, возможно, столкнулся с проблемой: я могу заставить ее работать правильно, только если я использую веб-публикацию. Если я развертываю сайт с локальным развертыванием git, отладчик присоединяется, но символы отладки не загружаются (точки останова показывают предупреждение).

Я попытался как настроить конфигурацию выпуска для включения файлов PDB (поскольку git deploy Azure использует конфигурацию выпуска по умолчанию), так и использовать пользовательский развернуть сценарий, созданный полная здесь и установка команды сборки для использования конфигурации отладки. В обоих случаях я все еще получаю ту же проблему, что и символы не загружаются.

Я чувствую, что проблема, вероятно, одна из следующих:

  1. Azure выполняет какое-то пользовательское действие после веб-публикации, которое необходимо выполнить, чтобы разрешить удаленную отладку
  2. параметры сборки, используемые сценариями развертывания git отсутствует какой-то флаг, который вызывает вывод PDB для веб-приложения (я не думаю, что это вероятно)
  3. Azure не соблюдает конфигурацию, которую я использую в сценарии развертывания, когда сайт фактически запущен и скомпилирован по требованию

в конечном итоге я надеюсь написать несколько сценариев автоматического развертывания, и я бы предпочел использовать развертывание git, чем веб-публикацию для этого. Что действительно озадачивает меня, так это то, что это не удается даже с набор конфигурации выпуска для включения файлов PDB. Это действительно заставляет меня думать, что в Azure для веб-публикации должно быть что-то дополнительное, что не сделано для развертывания git. Есть ли у кого-нибудь идеи о том, что может быть причиной разницы здесь?

Пользовательский Сценарий Развертывания Git

Я включаю пользовательский сценарий развертывания, созданный azure site deploymentscript для справки и для отображения флагов сборки, которые он использует. Соответствующие части после :: Deployment раздел.

@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off

:: ----------------------
:: KUDU Deployment Script
:: Version: 0.1.5
:: ----------------------

:: Prerequisites
:: -------------

:: Verify node.js installed
where node 2>nul >nul
IF %ERRORLEVEL% NEQ 0 (
  echo Missing node.js executable, please install node.js, if already installed make sure it can be reached from current environment.
  goto error
)

:: Setup
:: -----

setlocal enabledelayedexpansion

SET ARTIFACTS=%~dp0%..artifacts

IF NOT DEFINED DEPLOYMENT_SOURCE (
  SET DEPLOYMENT_SOURCE=%~dp0%.
)

IF NOT DEFINED DEPLOYMENT_TARGET (
  SET DEPLOYMENT_TARGET=%ARTIFACTS%wwwroot
)

IF NOT DEFINED NEXT_MANIFEST_PATH (
  SET NEXT_MANIFEST_PATH=%ARTIFACTS%manifest

  IF NOT DEFINED PREVIOUS_MANIFEST_PATH (
    SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%manifest
  )
)

IF NOT DEFINED KUDU_SYNC_CMD (
  :: Install kudu sync
  echo Installing Kudu Sync
  call npm install kudusync -g --silent
  IF !ERRORLEVEL! NEQ 0 goto error

  :: Locally just running "kuduSync" would also work
  SET KUDU_SYNC_CMD=node "%appdata%npmnode_moduleskuduSyncbinkuduSync"
)
IF NOT DEFINED DEPLOYMENT_TEMP (
  SET DEPLOYMENT_TEMP=%temp%___deployTemp%random%
  SET CLEAN_LOCAL_DEPLOYMENT_TEMP=true
)

IF DEFINED CLEAN_LOCAL_DEPLOYMENT_TEMP (
  IF EXIST "%DEPLOYMENT_TEMP%" rd /s /q "%DEPLOYMENT_TEMP%"
  mkdir "%DEPLOYMENT_TEMP%"
)

IF NOT DEFINED MSBUILD_PATH (
  SET MSBUILD_PATH=%WINDIR%Microsoft.NETFrameworkv4.0.30319msbuild.exe
)

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Deployment
:: ----------

echo Handling .NET Web Application deployment.

:: 1. Restore NuGet packages
IF /I "azure-test.sln" NEQ "" (
  call "%NUGET_EXE%" restore "%DEPLOYMENT_SOURCE%azure-test.sln"
  IF !ERRORLEVEL! NEQ 0 goto error
)

:: 2. Build to the temporary path
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
  %MSBUILD_PATH% "%DEPLOYMENT_SOURCE%azure-testazure-test.csproj" /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder     /p:_PackageTempDir="%DEPLOYMENT_TEMP%";AutoParameterizationWebConfigConnectionStrings=false;Configuration=Debug /p:SolutionDir="%DEPLOYMENT_SOURCE%."     %SCM_BUILD_ARGS%
) ELSE (
  %MSBUILD_PATH% "%DEPLOYMENT_SOURCE%azure-testazure-test.csproj" /nologo /verbosity:m /t:Build     /p:AutoParameterizationWebConfigConnectionStrings=false;Configuration=Debug /p:SolutionDir="%DEPLOYMENT_SOURCE%." %SCM_BUILD_ARGS%
)

IF !ERRORLEVEL! NEQ 0 goto error

:: 3. KuduSync
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
  call %KUDU_SYNC_CMD% -v 50 -f "%DEPLOYMENT_TEMP%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd"
  IF !ERRORLEVEL! NEQ 0 goto error
)

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: Post deployment stub
call %POST_DEPLOYMENT_ACTION%
IF !ERRORLEVEL! NEQ 0 goto error

goto end

:error
echo An error has occurred during web site deployment.
call :exitSetErrorLevel
call :exitFromFunction 2>nul

:exitSetErrorLevel
exit /b 1

:exitFromFunction
()

:end
echo Finished successfully.

1 ответов


2/8/2014 обновление

некоторые исправления были сделаны в WAWS,и теперь можно сделать отладочную работу при использовании git, правильно загрузив серверные PDBs. Чтобы это сработало, вам нужно сделать одну из двух вещей (т. е. вам не нужно делать обе). Он может работать как в VS 2012, так и в 2013.

  1. выключите только отладку моего кода: просто выключите этот параметр в настройках отладчика VS и попробуйте отладить Azure Web Сайт.
  2. сборка в режиме отладки: для этого в сборке сервера можно перейти на портал Azure и добавить Апсетинг SCM_BUILD_ARGS, стоимостью -p:Configuration=Debug (больше деталей здесь). Затем перейдите на страницу развертывания и нажмите кнопку повторного развертывания (для текущего развертывания). Затем прикрепите от VS, и все должно работать!

оригинальный ответ

действительно, это не работает сегодня, и мы пытаемся понять, как мы могли бы заставить его работать. В корне проблема заключается в том, что отладчик Visual Studio ожидает найти PDBs на клиенте, в то время как в случае git они существуют только на сервере.

этой статьи обсуждает изменения в том, как отладчик работает между 2010 и более новыми версиями, и это, вероятно, влияет на вещи.

требуется дополнительное расследование, но это положение вещей прямо сейчас.