使用VSCode开发和调试.NET Core程序的方法
 更新时间:2020年05月07日 09:45:53   作者:felixnet  

这篇文章主要介绍了使用VSCode开发和调试.NET Core程序的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

电脑不想装几十个G的 VS2017,那就用 VS Code 吧
目标:

创建一个类库项目 Skany.Core,并用 Nuget 引用第三方组件 Hash 实现加密算法
创建一个单元测试项目 Skany.Tests,引用类库 Skany.Core,并测试其中的方法
创建一个控制台应用程序项目 Skany.Output,引用类库 Skany.Core,并输出方法执行结果
创建一个解决方案 Skany.sln,包括以上三项目

环境

.NET Core SDK 2.2.202

开始
首先在 VS Code 安装几个扩展插件

C#
C# Extensions
.NET Core Test Explorer

这三个插件就可以做最基础的开发了

构建项目
创建解决方案文件夹 C:\\Here\\Skany
在 VS Code 中打开这个文件夹
在 VS Code 中打开终端(也可以在外部使用cmd或powershell)
接下来将使用 .NET Core CLI 命令创建项目

# 创建类库项目
dotnet new classlib -n Skany.Core
# 创建控制台应用程序
dotnet new console -n Skany.Output
# 创建xUnit单元测试项目
dotnet new xunit -n Skany.Tests
# 为 Output 添加 Core 引用(因为当前在解决方案目录,而不是项目目录,所以add后要加上项目名,以下同理)
dotnet add Skany.Output reference Skany.Core
# 为 Tests 添加 Core 引用
dotnet add Skany.Tests reference Skany.Core
# 为 Core 项目添加 Nuget 引用
dotnet add Skany.Core package Hash –version 4.0.0
# 创建解决方案 sln
dotnet new sln -n Skany
# 添加项目到解决方案
dotnet sln Skany.sln add Skany.Core
dotnet sln Skany.sln add Skany.Output
dotnet sln Skany.sln add Skany.Tests
# 编译一下 Output 和 Tests 项目
dotnet build Skany.Output
dotnet build Skany.Tests

当不熟悉命令时,都可以通过 -h 或 –help 参数获取帮助,比如我不知道单元测试项目的参数,就输入 dotnet new -h 查看 new 的选项
注:其实用第三方插件(比如 vscode-solution-explorer)轻松实现以上命令的可视化操作,这里只是演示 .NET Core CLI 命令用法
创建完后的项目结构

SKANY
| Skany.Core
| Class1.cs
| Skany.Core.csproj
| Skany.Output
| Program.cs
| Skany.Output.csproj
| Skany.Tests
| UnitTest1.cs
| Skany.Tests.csproj
| Skany.sln

将 Core 项目中的 Class1.cs 改为 CryptHelper.cs,代码如下

using HashLibrary;

namespace Skany.Core
{
public class CryptHelper
{
public static string HashPassword(string password, out string salt)
{
var hash = HashedPassword.New(password, hashLength: 50, saltLength: 10);
salt = hash.Salt;
return hash.Hash;
}

public static bool VerifyPassword(string password, string hashPassword, string salt)
{
var hash = new HashedPassword(hashPassword, salt);
bool matches = hash.Check(password);
return matches;
}
}
}

在 Tests 项目中别写测试案例,将 UnitTest1.cs 改为 CryptUnitTest.cs,代码如下

using System;
using Xunit;

namespace Skany.Tests
{
using Core;

public class CryptUnitTest
{
[Theory]
[InlineData(“zhang”)]
[InlineData(“baidu”)]
public void HashPasswordTest(string password)
{
string salt;
var hashPassword = CryptHelper.HashPassword(password, out salt);
Assert.NotNull(hashPassword);
Assert.NotNull(salt);
Assert.True(hashPassword.Length == CryptHelper.HashLength);
Assert.True(salt.Length == CryptHelper.SaltLength);
VerifyPasswordTest(password, hashPassword, salt);
}

[Theory]
[InlineData(“zhang”, “ÁēÕĀ1fv¾ĒëÜĝ}f§¼kÈ$Æ7KĎĞĐMĬZĝČ9ËÅ«¢ÝĪÙØê£İ)¥jµQIįa”, “ïÛŀB³äĭonÊ”)]
[InlineData(“baidu”, ” g©®Ģ¹Óäõ¥ģH»7ċuO¸%AOĮ©ĩ§8ĆKĄöĉĖß$µåˬüÖ=ĝĴ¶Cꨧh/”, “Ā˧į^H7Í_h”)]
public void VerifyPasswordTest(string password, string hashPassword, string salt)
{
Assert.True(hashPassword.Length == CryptHelper.HashLength);
Assert.True(salt.Length == CryptHelper.SaltLength);
Assert.True(CryptHelper.VerifyPassword(password, hashPassword, salt));
}
}
}

单元测试
通过命令执行单元测试

dotnet test Skany.Tests

如果只想测试其中一个方法 HashPasswordTest

dotnet test Skany.Tests –filter HashPasswordTest

当然有可视化的测试插件,谁还用命令啊

控制台应用程序
在 Output 项目调用 Core.CryptHelper 输出结果,代码如下

