准备工作

   VS Code下载地址:https://vscode.cdn.azure.cn/stable/379d2efb5539b09112c793d3d9a413017d736f89/VSCodeSetup-ia32-1.13.1.exe

  .NET Core 2.0 Preview下载地址:https://download.microsoft.com/download/6/1/B/61B3E81F-5509-48D2-BB4F-5189E23CD29A/dotnet-sdk-2.0.0-preview2-006497-win-x64.exe

  

  .NET Core Preview 2.0安装完成之后,在控制台上,输入命令“dotnet -v”,会提示版本:.NET Command Line Tools (2.0.0-preview2-006497)

  在VS Code安装并且启动之后,点击屏幕左侧的“扩展”菜单 ,或者按“Ctrl + Shift + X”,进入扩展安装界面,在搜索框输入“OmniSharp”,点击安装扩展,重启VS Code。

  

  在电脑上任意位置新建一个文件夹,用于存放解决方案和项目信息。我选择在F盘上新建“Poplar.Demo”。文件夹新建完成之后,在VS Code菜单栏上点击“文件—>打开文件夹”,选中新建的文件夹。文件夹选择完成之后,按下“  Ctrl + `  ”,呼出终端(也可以在菜单栏上点击“查看—>集成终端”),这个时候VS Code会提示是否配置默认终端,没有这个需求的可以忽略。

  终端打开之后,路径是默认的当前工作区路径。

  

  在终端中输入“dotnet new sln -n Poplar.Demo”,新建一个解决方案文件。这条命令第一段“dotnet”是调用.NET Core CLI,第二段new参数表示要新建,第三段sln表示新建的类型是一个解决方案文件,第四段-n表明要指定名称,第五段Poplar.Demo表示自定义的名称。到此,解决方案文件已经建立完毕。这个时候点击左侧菜单的“资源管理器”,会发现文件夹下多了一个.sln文件。

  

  继续在终端下输入“dotnet new mvc -n Poplar.Demo.Portal”创建MVC项目,这条命令的第三段表示新建的类型是MVC项目,其他的含义和上一条命令一致,命令执行完成之后,在资源管理器上会看到有一些对应的新增文件。

  在终端下输入“dotnet new classlib -n Poplar.Demo.Services”创建业务层,这条命令的第三段表示新建的类型是类库,其他的含义和上一条命令一致。

  继续输入“dotnet new classlib -n Poplar.Demo.DataAccess”、“”创建数据访问层和Models。

  所需要的项目创建完成之后,需要添加对其他项目的引用,在这里以UI层为例。在资源管理器内,打开前面创建的UI层“Poplar.Demo.Portal”,点击“Poplar.Demo.Portal.csproj”,此时项目文件内容应该和下面相似

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<UserSecretsId>aspnet-Poplar.Demo.Portal-D34843E8-3D14-4277-8CED-4D3BCACBF88C</UserSecretsId>
</PropertyGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview2-final" />
</ItemGroup> <ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-preview2-final" />
</ItemGroup> </Project>

Poplar.Demo.Portal.csproj

  在项目文件中新建一个ItemGroup,用于存放对其他项目的引用。core 2.0 preview中用<ProjectReference Include="..\Poplar.Demo.Services\Poplar.Demo.Services.csproj" />这样的配置节点表示项目引用,Include值表示引用项目的路径,最后,UI层配置完成之后,整个项目文件的内容和下面的相似。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<UserSecretsId>aspnet-Poplar.Demo.Portal-D34843E8-3D14-4277-8CED-4D3BCACBF88C</UserSecretsId>
</PropertyGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview2-final" />
</ItemGroup> <ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-preview2-final" />
</ItemGroup> <ItemGroup>
<ProjectReference Include="..\Poplar.Demo.Models\Poplar.Demo.Models.csproj" />
<ProjectReference Include="..\Poplar.Demo.Services\Poplar.Demo.Services.csproj" />
</ItemGroup> </Project>

Poplar.Demo.Portal.csproj(业务层和Models引用添加完成之后)

  在最下面多了一个ItemGroup和两个引用。用同样的方式将其他的项目需要的引用也配置完成。

  接下来在对应的层添加上相应的class,在这我没发现什么好的方法,全都是一个一个手动建立的cs文件,再手动把using、namespace、class之类的关键字写上。然后在UI层进行调用。

  Service层新加的类:

using System;
using Poplar.Demo.DataAccess; namespace Poplar.Demo.Services
{
public class DemoService
{
public string Do()
{
return "DemoService.Do()" + " ——> " + new DemoDal().Do();
}
}
}

Poplar.Demo.Services.DemoService

  DataAccess层新加的类:

using System;
using Poplar.Demo.DataAccess; namespace Poplar.Demo.DataAccess
{
public class DemoDal
{
public string Do()
{
return "DemoDal.Do()";
}
}
}

Poplar.Demo.DataAccess.DemoDal

  最后在UI层对它进行调用,我选择的是上面在创建MVC项目时默认会有的HomeController:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Poplar.Demo.Portal.Models;
using Poplar.Demo.Services; namespace Poplar.Demo.Portal.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
} public IActionResult About()
{
ViewData["Message"] = new DemoService().Do(); return View();
} public IActionResult Contact()
{
ViewData["Message"] = "Your contact page."; return View();
} public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}

Poplar.Demo.Portal.Controllers.HomeController

  所有的示例代码都写完之后,直接按“F5”按钮选择调试时,会弹窗提示选择环境,此时选择“.NET Core”。"launch.json"文件被打开,此时launch.json文件的configurations节点下默认有三个配置,此时我们需要使用的是第二个,也就是

"name": ".NET Core Launch (web)"这个,记住这个name,点击左侧菜单栏的“调试”
  

  选择.NET Core Launch (web)项之后,再按F5启动调试,此时会提示:找不到 preLaunchTask“build”。这个意思是在启动调试之前,要执行一个名叫task的build。在launch.json的configurations节点下,

name为.NET Core Launch (web)这个对象内部的preLaunchTask节点,值为build,这个配置节点是在启动调试之前,需要执行一个编译任务,否则在上次编译后修改的代码不会被执行。
  点击提示条的“配置任务运行程序”,在弹框中选择“.NET Core”,添加一个task
  
  

  task添加完成之后,需要配置launch.json,使启动调试时能找到对应的.net程序。先配置.NET Core Launch (web)项的“cwd”节点,此节点表示执行dotnet命令的路径,将它配置为“${workspaceRoot}/Poplar.Demo.Portal”,再配置.NET Core Launch (web)项的program节点,使启动调试时能启动对应的.net程序,配置为“bin/Debug/netcoreapp2.0/Poplar.Demo.Portal.dll”,launch.json配置完成之后,需要对task进行配置,指定对应的task在build时的对象。在对应的task中增加一项

            "options":{
"cwd": "${workspaceRoot}/Poplar.Demo.Portal"
}

options

  上面提到的${workspaceRoot}表示的都是当前工作区的根目录,也就是VScode在最开始打开的文件夹的路径,配置完成的launch.json和tasks.json跟下面相似

{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceRoot}/bin/Debug/<target-framework>/<project-name.dll>",
"args": [],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"console": "internalConsole"
},
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "bin/Debug/netcoreapp2.0/Poplar.Demo.Portal.dll",
"args": [],
"cwd": "${workspaceRoot}/Poplar.Demo.Portal",
"stopAtEntry": false,
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}"
},
"osx": {
"command": "open"
},
"linux": {
"command": "xdg-open"
}
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceRoot}/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}

launch.json

{
// 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": [],
"tasks": [
{
"taskName": "build",
"args": [ ],
"options":{
"cwd": "${workspaceRoot}/Poplar.Demo.Portal"
},
"isBuildCommand": true,
"showOutput": "silent",
"problemMatcher": "$msCompile"
}
]
}

tasks.json

  配置完成之后,按F5启动调试。

示例代码:Poplar.Demo.rar

  在使用VS Code的过程中,发现智能提示和代码格式化没办法用,还有一个就是类的创建比较麻烦,有明白的朋友帮忙指导下,在此先谢过。

  以上所有内容都是我本人的观点,有问题请指出,谢谢了。

  

用VS Code体验调试.NET Core 2.0 Preview (传统三层架构)的更多相关文章

  1. 使用VS Code开发调试.NET Core 2.0

    使用VS Code 从零开始开发调试.NET Core 2.0.无需安装VS 2017 15.3+即可开发调试.NET Core 2.0应用. VS Code 全称是 Visual Studio Co ...

  2. VS Code开发调试.NET Core 2.0

    VS Code开发调试.NET Core 2.0 使用VS Code 从零开始开发调试.NET Core 2.0.无需安装VS 2017 15.3+即可开发调试.NET Core 2.0应用. VS ...

  3. 编译调试 .NET Core 5.0 Preview 并分析 Span 的实现原理

    很久没有写过 .NET Core 相关的文章了,目前关店在家休息所以有些时间写一篇新的

  4. 使用VS Code从零开始开发调试.NET Core 1.0

    使用VS Code 从零开始开发调试.NET Core 1.0. .NET Core 是一个开源的.跨平台的 .NET 实现. VS Code 全称是 Visual Studio Code,Visua ...

  5. 在Mac上使用Visual Studio Code开发/调试.NET Core代码

    .Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今天抽空研究了下在Mac下如何使用VS Code来开发.NET Core程序,并且调 ...

  6. 使用VS Code开发调试.NET Core 多项目

    使用Visual Studio Code(VS Code)开发调试.NET Core和ASP.NET Core 多项目multiple project. 之前讲解过如果使用Visual Studio ...

  7. 使用VS Code开发 调试.NET Core 应用程序

    使用VS Code开发 调试.NET Core RC2应用程序,由于.NET Core 目前还处于预览版. 本文使用微软提供的示例进行开发及调试. https://github.com/aspnet/ ...

  8. Mac上使用Visual Studio Code开发/调试.NET Core代码

    Mac上使用Visual Studio Code开发/调试.NET Core代码 .Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今 ...

  9. VS Code开发调试.NET Core

    使用VS Code开发 调试.NET Core 应用程序   使用VS Code开发 调试.NET Core RC2应用程序,由于.NET Core 目前还处于预览版. 本文使用微软提供的示例进行开发 ...

随机推荐

  1. C++构造函数虚函数例题

    虚函数: #include <iostream> class A { public: A ():m_iVal() { test(); } virtual void func() { std ...

  2. python 第五弹

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  3. Ubuntu安装genymotion模拟器步骤

    1.安装VitrualBox genymotion模拟器需要有VirtualBox环境,打开终端(ctrl + alt + T),执行以下命令: sudo apt-get install virtua ...

  4. jQuery杂项方法

    前面的话 杂项方法其实也是工具类方法,但由于其不是定义在jQuery构造函数上的方法,所以不能称为工具方法.本文将详细介绍jQuery中的杂项方法 数据操作 [data()] 该方法用于在匹配元素上存 ...

  5. DDD理论学习系列(5)-- 统一建模语言

    DDD理论学习系列--案例及目录 1.引言 上一节讲解了领域模型,领域模型主要是将业务中涉及到的概念以面向对象的思想进行抽象,抽象出实体对象,确定实体所对应的方法和属性,以及实体之间的关系.然后将这些 ...

  6. 《Python编程从入门到实践》第三章_列表简介

    什么是列表呢? 官方说明就是由一些列按特点顺序排列的元素组成.其实可以看出很多个字符串的有序组合吧,里面的内容可以随时的删除,增加,修改. 下面这个就是一个列表,python打印列表的时候会将中括号和 ...

  7. Unity3d简单的socket通信

    vs2010或其他创建C#工程 C#端代码一: using System; using System.Collections.Generic; using System.Linq; using Sys ...

  8. 使用JPA和Hibernate进行批量处理的最佳方式

    Tips 原文作者:Vlad Mihalcea 原文地址:The best way to do batch processing with JPA and Hibernate 在本文中,你将了解什么是 ...

  9. 使用 bufferedreader 的好处

    简单的说,一次IO操作,读取一个字节也是读取,读取8k个字节也是读取,两者花费时间相差不多.而一次IO的来回操作却要耗费大量时间.好比是一辆大型汽车(设装100人),要去车站接人到公司,接一个人也是接 ...

  10. python 标准库 -- re

    re 正则表达式 语法 import re m = re.search('[0-9]','abc4def67') # 匹配字符及匹配范围 print m.group(0) # 返回匹配结果 re.se ...