使用VS Code 开发 .NET

原文: https://my.oschina.net/redhu/blog/880479, 以下为笔记

在项目的目录里打开命令行, 执行 dotnet new sln -o Demo 创建一个新的解决方案, dotnet help new 可用于查看其它可创建资源命令

再新建一个类库项目, cd Demo, dotnet new classlib -o Lib

将类库项目添加至解决方案, dotnet sln add Lib/Lib.csproj

再新建单元测试并添加到解决方案, dotnet new xunit -o UnitTest, dotnet sln add UnitTest/UnitTest.csproj

用 VS Code 打开文件夹即可, 之后 VS Code 会自动生成两个配置文件, launch.json 是执行调试程序的配置, tasks.json 是配置各种任务(如运行单元测试)

打开 UnitTest.csproj, 添加项目间引用, 如下

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
    <PackageReference Include="xunit" Version="2.3.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
    <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
  </ItemGroup>

  <!-- 项目间引用 -->
  <ItemGroup>
    <ProjectReference Include="..\Lib\Lib.csproj" />
  </ItemGroup>

</Project>

如果是包依赖, 则需要填入 PackageReference 并填入类库名称和版本号

之后在根目录使用 dotnet restore 初始化, 也可以再用 dotnet build 尝试编译

在 VS Code 中删除自动生成的 cs 文件, 重新新建

比如这里在 Lib 文件夹下新建一个 Math.cs, 再在 UnitTest 下新建 MathTest.cs

// Math.cs

namespace Lib {
    
    public class Math {
        public static int Add(int i, int j) => i + j;
    }
}
// MathTest.cs

using Xunit;
using Lib;

namespace MathTest {
    public class MathTest {

        [Fact]
        public void TestAdd()
        {
            int i = 0, j = 1;
            int result = Math.Add(i, j);
            Assert.Equal(0 + 1, result);
        }
    }
}

"调试" -> "启动调试" 即可, 或在控制台中执行 dotnet test .\UnitTest\UnitTest.csproj 进行单元测试, 或者根目录下执行 dotnet run -p ./ConsoleDemo/ConsoleDemo.csproj 运行控制台程序, VS Code 中 using 的补全是 ctrl+. 即可, Console.OutputEncoding = Encoding.UTF8;可以更改控制台输出编码

通过 VS Code 内部直接运行的话需要配置 tasks.json, 默认的一般就可以

{
    "version": "2.0.0",                                         // 配置的版本号
    "tasks": [                                                  // 一个任务
        {
            "label": "unitTest",                                // 任务的用户界面标签
            "command": "dotnet",                                // 任务使用这个命令
            "type": "process",                                  // 作为进程运行而非 Shell 中的命令
            "args": [                                           // 参数
                "test",                                         // 也作为一个命令, 组成 dotnet build
                "${workspaceFolder}/UnitTest/UnitTest.csproj"   // 需要编译的项目, 多项目也可以设置为 sln
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}

之后 F1 调出命令面板, 输入 task, 选择运行任务, 然后选择一个任务运行

如果需要调试程序, 需要设置 launch.json

{
   "version": "0.2.0",
   "configurations": [
        {
            "name": ".NET Core Launch (console)",       // 配置名称
            "type": "coreclr",                          // 配置类型 .net core 类型的调试
            "request": "launch",                        // 调试类型, 启动或附加
            "preLaunchTask": "unitTest",                // 前置任务, 这里用的是 tasks.json 里的 task 的 label
            // If you have changed target frameworks, make sure to update the program path.
            "program": "${workspaceFolder}/UnitTest/bin/Debug/netcoreapp2.1/UnitTest.dll",  // 需要调试的 dll 位置
            "args": [],                                 // 额外参数
            "cwd": "${workspaceFolder}/UnitTest",       // 工作目录
            // "console": "internalConsole",            // 控制台模式, 内嵌模式( internalConsole )或外置模式, 内置模式无法交互
            "externalConsole": true,                    // 将控制台模式改为外置模式
            "stopAtEntry": false,
            "internalConsoleOptions": "openOnSessionStart"
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        }
    ,]
}

猜你喜欢

转载自www.cnblogs.com/seliote/p/9320779.html