我繼承了一個可以使用 Visual Studio 編譯的 .NET Framework 4.8 應用程式,但是在嘗試使用dotnetCLI 應用程式編譯它時,我從外部依賴項中使用的所有型別都出現 CS0246 錯誤。原來的錯誤資訊,對不起德國人:
Archiver\Archiver.cs(2,7): error CS0246: Der Typ- oder Namespacename "log4net" wurde nicht gefunden (m?glicherweise fehlt eine using-Direktive oder ein Assemblyverweis).
運行時,dotnet --list-sdk我得到以下輸出:
3.1.301 [C:\Program Files\dotnet\sdk]
5.0.402 [C:\Program Files\dotnet\sdk]
我多次嘗試重新安裝和修復 .NET Framework 4.8,但這并沒有解決任何問題。
我需要做什么才能讓 CLI 意識到框架的位置并希望修復我的錯誤?
uj5u.com熱心網友回復:
你不能。很復雜,請看下文。
dotnet是 .NET Core/.NET 5 及更高版本的 CLI。它從未與 .NET Framework .csproj 專案兼容,也永遠不會。(這很復雜,請參見下文。)
您正在尋找的答案基本上是:要從命令列構建您的 .NET Framework 專案/解決方案,請使用 MSBuild(或者,如果您真的、真的、真的必須使用 Visual Studio,devenv)。
您可以構建一個新的“SDK 風格”專案,以 net48 或類似的. 這些專案是隨 .NET Core 引入的,大多數 .NET Framework 專案都不是這種型別。據我所知,Visual Studio 中沒有模板為 .NET Framework 專案生成它們,因為它們不是為它構建的。例如,當在一個中使用物體框架 NuGet 包時,該工具不會像通常那樣安裝和集成,因為 NuGet 在 .NET Framework csprojs 和“SDK 樣式”csprojs 之間的集成完全不同。如果您有這種型別的專案,那么您可能 a) 創建了一個 .NET Standard 專案,b) 創建了一個 .NET Core 專案并將其設定為 target net48,或者 c) 或多或少地手動創建了一個 SDK 樣式的 csproj .
無論如何,沒有dotnet針對 .NET Framework 的SDK ,它不知道如何處理基于 .NET Framework 的網站、ASP.NET csprojs、WPF/Windows Forms csprojs、類別庫 csprojs 等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344050.html
上一篇:從NET4.8遷移到NET5/Core,是否需要完整框架?
下一篇:帶有結果選擇器的掃描運算子
