真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vscode如何編寫和調(diào)試.net項目

小編給大家分享一下vscode如何編寫和調(diào)試.net項目,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

成都創(chuàng)新互聯(lián)公司專注于普寧企業(yè)網(wǎng)站建設(shè),成都響應式網(wǎng)站建設(shè)公司,成都做商城網(wǎng)站。普寧網(wǎng)站建設(shè)公司,為普寧等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

安裝插件

使用VSCode編寫dotnet core項目除了其 默認的功能外,我推薦還要安裝一些非常有特色,并且有用的擴展,正是因為VSCode的插件機制,才讓它變得更加強大,滿足我們各式各樣的需求。

1、C#語言擴展

這個是使用VSCode編寫C#代碼必須的,安裝之后在默認打開.cs文件時還會自動下載調(diào)試器等。

2、[C# XML注釋]

這個插件可以快速的幫你添加注釋,選擇安裝吧。

3、[C# Extensions]

這個插件,強烈推薦,可以幫你在建立文件的時候初始化文件內(nèi)容包括對應的命名空間等。

還有一些其他輔助類的,比如EditorConfig,Guildes,One Dark Theme,Project Manager ,Setting Sync等。

新建多項目解決方案

打開命令行工具,在命令行工具中輸入:

$:> dotnet new sln -o vscode_tutorial //在當前目錄下 創(chuàng)建名為vscode_tutorial

以上命令使用dotnet sdk,新建一個解決方案文件,你可以不用命令行手動創(chuàng)建,但是使用dotnet new 可以更加方便的創(chuàng)建dotnet core相關(guān)的項目,如下圖所示:

vscode如何編寫和調(diào)試.net項目

建完解決方案我們要來建立項目了,包括一個控制臺項目,一個類庫項目和一個單元測試項目。

首先建立一個公共的類庫項目用于存放我們的業(yè)務(wù)方法(假設(shè)我們在做一個真實的項目)(注意,這時已經(jīng)cd進sln目錄里了)

$:> dotnet new classlib -o VSCodeTutorial.Common //在當前目錄下新建類庫項目VSCodeTutorial.Common
$:> dotnet sln add VSCodeTutorial.Common/VSCodeTutorial.Common.csproj //將項目添加到解決方案中

通過同樣的方式,我們建立好控制臺項目和單元測試項目

$:> dotnet new console -o VSCodeTutorial.ConsoleApp
$:> dotnet sln add VSCodeTutorial.ConsoleApp/VSCodeTutorial.ConsoleApp.csproj
$:> dotnet new xunit -o VSCodeTutorial.UnitTest
$:> dotnet sln add VSCodeTutorail.UnitTest/VSCodeTutorial.UnitTest.csproj

這里要注意控制的模板名稱叫console,而單元測試我們使用xunit。

這個時候我們的項目結(jié)構(gòu)已經(jīng)建立完成了,我們用VsCode來打開當前目錄來看看完成的項目結(jié)構(gòu)吧,如下圖所示:

vscode如何編寫和調(diào)試.net項目

添加項目間的依賴關(guān)系

使用VsCode打開項目文件VSCodeTutorial.ConsoleApp.csproj,在其中添加對Common項目的引用


  
    Exe
    netcoreapp1.1
  
 
  
    
  

同樣打開VSCodeTutorial.UnitTest.csproj項目文件,在其中添加對Common項目的引用


  
    netcoreapp1.1
  
  
    
    
    
  
 
    
  

和上面的那個項目不同,這里有一些額外的依賴,這里可以剛好了解下,如果添加nuget中包的依賴,只需像上面一樣使用PackageReference并填入類庫名稱和版本號即可。

添加完依賴后,我們在根目錄下使用dotnet restore來初始化一下,也可以再用dotnet build命令來嘗試編譯一下。

項目依賴關(guān)系如圖2:

vscode如何編寫和調(diào)試.net項目

開始編寫代碼

這個項目的整體需求:我需要打開一個控制臺程序,運行時需要用戶輸入一個小于50的整數(shù),控制臺接收到這個數(shù)字后計算出這個數(shù)字的階乘,并把結(jié)果輸出到控制臺上。

經(jīng)過簡單的思考,我決定把階乘的實現(xiàn)放到Common項目中,并且對其進行單元測試,測試的代碼則放到UnitTest項目中

vscode如何編寫和調(diào)試.net項目

首先我們把之前生成的項目中不需要的文件給刪除掉VsCodeTutorial.Common中的Class1.cs和VSCodeTutorial.UnitTest中的UnitTest1.cs ,當然你也可以留著。

第一步,我們在VsCodeTutorial.Common項目中新建文件MathHelper.cs并在文件中添加如下代碼,實現(xiàn)我們的階乘,代碼比較簡單就不詳述了。

namespace VSCodeTutorial.Common{    
public class MathHelper
    {        /// 
        /// 階乘,本例中暫不考慮 溢出的問題哦 Factorial(n) = n*(n-1)*(n-2)...*1;
        /// 
        /// 輸入?yún)?shù)n
        /// 
        public static int Factorial(int n){            if(n <=0 ){                
throw new System.ArgumentOutOfRangeException("n","參數(shù)錯誤,不能小于等于零");
            }            if(n == 1){                return 1;
            }            return n*Factorial(n-1);
        }
    }
}

第二步,我們要來測試這個代碼,看看是否達到了我們的目標,在VSCodeTutorial.UnitTest項目中新建文件MathHelpTest.cs向文件中添加測試Factorial函數(shù)的方法,如下所示:

using System;
using VSCodeTutorial.Common;
using Xunit;
namespace VSCodeTutorial.UnitTest{    
public class MathHelperTest
    {
         [Fact]        
public void TestFactorial()        {            //先測試一下邊界的情況
            int zero = 0 ;            
var exception = Assert.Throws(() => MathHelper.Factorial(zero));            
int one = 1;            
var oneResult = MathHelper.Factorial(one);
            Assert.Equal(1, oneResult);            //再測一下正常的情況
            int five = 5;            
var fiveResult = MathHelper.Factorial(five);
            Assert.Equal(5*4*3*2*1, fiveResult);            
int ten = 10;            
var tenResult = MathHelper.Factorial(ten);
            Assert.Equal(10*9*8*7*6*5*4*3*2*1, tenResult);
        }
    }
}

使用命令行運行單元測試

在使用配置VSCode之前 我還是建議大家先使用命令行來運行一下單元測試,這有利于更好的理解配置內(nèi)容。

在根目錄下輸入命令:dotnet test ./VSCodeTutorial.UnitTest/VSCodeTutorial.UnitTest.csproj 查看運行結(jié)果:

vscode如何編寫和調(diào)試.net項目

很差勁會出現(xiàn)編碼錯誤,而且這個錯誤暫時還沒有辦法解決..但是我猜單元測試通過了,這個問題相信在后續(xù)的版本中肯定會得到解決,事實上在Console項目中是可以解決輸出亂碼問題的。不過可喜的是在VSCode中運行單元測試是沒有亂碼的問題的。

使用VSCode 運行單元測試

首先當你打開項目的時候,VSCode 可能已經(jīng)建議你配置一下相關(guān)的內(nèi)容,如下圖所示:

vscode如何編寫和調(diào)試.net項目

選擇Yes, 會幫你新建這個一個目錄和兩個文件,luanch.json是用來執(zhí)行調(diào)試程序的配置,而tasks.json則是配置各種任務(wù)的,其中運行單元測試就是一種任務(wù)。

vscode如何編寫和調(diào)試.net項目

首先我們打開tasks.json ,默認已經(jīng)添加好了一個任務(wù),如下所示:

{    
"version": "0.1.0",    
"command": "dotnet", //全局命令,即所有的任務(wù)都使用這個命令,也可以在各個任務(wù)中設(shè)置    
"isShellCommand": true,    
"args": [],    
"tasks": [        
{            
"taskName": "build", //任務(wù)名稱 當設(shè)置了主的command 之后這個taskName也會作為一個命令參數(shù)            
"args": [                
"${workspaceRoot}\\VSCodeTutorial.ConsoleApp\\VSCodeTutorial.ConsoleApp.csproj"
            ],            
"isBuildCommand": true, 
//一個解決方案只能設(shè)置一個編譯任務(wù),多設(shè)置了也是白搭,當然也能執(zhí)行,只是不能利用快捷方式運行了           
"problemMatcher": "$msCompile"http://C#項目的problemMatcher        
}    
]}

默認使用了全局命令行,這樣可以在任務(wù)中省去配置dotnet命令,但是如果你的解決方案中包括多個項目需要不同的命令行編譯方式,如果前端網(wǎng)站使用grunt打包資源,那么頂部應該留空,而在各個子任務(wù)中配置command。

還有如果存在多個編譯項目時(如客戶端和服務(wù)端在一個解決方案時),也應該把command配置在子任務(wù)中,并設(shè)置個性化的taskName以便區(qū)別,所以我推薦把command設(shè)置在任務(wù)中,下面我們修改一下以上代碼,并添加一個運行單元測試的人。

{    
"version": "0.1.0",    
"isShellCommand": true,    
"args": [],    
"tasks": [        
{           
"taskName": "build_console",            
"command":"dotnet"
            "args": [                
"build", //組成dotnet build                
//設(shè)置需要編譯的項目,如果存在多個啟動項目可以設(shè)置成解決方案文件(.sln),這里只有一個項目所以設(shè)置運行項目也可以                
"${workspaceRoot}\\VSCodeTutorial.ConsoleApp\\VSCodeTutorial.ConsoleApp.csproj"
            ],            
"isBuildCommand": true, //設(shè)置是否編譯項目            
"problemMatcher": "$msCompile"
        },        
{            
"taskName": "UnitTest",            
"command":"dotnet",            
"args": [                
"test",//組成dotnet test 命令                
"${workspaceRoot}\\VSCodeTutorial.UnitTest\\VSCodeTutorial.UnitTest.csproj"
            ],            
"isTestCommand": true,//設(shè)置為單元測試項目           
"problemMatcher": "$msCompile"
        }    
]}

上面的代碼中,我將command命令移到了任務(wù)中,并給每個任務(wù)起了一個好識別的名字,現(xiàn)在這里一個有2個任務(wù)了

第一個任務(wù)build_console 運行時 會編譯VSCodeTutorial.ConsoleApp項目及其依賴的項目

第二個任務(wù)UnitTest則是單元測試項目,運行dotnet test命令,這里有個特殊的設(shè)置就是"isTestCommand": true 標識為測試項目后可以通過快捷方式運行該命令

任務(wù)建好了,我們來運行任務(wù)把,windows按下 ctrl+shift+p,在彈出的對話框中輸入:task 過濾命令可以得到以下的選項

vscode如何編寫和調(diào)試.net項目

選擇任務(wù):運行測試任務(wù) 這條來運行我們之前編寫好的單元測試項目,可以看到運行成功的情況,如下圖所示:

vscode如何編寫和調(diào)試.net項目

這里中文顯示正常,沒有亂碼哦,但是我不知道是什么原因..就是這么神奇

對于經(jīng)常執(zhí)行的任務(wù),可以通過設(shè)置鍵盤快捷方式來方便調(diào)用,可以看到我分別設(shè)置了ctrl+shift+t 運行測試任務(wù)ctrl+shift+b 運行編譯任務(wù),ctrl+shift+r 啟動選擇任務(wù),大家可以根據(jù)自己的喜好來設(shè)置。

開始編寫控制臺代碼

打開VSCodeTutorial.ConsoleApp項目中的Program.cs文件,修改其中的代碼,如下所示:

using System;
using VSCodeTutorial.Common;
namespace VSCodeTutorial.ConsoleApp{    
class Program
    {        
static void Main(string[] args)        {            
while(true)
            {
                Console.WriteLine("請輸入一個小于10的數(shù)字,回車結(jié)束:");                
string input_str = Console.ReadLine();                
if(int.TryParse(input_str ,out var input_int))
                {                    
if(input_int>0 && input_int<=10){                       
int result =  MathHelper.Factorial(input_int);
                       Console.WriteLine("你輸入的數(shù)字是{0},它的階乘結(jié)果是{1},退出請按ctrl+c,按其他鍵再試一次",
input_int,result);
                       Console.ReadKey();
                    }
                }                else{
                    Console.WriteLine("輸入的字符不是有效的數(shù)字");
                }
            }

        }
    }
}

代碼比較 簡單,就不做解釋了,我們直接來看運行的結(jié)果,這里順便提一下啊,在我們之前做的眾多工作之后,我們這里編寫代碼有美美噠的智能提示哦,如下圖所示:

vscode如何編寫和調(diào)試.net項目

好,再根目錄下輸入以下命令運行ConsoleApp

$:> dotnet run -p ./VSCodeTutorial.ConsoleApp/VSCodeTutorial.ConsoleApp.csproj

也可以在VSCodeTutorial.ConsoleApp 目錄下直接運行dotnet run 命令即可.

結(jié)果運行還是亂碼中,但是這次我們有辦法解決,我們在控制臺代碼中添加一句代碼即可onsole.OutputEncoding = Encoding.UTF8

using System;
using System.Text;
using VSCodeTutorial.Common;namespace VSCodeTutorial.ConsoleApp{    
class Program
    {        
static void Main(string[] args)        {
            Console.OutputEncoding = Encoding.UTF8; // 設(shè)置控制臺編碼
            while(true)
            {
                Console.WriteLine("請輸入一個小于10的數(shù)字,回車結(jié)束:");                
string input_str = Console.ReadLine();                
if(int.TryParse(input_str ,out var input_int))
                {                    
if(input_int>0 && input_int<=10){                       
int result =  MathHelper.Factorial(input_int);
Console.WriteLine("你輸入的數(shù)字是{0},它的階乘結(jié)果是{1},退出請按ctrl+c,按其他鍵再試一次",input_int,result);
                       Console.ReadKey();
                    }
                }                else{
                    Console.WriteLine("輸入的字符不是有效的數(shù)字");
                }
            }

        }
    }
}

使用dotnet build編譯后,再次運行Console項目看到了我們期望的界面

vscode如何編寫和調(diào)試.net項目

程序運行正確,當然了,我們都跑過單元測試了不是。。

開始調(diào)試程序

如下圖提示操作:

vscode如何編寫和調(diào)試.net項目

終于輪到我們之前生成的launch.json文件出場了,先來看下它的代碼,代碼中已經(jīng)添加了配置的說明

{    
"version": "0.2.0",    
"configurations": [        
{            
"name": ".NET Core Launch (console)", //配置名稱 可以改成更好識別的名字            
"type": "coreclr", // .net core類型的調(diào)試            
"request": "launch", //調(diào)試方式 不用改            
"preLaunchTask": "build", // 前置任務(wù),這里是編譯,但是默認的編譯任務(wù),已經(jīng)被我改了名字了,所以這里要改一下哦            "program": "${workspaceRoot}\\VSCodeTutorial.ConsoleApp\\bin\\Debug\\netcoreapp1.1\\VSCodeTutorial.ConsoleApp.dll", //需要調(diào)試的DLL的位置 
"args": [], //額外的參數(shù)            
"cwd": "${workspaceRoot}\\VSCodeTutorial.ConsoleApp", //工作目錄            
"console": "internalConsole", //控制臺模式,這里是內(nèi)嵌控制臺,一會要改成外置的,不然沒法交互輸入            
"stopAtEntry": false,            
"internalConsoleOptions": "openOnSessionStart"
        },        
{            
"name": ".NET Core Attach", //名稱            
"type": "coreclr", //類型            
"request": "attach", //使用附加的方式            
"processId": "${command:pickProcess}" //附加的進程ID        
}    
]}

根據(jù)實際情況,需要對上面的配置進行以下變更,變更的部分已經(jīng)添加了注釋,附加調(diào)試不是本文的重點,就不改了

{    
"version": "0.2.0",    
"configurations": [
        {            
        "name": "調(diào)試ConsoleApp", //修改下命令            
        "type": "coreclr",            
        "request": "launch",            
        "preLaunchTask": "build_console", //修改前置任務(wù)名和task.json中配置一致            
        "program": "${workspaceRoot}\\VSCodeTutorial.ConsoleApp\\bin\\Debug\\netcoreapp1.1\\
        VSCodeTutorial.ConsoleApp.dll",            
        "args": [],            
        "cwd": "${workspaceRoot}\\VSCodeTutorial.ConsoleApp",            
        "externalConsole":true, //使用外置的控制臺            
        "stopAtEntry": false,            
        "internalConsoleOptions": "openOnSessionStart"
        },
        {            
        "name": ".NET Core Attach",            
        "type": "coreclr",            
        "request": "attach",            
        "processId": "${command:pickProcess}"
        }
    ]
}

修改完成后,我們點擊運行按鈕可以開始調(diào)試了,調(diào)試的方式和使用VS是一致的,快捷鍵為F5 F10 F11

vscode如何編寫和調(diào)試.net項目

完成!

看完了這篇文章,相信你對“vscode如何編寫和調(diào)試.net項目”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


本文標題:vscode如何編寫和調(diào)試.net項目
轉(zhuǎn)載來源:http://weahome.cn/article/pgepsc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部