Depuração remota do site do Azure com o git deploy não funcionando

Eu testei o novo recurso de Depuração Remota para sites do Azure, mas acho que talvez tenha me deparado com um problema: só posso fazer com que ele funcione corretamente se eu usar a publicação na Web. Se eu implantar um site com implantação de git local, o depurador será anexado, mas os símbolos de depuração não serão carregados (os pontos de interrupção mostrarão o aviso).

Eu tentei definir a configuração Release para incluir arquivos PDB (como a implantação do git do Azure usa a configuração Release por padrão) e usando um script de implantação personalizado gerado peloazure site deploymentscript comando detalhadoAqui e definindo o comando de compilação para usar a configuração de Depuração. Em ambos os casos, ainda recebo o mesmo problema que os símbolos não estão carregados.

Eu sinto que o problema é provavelmente um dos seguintes:

O Azure executa algum tipo de ação personalizada após uma publicação na Web que deve ser executada para permitir a depuração remotaAs opções de construção usadas pelos scripts de implantação do git estão faltando algum tipo de sinalizador que está causando a saída do PDB para não estar presente para o aplicativo da web (não acho que este seja provável)O Azure não está honrando a configuração que uso no script de implantação quando o site está realmente em execução e compilado sob demanda

Por fim, espero escrever alguns scripts de implantação automatizados e prefiro usar a implantação do git do que o Web Publish para fazer isso. O que realmente me deixa perplexo é que isso falha mesmo com o conjunto de configurações de liberação para incluir os arquivos PDB. Isso realmente me faz pensar que deve haver algo extra sendo feito no Azure para publicação na Web que não foi feito para a implantação do git. Alguém tem alguma idéia do que pode estar causando a diferença aqui?

Script de implantação Git personalizado

Estou incluindo o script de implantação personalizado gerado porazure site deploymentscript para referência e para mostrar os sinalizadores de compilação que ele usa. As partes relevantes são após o:: Deployment seção.

@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%\npm\node_modules\kuduSync\bin\kuduSync"
)
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.NET\Framework\v4.0.30319\msbuild.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-test\azure-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-test\azure-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.

questionAnswers(2)

yourAnswerToTheQuestion