本篇为Part II:开发环境及项目设置。
查看上一篇 Part I: Business Scenario
第一步,准备步骤
准备步骤一,准备步骤。
准备步骤一,下载.NET Core 2.2 3.1 (或更高版本) SDK;
官方网址是:https://dot.net (貌似会redirect去https://dotnet.microsoft.com/ ),选择Download .NET Core 2.2 3.1 (或更高版本) SDK,并正确安装。
准备步骤二,下载SQL Server 2017 2019 (或更高版本) Express;
SQL Server的官方网址是:https://www.microsoft.com/en-us/sql-server/
数据库的选择因人而异,这里选择MS免费的SQL Server Express。从稳定性上来说,不建议使用Preview甚至RC版本。
MySQL是另外一个选择。但是选择SQL Server Express 的优点是官方指代的Library就够用了。
注意,安装数据库时候,默认安装一个instance。
准备步骤三,下载Visual Studio Community OR Visual Studio Express
个人推荐Visual Studio Code。
虽然Visual Studio Community应该更合适,但是考虑到熟悉命令行显然更便于将来切换到non-Windows平台上。
另外,Visual Studio Community 2017的臭名昭著的卸载问题,也是放弃其的一个原因。
第二步,创建Project
ASP.NET Core 官方的Tutorial文档
EF Core官方Tutorial文档
OData官方Getting Started
本文列出的创建步骤综合考虑了上述三大文档,得出整个项目设置流程如下命令(逐一执行)。
mkdir KnowledgeBuilderAPI
cd KnowledgeBuilderAPI
dotnet new sln
dotnet new webapi -o KnowledgeBuilderAPI
cd KnowledgeBuilderAPI
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.InMemory
dotnet add package Microsoft.AspNetCore.OData --version 7.4.1
cd ..
dotnet sln add ./KnowledgeBuilderAPI/KnowledgeBuilderAPI.csproj
mkdir KnowledgeBuilderAPI.Test
cd KnowledgeBuilderAPI.Test
dotnet new xunit
dotnet add reference ../KnowledgeBuilderAPI/KnowledgeBuilderAPI.csproj
cd ..
dotnet sln add ./KnowledgeBuilderAPI.Test/KnowledgeBuilderAPI.Test.csproj
code -r ../KnowledgeBuilderAPI
注意, 上述步骤只适用 .NET Core 3和OData 7.3.0 Beta 7.4以及更高版本。因为OData 之前的版本 (7.3.0以前的版本)并不支持 .NET Core 3.0 (Routing),在.NETCore 2.2版本下,两个csproj文件分别为:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.OData" Version="7.2.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.0" />
</ItemGroup>
</Project>
Test project如下:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\knowledgebuilderapi\knowledgebuilderapi.csproj" />
</ItemGroup>
</Project>
第三步,针对开发环境,使用Secret Manager tool
执行命令:
dotnet user-secrets init
这条命令会在当前目录下的项目文件(*.csproj)中加入一条。
<PropertyGroup>
<UserSecretsId>xxxxxxxxxx</UserSecretsId>
</PropertyGroup>
同时,可以查看文件:
%APPDATA%\Microsoft\UserSecrets<user_secrets_id>\secrets.json 通过命令往其中增加内容,对这个项目来说,是增加Connection String。
dotnet user-secrets set "KnwoledgeBuilderAPI:ConnectionString" "Server=.\SQLEXPRESS;Database=knowledgebuilder;Trusted_Connection=True;"
如果想要删除该Connection String,调用命令:
dotnet user-secrets remove
另外两个有用的命令是: list - 显示当前所有值
dotnet user-secrets list
clear - 清除所有
dotnet user-secrets clear
至此,一个粗略的项目框架已经ready,可以跑
dotnet run
来运行了,也可以使用
dotnet test
来测试。
下一篇将讲述如何开发Model: Part III: Model。
项目Github Repo: Link
是为之记。
Alva Chien
2019.11.04
Updated on 2020.07.02
Updated on 2020.12.17