音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

使用VSCode开发和调试.NET Core程序的方法
日期:2021-09-07 22:47:53   来源:脚本之家

电脑不想装几十个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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    ASP编程JSP编程PHP编程.NET编程python编程