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

为什么会有”坑“

  博客园里有好多介绍怎么使用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节点:

{
    // 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)中,加入一个节点信息如下:

  "buildOptions": {
    "debugType": "portable"
  }
{
  "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 平台。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术小讲堂

使用ASP.NET Identity以手机短信实现双重验证创建一个ASP.NET 5项目运行应用程序使用SMS短信进行双重验证开启双重验证使用双重验证登陆应用程序禁用账户来防止暴力破解

这篇文章将展示怎么使用SMS短信启动双重验证 创建一个ASP.NET 5项目 一开始,使用Visual studio 2015创建一个新的ASP.NET Web...

3386
来自专栏乐沙弥的世界

VirtualBox 扩展包卸载或安装失败(VERR_ALREADY_EXISTS)

       最近在卸载VirtualBox出现了无法卸载的错误。提示为Failed to install the extension. The install...

3351
来自专栏程序员与猫

ASP.NET Core依赖注入解读&使用Autofac替代实现

标签: 依赖注入 Autofac ASPNETCore 1. 前言 关于IoC模式(控制反转)和DI技术(依赖注入),我们已经见过很多的探讨,这里就不再赘述了。...

3478
来自专栏程序员的SOD蜜

64位系统使用Access 数据库文件的彻底解决方法

    最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是32...

3415
来自专栏张善友的专栏

Hammock for REST

  .NET 4 上的REST 框架 介绍了.NET/Mono 上几个RESTful方面的工具库,在Rest 客户端库之前介绍过了RestSharp《使用Res...

2477
来自专栏乐沙弥的世界

OUI-18001:不支持操作系统'Windows Vista 版本6.1'

    对于Oracle 10g,Oracle已经不再提供支持以及下载服务,同时Oracle也未推出支持Windows 7上安装Oracle 10g clien...

822
来自专栏依乐祝

.NET Core SDK在Windows系统安装后出现Failed to load the hostfxr.dll等问题的解决方法

这次无论如何也要记录下,原因是今天在一台Windows2008R2的电脑上安装.NET Core SDK后再命令行执行dotnet --info 居然爆出了“F...

2312
来自专栏木宛城主

The password supplied with the username Domain\UserName was not correct. Verify that it was entered

起因 今天想进入SharePoint 2013 Central Administration创建一个WebApplication,尽然发生了错误: The p...

1939
来自专栏贺嘉的专栏

如何用Baas快速在腾讯云上开发小程序之系列2:搭建Phabricator开发管理平台

如何用Baas快速在腾讯云上开发小程序-系列2:搭建Phabricator开发管理平台,步骤包括上传 SSL/TLS 证书、创建 Phabricator 容器、...

9770
来自专栏张善友的专栏

ASP.NET Web API和依赖注入

ASP.NET Web API中自带了一个依赖解析器(Dependency Resolver)接口,允许我们向控制器注入依赖关系。不过,Mark Seemann...

1879

扫码关注云+社区

领取腾讯云代金券