我想從我的專案檔案中洗掉 TargetFramework 說明符并通過命令列傳遞它。聽起來很簡單:
dotnet build -f net5
但最大的問題是 Nuget 方面。因為
dotnet restore
抱怨缺少的框架:
dotnet restore common\common.csproj 正在確定要還原的專案... C:\Program Files\dotnet\sdk\5.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(92,5) :錯誤 NETSDK1013:無法識別 TargetFramework 值“”。它可能拼寫錯誤。如果不是,則必須明確指定 TargetFrameworkIdentifier 和/或 TargetFrameworkVersion 屬性。
問題是 dotnet restore 不接受 TargetFamework 引數。所以我被迫將 TargetFramework 寫入組態檔:更糟糕的是,obj 目錄中總是有一個 Nuget 恢復,所以在目標框架之間的每次切換時,我都需要修改組態檔并進行全新的恢復。這非常麻煩,我想知道如何避免這種情況。
如果這不能解決,我會踢出 NuGet 并直接參考包程式集。
謝謝你的幫助
uj5u.com熱心網友回復:
由于dotnet restore和dotnet build是圍繞 的包裝器dotnet msbuild,您可以使用所有 MSBuild 開關來更改構建系統的行為。
這里我們需要設定目標框架,可以通過
- 在專案檔案中設定屬性:
<TargetFramework>net5.0</TargetFramework>
或者
- 通過命令列檔案設定屬性:
dotnet restore -p:TargetFramework=net5.0
或者
- 設定不推薦的環境變數(由我)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/324519.html
