La depuración remota del sitio web de Azure con git deploy no funciona

He estado probando la nueva función de depuración remota para los sitios web de Azure, pero creo que puede haber encontrado un problema: solo puedo hacer que funcione correctamente si uso Publicación web. Si implemento un sitio con implementación de git local, el depurador se adjunta pero los símbolos de depuración no están cargados (los puntos de interrupción muestran la advertencia).

Intenté configurar la configuración de la versión para incluir archivos PDB (ya que el despliegue de git de Azure usa la configuración de la versión predeterminada) y al usar un script de implementación personalizado generado por elazure site deploymentscript comando detalladoaquí y configurando el comando de compilación para usar la configuración de depuración. En ambos casos, sigo teniendo el mismo problema de que los símbolos no están cargados.

Siento que el problema es probablemente uno de los siguientes:

Azure ejecuta algún tipo de acción personalizada después de una publicación web que debe ejecutarse para permitir la depuración remotaLas opciones de compilación utilizadas por los scripts de implementación de git carecen de algún tipo de indicador que está causando que la salida de PDB no esté presente para la aplicación web (no creo que este sea el caso)Azure no respeta la configuración que uso en la secuencia de comandos de implementación cuando el sitio realmente se está ejecutando y está compilado a pedido

En última instancia, espero escribir algunos scripts de implementación automatizados y prefiero utilizar la implementación de git en lugar de Web Publish para lograr esto. Lo que realmente me desconcierta es que esto falla incluso con el conjunto de configuración de la versión para incluir los archivos PDB. Realmente me hace pensar que debe hacerse algo extra en Azure for Web Publish que no se haga para la implementación de git. ¿Alguien tiene alguna idea de lo que puede estar causando la diferencia aquí?

Script de implementación de Git personalizado

Estoy incluyendo el script de despliegue personalizado generado porazure site deploymentscript para referencia y para mostrar las banderas de construcción que utiliza. Las partes relevantes son después de la:: Deployment sección.

@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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta