VS Code是最通用和最轻量级的代码编辑器之一,本篇博文将介绍如何通过设置VS Code以创建基于Asp.Net Core的Web API,包括创建新的解决方案和项目、添加Nuget包以及运行单元测试。
创建项目
打开VS Code并将任何空文件夹添加到工作区。添加后右键单击文件夹选择”在集成终端中打开”
在终端中使用命令创建一个名为stack_setup的新空解决方案
1
| dotnet new sln --name stack_setup
|
- 用模板命令创建一个新项目
1
| dotnet new webapi --name Stackup.Api
|
- 将项目添加到之前创建的解决方案中,确保终端仍指向解决方案文件夹
1
| dotnet sln add .\Stackup.Api\Stackup.Api.csproj
|
构建和调试
- 使用命令将终端移动到项目目录
- 运行命令进行编译
- 编译成功之后,启动项目
- 访问运行应用程序的URL(
http://localhost:5065/swagger/index.html
)就能看到正在运行的应用程序。
如果提示”Failed to determine the https port for redirect”是因为中间件必须有一个端口可以将不安全的请求重定向到HTTPS
参阅文档
包管理
Visual Studio最重要的功能之一是Nuget包管理器,它允许我们管理集成到代码中的各种NuGet包。在VSCode中也有多个扩展可以做类似的事情。
- Auto-Using for C# => 借助于此自动从各种命名空间导入引用
- C#扩展 => 构建类、接口、结构、控制器、枚举、API 控制器、Razor 页面和许多其他类型的代码,以及初始化构造函数
- .NET Core Tools => 添加选项以直接运行和构建项目
- .NET Core Test Explorer => 在 VS Code 中运行和调试单元测试
单元测试
.NET Core Test Explorer 扩展有助于直接在 VS Code 中运行所有类型的基于单元测试的项目。
- 创建一个新的测试项目并使用以下命令将其添加到解决方案中
1 2
| dotnet new nunit -n Stackup.Api.Test dotnet dotnet sln add .\Stackup.Api.Test\Stackup.Api.Test.csproj
|
- 以下命令在测试项目中添加主项目的引用
1 2
| cd .\Stackup.Api.Test\ dotnet add reference ..\Stackup.Api\Stackup.Api.csproj
|
为了使我们的默认WeatherForecast控制器可测试,让我们稍微修改一下代码,将默认逻辑移至WeatherService。
新建Service文件夹,并创建新的接口IWeatherService
1 2 3 4 5 6 7
| namespace Stackup.Api.Service { public interface IWeatherService { public IEnumerable<WeatherForecast> GetWeather(); } }
|
- 创建新气象服务类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| namespace Stackup.Api.Service { public class WeatherService : IWeatherService { private static readonly string[] Summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
public IEnumerable<WeatherForecast> GetWeather() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), TemperatureC = Random.Shared.Next(-20, 55), Summary = Summaries[Random.Shared.Next(Summaries.Length)] }).ToArray(); } } }
|
这里的GetWeather方法只是项目中生成的Controller默认代码的实现。我们只是将代码从 Controller 移动到服务,以便我们可以测试该服务。
- 更新WeatherForecast控制器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| using Microsoft.AspNetCore.Mvc; using Stackup.Api.Service;
namespace Stackup.Api.Controllers;
[ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase { private readonly ILogger<WeatherForecastController> _logger; IWeatherService _service;
public WeatherForecastController(ILogger<WeatherForecastController> logger, IWeatherService service) { _logger = logger; _service = service; }
[HttpGet(Name = "GetWeatherForecast")] public IEnumerable<WeatherForecast> Get() { return _service.GetWeather(); } }
|
- 更新Program.cs
1
| builder.Services.AddSingleton<IWeatherService, WeatherService>();
|
- 在测试项目中添加一个新的类名WeatherServiceTest,并将以下代码添加到其中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| using Stackup.Api.Service; public class WeatherServiceTest {
IWeatherService serviceToTest; [SetUp]
public void Setup() { serviceToTest = new WeatherService(); }
[Test] public void WhenCalled_ReturnWeather() { var result = serviceToTest.GetWeather(); int count = result.Count(); Assert.AreEqual(count, 5); Assert.Pass(); } }
|
构建项目,然后在VS Code左侧面板中的测试选项卡,然后单击.Net Test Explorer,单击刷新图标,然后应显示新创建的测试,右键单击测试名称Run或Debug测试。
项目结构
结论
这篇博文帮助您设置开发环境以开始使用VSCode构建ASP.NET Core Web API项目,该编辑器不是一个完全集成的 IDE,与 Visual Studio 相比缺乏功能,但它是一个快速、轻量级的开发解决方案,可以启动和运行。