gpt4 book ai didi

Azure网站远程调试与git部署不起作用

转载 作者:行者123 更新时间:2023-12-04 09:03:22 28 4
gpt4 key购买 nike

我一直在尝试 Azure 网站的新远程调试功能,但我想我可能遇到了一个问题:只有使用 Web Publish 才能使其正常工作。如果我使用本地 git deploy 部署站点,则会附加调试器,但不会加载调试符号(断点显示警告)。

我尝试将发布配置设置为包含PDB文件(因为Azure的git部署默认使用发布配置),并使用由azure site部署脚本命令生成的自定义部署脚本,详细信息为here和设置构建命令以使用调试配置。在这两种情况下,我仍然遇到符号未加载的相同问题。

我觉得问题可能是以下之一:

  1. Azure 在 Web 发布后运行某种自定义操作,必须运行该操作才能允许远程调试
  2. git 部署脚本使用的构建选项缺少某种标志,导致 Web 应用程序不存在 PDB 输出(我认为这不太可能)
  3. 当站点实际运行并按需编译时,Azure 不支持我在部署脚本中使用的配置

最终我希望编写一些自动化部署脚本,并且我更愿意使用 git 部署而不是 Web 发布来完成此任务。真正让我困惑的是,即使将发布配置设置为包含 PDB 文件,也会失败。这确实让我觉得 Azure 上必须为 Web 发布完成一些额外的工作,而这些工作是 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%\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.

最佳答案

2014 年 2 月 8 日更新

在 WAWS 中进行了一些修复,现在可以通过让 VS 正确加载服务器端 PDB,在使用 git 时进行调试。为了让它工作,你需要做两件事之一(即你不需要两件事都做)。它可以在 VS 2012 和 2013 中运行。

  1. 关闭“仅我的代码”调试:只需在 VS 调试器设置中关闭该设置,然后尝试调试您的 Azure 网站即可。
  2. 在 Debug模式下构建:要在服务器构建上执行此操作,您可以转到 Azure 门户并添加一个名为 SCM_BUILD_ARGS 的 ApSetting,其值为 - p:Configuration=Debug (更多详细信息 here )。然后转到“部署”页面并单击“重新部署”按钮(对于当前部署)。然后从 VS 附加,它应该可以工作!

原始答案

事实上,这在今天行不通,我们正在尝试如何让它发挥作用。从根本上来说,问题似乎是 Visual Studio 调试器希望在客户端上找到 PDB,而在 git 情况下,它们仅存在于服务器上。

这个article讨论 2010 年和更新版本之间调试器工作方式的变化,这可能会影响一些事情。

需要更多调查,但这就是目前的情况。

关于Azure网站远程调试与git部署不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869192/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com