0%

[DotnetCore]教學系列-指定sdk版本建立專案

前提情要

筆者這邊遇到的問題是電腦環境中有多個sdk版本,需要指定比較舊的sdk版本來建立專案,筆者之前剛幫公司用基礎專案時遇到3.1LTS版本,因此有跟著升級,dotnet 5因不是LTS版本就沒有跟著升,就坐著等dotnet 6了。

依上述,筆者公司開發環境停留在3.1,但因前一陣子重灌電腦,重新安裝Visual Studio 2019後,預設安裝dotnet 5,筆者還特地下載dotnet core 3.1 sdk來安裝,因此環境中有兩個版本,但若沒有特別指定時,會以最新的sdk版本對應的範本產生,最後列出筆者電腦環境的sdk

1
2
3
4
dotnet --list-sdks
# 輸出內容
3.1.415 [C:\Program Files\dotnet\sdk]
5.0.403 [C:\Program Files\dotnet\sdk]

內容

筆者這邊會示範加入options前和加入options之後的效果,就此紀錄成功以指定sdk版本建立專案過程。

預設範本

筆者示範一下沒有加任何options時的建置專案

1
2
3
4
5
6
7
8
dotnet new webapi -o demo-5.API
# 輸出內容範本「ASP.NET Core Web API」已成功建立。

正在處理建立後的動作...
正在 demo-5.API\demo-5.API.csproj 上執行 'dotnet restore'...
正在判斷要還原的專案...
已還原 {path}\source\repos\demo-5.API\demo-5.API.csproj (177 ms 內)。
還原成功。

接著進到此範例API專案中,觀看一下csproj檔案

1
2
cd demo-5.API
code demo-5.API.csproj

使用vscode將專案檔案打開來看一下,就會發現是TargetFramework中的值為net5.0

1
2
3
4
5
6
7
8
9
10
11
12
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace>demo_5.API</RootNamespace>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
</ItemGroup>

</Project>

指定dotnet sdk版本

因為筆者公司開發專案還停留在dotnet 3.1,若自己寫一些demo或測試專案時,希望sdk版本也是一致,因此研究了一下dotnet new cli指令相關options,發現指定sdk版本是放在第二層,是跟著你的範本的,以上述筆者示範來說,webapi專案,webapi範本專案後面有諸多options可以設定,類似像預設不要設定https等等,其中-f這個option可以指定sdk版本,另,以官方文件指出,我們可以輸入的值如下:

SDK 版本 預設值
5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.0
2.1 netcoreapp2.1

看完對照表之後,跟著筆者下指令吧,目標是建置出來的webapi範本專案套用dotnet core 3.1

1
2
3
4
5
6
7
8
9
dotnet new webapi -o demo-3.API -f netcoreapp3.1
# 輸出內容
範本「ASP.NET Core Web API」已成功建立。

正在處理建立後的動作...
正在 demo-3.API\demo-3.API.csproj 上執行 'dotnet restore'...
正在判斷要還原的專案...
已還原 {path}\source\repos\demo-3.API\demo-3.API.csproj (59 ms 內)。
還原成功。

依樣使用vscode打開專案檔來看一下

1
2
cd demo-3.API\
code demo-3.API.csproj
1
2
3
4
5
6
7
8
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>demo_3.API</RootNamespace>
</PropertyGroup>

</Project>

從專案檔內容可以看出,成功建立dotnet core3.1範本專案

結論

dotnet cli指令應有盡有,筆者趁這個機會,重新看了一下cli教學文件,再熟悉一下相關設定options,也是一個不錯的收穫,若有一樣的困擾的讀者,希望有幫助到你們。

參考