簡體   English   中英

.NET 5 是否支持舊的 csproj 格式?

[英]Does .NET 5 support the old csproj format?

從 .NET Framework 遷移到 .NET 5+ 的最大障礙之一是必須將所有 csproj 轉換為新的 SDK 樣式格式。 沒有工具可以自動執行此操作,必須手動完成。

我想知道是否需要這種轉換? 有沒有辦法在保留舊的cs項目的同時切換到.NET?

我團隊的解決方案中有 300 多個項目,看起來我們永遠不會切換。 工作量太大了。

我嘗試手動更新 <TargetFramework> 但沒有用。

也許我遺漏了一些東西並且有辦法實現這一目標?

不是對您問題的直接回答,但可能會有所幫助。 我的目標不是轉換為 .net 5,只是將我的項目轉換為 SDK 樣式。

我有四個 .net 4.0 項目的解決方案,包括一個 WPF 項目和四個 xUnit 測試項目。 我使用了一個 .net 升級助手,我在“將項目轉換為 sdk 樣式步驟”之后就停止了。 它基本上沒有問題。 我從這個堆棧溢出帖子中得到了這個想法(請參閱已接受答案下的評論)。

上面的鏈接說 Visual Studio 2022 或更高版本,但我有 2019,它運行良好。 我認為它說如果您要完全遷移到 .net 6/7,則需要 2022。

在轉換為 SDK 之前,我唯一做的另一件事是更新每個項目以使用 PackageReference 而不是 packages.config。 在決定將我的項目轉換為 SDK 樣式之前,我不確定這是否重要,因為我這樣做了。 如果您右鍵單擊該項目,您將看到一個名為“將 package.config 遷移到 package 參考”的命令。 對所有項目執行此操作后,go 到工具 > Nuget Package 管理器 > Package 管理器設置,然后在 Package 管理器下將“默認 package 管理格式”設置為 PackageReference。 這里

然后,我一次一個地轉換每個項目,確保每個項目都構建正常,然后再繼續下一個項目。 我遇到的唯一問題是遷移助手向每個項目引用添加了更新版本的 Microsoft.CSharp。 對於我的 WPF 項目,我不得不刪除它並替換為 .net 4.0 的版本; 對於其他項目,我只需要刪除它,因為它沒有被使用。 我不確定為什么這樣做,但認為這是為了遷移的后續步驟。

csprojs 現在更干凈了。 還啟用項目右鍵菜單中的“刪除未使用的引用”選項。

我還確認我也可以從命令行使用 do.net build myProject.csproj。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM