前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决VS Code调试.NET Core应用遇到的坑

解决VS Code调试.NET Core应用遇到的坑

作者头像
yoyofx
发布2018-09-05 11:06:38
1.2K0
发布2018-09-05 11:06:38
举报
文章被收录于专栏:ASP.NETCore

为什么会有”坑“

  博客园里有好多介绍怎么使用VS Code以及调试.NET Core的文章,但是都是基于直接构建Asp.Net Core Mvc单项目的,有什么区别呢!

  (1).我们这次遇到的坑是在多项目的解决方案中遇到的,也就是说根目录不是一个项目的目录;

  (2).DEBUG项目不能加载符号文件,导致项目不能断点调试;

解决问题

1.关于解决方案的目录问题

  在launch.json中将 "program" 节点修改下:

"program": "${workspaceRoot}”,workspaceRoot是解决方案目录,修改这个值为"${workspaceRoot}/子项目目录/bin/Debug/netcoreapp1.0/<项目名称>.dll"

修改后,DEBUG发现没办法Build, 提示 Couldn't find 'project.json' in current directory 。

  其实,原因是一样的都是找不到项目目录造成的,修改 tasks.json文件:

  为其添加一个options节点:

代码语言:javascript
复制
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "dotnet",
    "isShellCommand": true,
    "args": [],
    "options": {
        "cwd": "${workspaceRoot}/子项目目录"
    },
    "tasks": [
        {
            "taskName": "build",
            "args": [ ],
            "isBuildCommand": true,
            "showOutput": "silent",
            "problemMatcher": "$msCompile"
        }
    ]
}

  options的cwd节点,指定了dotnet命令行的工作目录, 这样修改后就可以正常build了。

2.关于DEBUG不能断点调试

  查看LOG,发现DEBUG时会提示如下信息:

 Could not load symbols for '*.dll'. '*.pdb' is a Windows PDB. These are not supported by the cross-platform .NET Core debugger.

  大概的意思就是在windows下生成的符号文件,不能被跨平台的调试器加载。

  解决方案很简单,在每个需要调试的项目文件(project.json)中,加入一个节点信息如下:

代码语言:javascript
复制
  "buildOptions": {
    "debugType": "portable"
  }
代码语言:javascript
复制
{
  "version": "0.1.3-*",
  "buildOptions": {
    "debugType": "portable"
  },
  "dependencies": {
    "Microsoft.AspNetCore.Http.Abstractions": "1.0.0",
    "Microsoft.AspNetCore.Owin": "1.0.0",
    "NETStandard.Library": "1.6.0",
    "YOYO.AspNetCore.Mvc": {
      "version": "0.1.3-*",
      "target": "project",
      "type": "build"
    },
    "YOYO.AspNetCore.Owin": {
      "version": "0.1.3-*",
      "target": "project",
      "type": "build"
    },
    "YOYO.Extensions.DI": "1.0.0-*"
  },

  "frameworks": {
      "netstandard1.6": {
        "imports": "dnxcore50"
      },
      "net451": {
        "dependencies": {
          "Owin": "1.0.0"
        }
      }
    }
  }

这是YOYOFx开源框架一个项目的project.json片段。

YOYOFx框架

GitHub:https://github.com/maxzhang1985/YOYOFx    Star下, 欢迎一起交流。

YOYOFx是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-07-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么会有”坑“
  • 解决问题
    • 1.关于解决方案的目录问题
      • 2.关于DEBUG不能断点调试
        • YOYOFx框架
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档