static void Main(string[] args)
{
string salt = null;
var password = “baidu”;
var hashPassword = CryptHelper.HashPassword(password, out salt);
Console.WriteLine(“Password => {0}”, password);
Console.WriteLine(“HashPassword => {0}”, hashPassword);
Console.WriteLine(“Salt => {0}”, salt);

//===================================

var matchs = CryptHelper.VerifyPassword(password, hashPassword, salt);
Console.WriteLine(“Matchs: {0}”, matchs);
Console.ReadLine();
}

运行 Output 项目

dotnet run –project Skany.Output

断点调试
在 Output/Program.cs 中第13行设置一个端点(鼠标在行首点一下即可,再点一下移除断点)
DEBUG面板配置选择 .NET Core Launch (console),点击绿色的开始调试按钮,启动调试

与 VS 中一样,可以通过 F5/F10/F11 控制调试流程,也可以添加 Watch 变量,鼠标也可以感知变量值
如果开始测试后,警告提示启动程序找不到,可以按提示(也可以点击界面齿轮按钮)修改配置文件 .vscode/launch.json
核对 program 节点路径是否正确

发布
VS 中用工具发布,发布参数配置在 *Profile.pubxml,但 VS Code 中只能用命令

# 发布Release配置,包括 .net core 运行时,分别发布到 linux 和 windows
dotnet publish -c Release –self-contained -r linux-x64
dotnet publish -c Release –self-contained -r win-x64

# 发布Release配置,包括 .net core 运行时,指定目标框架 netcoreapp2.2
dotnet publish -c Release -f netcoreapp2.2 –self-contained -r linux-x64
dotnet publish -c Release -f netcoreapp2.2 –self-contained -r win-x64

# 发布Release配置,不包括 .net core 运行时
dotnet publish -c Release –self-contained false -r linux-x64
dotnet publish -c Release –self-contained false -r win-x64

# 发布Release配置,不包括 .net core 运行时,指定输出目录
dotnet publish -c Release –self-contained false -r linux-x64 -o C:\\Here\\Spany\\publish\\linux-x64
dotnet publish -c Release –self-contained false -r win-x64 -o C:\\Here\\Spany\\publish\\win-x64

虽然 VS 无比强大,VS Code 小清醒,但是 VS Code 灵活扩展性强,用来开发前端或 .NET Core 项目,也是得心应手
到此这篇关于使用VSCode开发和调试.NET Core程序的方法的文章就介绍到这了,更多相关VSCode开发和调试.NET Core内容请搜索华域联盟以前的文章或继续浏览下面的相关文章希望大家以后多多支持华域联盟!

您可能感兴趣的文章:解决VScode配置远程调试Linux程序的问题ros项目调试:vscode下配置开发ROS项目的详细教程如何通过vscode运行调试javascript代码基于VSCode调试网页JavaScript代码过程详解VSCode Golang dlv调试数据截断问题及处理方法VScode Remote SSH通过远程编辑与调试代码使用VSCode和VS2017编译调试STM32程序的实现VsCode搭建Spring Boot项目并进行创建、运行、调试VSCode1.4 搭建Golang的开发调试环境(遇到很多问题)Vscode Remote Development远程开发调试的实现思路VSCode 搭建 Arm 远程调试环境的步骤详解分享5个实用的vs调试技巧

VSCode
开发
调试
.NET
Core

相关文章
asp.net updatepanel 导致JS不能加载,而无法使用的解决方法asp.net updatepanel 局部刷新,导致JS不能加载,而无法使用,而且 updatepanel会刷两次,郁闷的,解决方法如下 2013-08-08
ASP.NET Core使用微软官方类库实现汉字转拼音这篇文章主要为大家详细介绍了ASP.NET Core使用微软官方类库实现汉字转拼音,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2018-05-05
ADO.NET获取数据(DataSet)同时获取表的架构实例下面小编就为大家分享一篇ADO.NET获取数据(DataSet)同时获取表的架构实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 2017-12-12
ASP.NET web.config中 数据库连接字符串加密解密本文主要介绍利用aspnet_regiis.exe工具对web.config中connectionStrings节点进行加密和解密的过程,希望对大家有所帮助。 2016-05-05
.NET Core 迁移躺坑记续集之Win下莫名其妙的超时这篇文章主要介绍了.NET Core 迁移躺坑记续集之Win下莫名其妙的超时,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 2019-04-04
"虚拟路径"…"映射到另一个应用程序,这是不允许原因: 用户控件不能跨虚拟目录调用。
2008-12-12
datagrid绑定list没有数据 表头不显示的解决方法datagrid绑定list没有数据 表头不显示的问题,那是因为 绑定了null,你给list new一下就好 表头就会有啦 2013-05-05
将datagrid控件内容输出到excel文件一个将datagrid控件内容输出到excel文件的demo,感兴趣的朋友可以了解下或许对你学习datagrid控件相关有所帮助 2006-09-09
.NET读取所有目录下文件正则匹配文本电子邮件由于最近在业务上的需要,利用.NET把一个文件夹下面的所有文件读取,然后从文件中正则匹配出所有的电子邮件,然后写入到一个新的文件夹,需求就这样,很简单。代码写作也不超过10min,发上来吧。哈哈 2008-12-12
一个ASP.NET的MYSQL的数据库操作类自己封装的这篇文章主要介绍了一个ASP.NET的MYSQL的数据库操作类自己封装的,在数据库操作类中的连接字符串中记得加上charset=utf8
需要的朋友可以参考下 2014-08-08

最新评论

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。