Das Remote-Debuggen von Azure-Websites mit git deploy funktioniert nicht

Ich habe die neue Remote-Debugging-Funktion für Azure-Websites ausprobiert, bin jedoch möglicherweise auf ein Problem gestoßen: Ich kann sie nur dann zum ordnungsgemäßen Funktionieren bringen, wenn ich Web Publish verwende. Wenn ich eine Site mit local git deploy bereitstelle, wird der Debugger angefügt, aber die Debugsymbole werden nicht geladen (Haltepunkte zeigen die Warnung an).

Ich habe versucht, die Release-Konfiguration so einzustellen, dass sie PDB-Dateien enthält (da Azures Git-Bereitstellung standardmäßig die Release-Konfiguration verwendet) und ein benutzerdefiniertes Bereitstellungsskript zu verwenden, das von generiert wirdazure site deploymentscript Befehl detailliertHier und Festlegen des Build-Befehls zur Verwendung der Debug-Konfiguration. In beiden Fällen bekomme ich immer noch das gleiche Problem, dass die Symbole nicht geladen sind.

Ich glaube, das Problem ist wahrscheinlich eines der folgenden:

Azure führt nach einer Webveröffentlichung eine benutzerdefinierte Aktion aus, die ausgeführt werden muss, um das Remotedebuggen zu ermöglichenIn den von den Skripten für die Git-Bereitstellung verwendeten Erstellungsoptionen fehlt eine Art Flag, das dazu führt, dass die PDB-Ausgabe für die Webanwendung nicht vorhanden ist (ich halte dies für unwahrscheinlich).Azure beachtet nicht die Konfiguration, die ich im Bereitstellungsskript verwende, wenn die Site tatsächlich ausgeführt und bei Bedarf kompiliert wird

Letztendlich hoffe ich, einige automatisierte Bereitstellungsskripte zu schreiben, und ich würde viel lieber die Git-Bereitstellung als Web Publish verwenden, um dies zu erreichen. Was mich wirklich verblüfft, ist, dass dies auch mit der Release-Konfiguration fehlschlägt, die die PDB-Dateien enthält. Ich bin wirklich der Meinung, dass in Azure for Web Publish noch etwas getan werden muss, das nicht für die Bereitstellung von Git erforderlich ist. Hat jemand eine Vorstellung davon, was hier den Unterschied ausmachen könnte?

Benutzerdefiniertes Git-Bereitstellungsskript

Ich beziehe das benutzerdefinierte Bereitstellungsskript ein, das von generiert wurdeazure site deploymentscript als Referenz und um die Build-Flags anzuzeigen, die es verwendet. Die relevanten Teile sind nach dem:: Deployment Sektion.

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage