原文: 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}"
}
,]
}