C# 如何使用VS代码调试.NETMVC项目

C# 如何使用VS代码调试.NETMVC项目,c#,.net,visual-studio-code,vscode-debugger,C#,.net,Visual Studio Code,Vscode Debugger,我安装了Visual Studio 2019,但我更喜欢使用VS代码。经过数小时的研究,我对什么可以调试,什么不能调试感到困惑 我已经安装了C#扩展 我创建了一个launch.json和 tasks.json { "version": "0.2.0", "configurations": [ { "name": ".NET Core

我安装了Visual Studio 2019,但我更喜欢使用VS代码。经过数小时的研究,我对什么可以调试,什么不能调试感到困惑

  • 我已经安装了C#扩展

  • 我创建了一个launch.json和 tasks.json

     {
         "version": "0.2.0",
         "configurations": [
              {
                  "name": ".NET Core Launch (web)",
                  "type": "clr",
                  "request": "launch",
                  "preLaunchTask": "build",
                  "program": "{path-to-my-project}.dll",
                  "args": [],
                  "cwd": "{myNameSpace}",
                  "stopAtEntry": false,
                  "serverReadyAction": {
                      "action": "openExternally",
                      "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
                  },
                  "env": {
                      "ASPNETCORE_ENVIRONMENT": "Development"
                  },
                  "sourceFileMap": {
                      "/Views": "${workspaceFolder}/Views"
                  },
                  "logging": {
                      "moduleLoad": false
                  }
              },
              {
                  "name": ".NET Core Attach",
                  "type": "clr",
                  "request": "attach",
                  "processId": "${command:pickProcess}"
              }
          ]
      }
    
这些说明是否仅适用于控制台应用程序

我还发现:

但似乎
配置程序需要指向EXE。而我的应用程序生成了一个DLL

如何使用VS代码调试.NET MVC(非核心)web应用程序?


解决方案


我跟着ruslan,gilmutdinov回答下面的问题,它起作用了!它没有我想象的那么复杂。

您只需单击vscode上的调试按钮即可

然后单击创建launch.json文件


之后,它将请求运行时。为此选择.NET并选择您的启动项目。然后可以在项目路径中看到launch.json文件。现在,您可以在任何地方添加调试点,然后按f5键,假设您的.NET Framework web应用程序名为
MyWebApp
,并且您希望在端口
5521
上对其进行调试。以下是如何在VSCode中设置调试:

  • 向VSCode添加扩展名

  • 将以下内容添加到PATH环境变量:

  • 构建您的项目:
  • 打开
    .vs\MyWebApp\config\applicationhost.config
    并设置您的
  • 确保
    Optimize
    设置为false,并将调试选项设置为“便携式”:

    launch.json:

    您将获得以下用于在VSCode中调试的选项:

    现在你所要做的就是启动
    启动WebApp
    ,然后
    启动并连接Chrome

    调试愉快

    检查.NET是否没有选项。我看到了.NET Core的一个选项。也许你可以尝试添加一个自定义的launch.json。谢谢你的详细回答。我认为这几乎奏效了。当我启动Start WebApp时,VS Code向我显示此错误“当前没有运行具有指定名称的进程”。终端中是否出现任何错误?当我运行命令时,我得到了。cmd窗口只是闪烁,然后我得到了错误。不管我如何让它工作。我在args到iisStart的路径错误。现在工作!非常感谢你的帮助
    msbuild: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
    iisexpress: C:\Program Files\IIS Express\
    chrome: C:\Program Files (x86)\Google\Chrome\Application
    
    cd MyWebApp
    msbuild MyWebApp.sln -m
    
    <sites>
        <site name="MyWebApp" id="1">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="W:\Projects\NET\MyWebApp\MyWebApp" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:5521:localhost" />
            </bindings>
        </site>
        <siteDefaults>
            <!-- To enable logging, please change the below attribute "enabled" to "true" -->
            <logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false" />
            <traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
        </siteDefaults>
        <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
        <virtualDirectoryDefaults allowSubDirConfig="true" />
    </sites>
    
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
      <DebugType>full</DebugType>
      <Optimize>false</Optimize>
    </PropertyGroup>
    
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
      <DebugType>portable</DebugType>
      <Optimize>false</Optimize>
    </PropertyGroup>
    
    {
      "version": "2.0.0",
      "tasks": [
          {
              "label": "msbuild",
              "command": "msbuild.exe",
              "type": "shell",
              "args": [
                  "/p:Configuration=Debug",
                  "/t:build",
                  "-m"
              ],
              "presentation": {
                  "reveal": "silent"
              },
              "problemMatcher": "$msCompile"
          },
          {
              "label": "iisStart",
              "type": "shell",
              "dependsOn": "msbuild",
              "command": "Start-Process",
              "args": ["iisexpress.exe", "/config:${workspaceFolder}\\.vs\\MyWebApp\\config\\applicationhost.config /site:MyWebApp"],
              "presentation": {
                  "reveal": "silent",
              }
          },
          {
              "label": "iisStop",
              "type": "shell",
              "command": "Stop-Process",
              "args": ["-Name", "iisexpress"]
          },
      ]
    }
    
    {
      "version": "0.2.0",
      "configurations": [ 
        {
          "name": "Launch Chrome",
          "request": "launch",
          "type": "pwa-chrome",
          "webRoot": "${workspaceFolder}",
          "runtimeArgs": [
            "http://localhost:5521/",
            "--new-window",
            "--remote-debugging-port=9222"
          ]
        },
        {
          "name": "Attach to Chrome",
          "port": 9222,
          "request": "attach",
          "type": "pwa-chrome",
          "webRoot": "${workspaceFolder}"
        },  
        {
          "name": "Start WebApp",
          "type": "clr",
          "request": "attach",
          "processName": "iisexpress",
          "preLaunchTask": "iisStart",
          "postDebugTask": "iisStop",
        },    
      ],
      "compounds":[
        {
          "name": "Launch & Attach Chrome",
          "configurations": ["Launch Chrome", "Attach to Chrome"]
        }
      ]
    }