用VS Code體驗調試.NET Core 2.0 Preview (傳統三層架構)

来源:http://www.cnblogs.com/swyy/archive/2017/07/08/7137516.html
-Advertisement-
Play Games

準備工作 VS Code下載地址:https://vscode.cdn.azure.cn/stable/379d2efb5539b09112c793d3d9a413017d736f89/VSCodeSetup-ia32-1.13.1.exe .NET Core 2.0 Preview下載地址:htt ...


準備工作

   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的過程中,發現智能提示和代碼格式化沒辦法用,還有一個就是類的創建比較麻煩,有明白的朋友幫忙指導下,在此先謝過。

  以上所有內容都是我本人的觀點,有問題請指出,謝謝了。

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 所有的Unix Like系統都會內建vi文書編輯器,其他的文書編輯器不一定存在,vim是vi的升級版,具有程式編輯的能力,可以主動的以字體顏色辨別語法的正確性,方便程式設計。vim 裡面加入了很多額外的功能,例如支持正規表示法的搜尋結構、多文件編輯、區塊複製等。 Vim有三種模式:命令模式、編輯模式 ...
  • 很好的解決辦法,問題已解決 利用rlwrap工具解決方法 1、安裝rlwrap和readline庫 CentOS下可以用EPEL的yum源直接安裝,步驟如下: (1)RHEL/CentOS/SL Linux 6.x 下安裝 EPEL6 yum源: 32位系統選擇: # rpm -ivh http:/ ...
  • 1、下載centos操作系統,提供百度雲盤鏈接:http://pan.baidu.com/s/1pLHOR03 2、打開上篇在VMware中新建好的空白虛擬機,將centos安裝在此空白虛擬機上,步驟如下圖: 3、開啟此虛擬機,出現如下圖,選擇,進行下一步,若沒有出現下圖或開機在命令行一直不動,則需 ...
  • Linux伺服器要保證高可用性,就要對其進行有效的監控,實時瞭解到伺服器的運行狀況,各項性能指標是否正常,以防患以未然,進行運維日誌的記錄,圖形化的監控,出現問題的消息報警機制,都是保證Linux伺服器能正常對外提供服務的先決條件。 ...
  • 本人從事Linux驅動開發。現在要實現兩端之間wifi長距離(1km左右)傳輸視頻數據(全向天線)的功能。目前用的平臺是Atheros AR9342。我在網上查到一些資料是關於禁用802.11的CSMA功能轉為使用TDMA傳輸,從而實現遠距離傳輸。我按照裡面方法修改mac層,其中有一個禁用發送時等待 ...
  • 系統:CentOS Linux release 7.2.1511 (Core) zabbix:3.2.4 一、yum -y install httpd mysql mysql-server mysql-devel php php-mysql php-common php-mbstring php-g ...
  • [user@localhost ~]$ curl -h Usage: curl [options...] Options: (H) means HTTP/HTTPS only, (F) means FTP only --anyauth Pick "any" authentication method... ...
  • 重點講解了多文件上傳,大文件上傳,分塊上傳,斷點續傳,文件秒傳,上傳失敗自動修複再上傳等功能,上傳3、5個G,那都不是事。特別是大文件秒傳功能,不僅節省了上傳時間,還節省了網路帶寬和伺服器空間。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...