簡體   English   中英

如何將 .NET 標准庫更改為 .NET 框架庫?

[英]How can I change a .NET standard library to a .NET framework library?

我正在為 C# 中的簡單解析器編寫一個類庫。 當我第一次創建它時,我使用了 .NET 標准 2.0,但現在我需要將它遷移到 .NET 4.6 以符合我的解決方案中的其他項目並為了使用 NUnit。

我嘗試按照Microsoft 文檔中的說明進行操作,但是當我嘗試在屬性中選擇其他框架時,只能找到其他 .NET 標准版本。

我怎樣才能遷移它? 我需要手動編輯.csproj文件嗎?

打開項目文件(.csproj),將TargetFramework改成net462

<PropertyGroup>
  <TargetFramework>net462</TargetFramework>
</PropertyGroup>

我在 Visual Studio 2017 中的個人經驗是,重新創建項目並添加現有源是最簡單、最安全和最有效的方法 - 因為基於 .Net Framework 的 csproj 文件具有額外的 xml 元素(與基於標准的相比),似乎改變“TargetFramework”是不夠。 以下是默認情況下出現的差異部分:


在此處輸入圖片說明

如果您將類庫發布為 Nuget 包,那么有更好的方法來設置它。 看看這篇文章:

https://weblog.west-wind.com/posts/2017/Jun/22/MultiTargeting-and-Porting-a-NET-Library-to-NET-Core-20

基本上,您可以為多目標設置類庫,允許將其導入 .net 核心項目以及不同版本的 .net 框架。

我做了幾個步驟,為我工作:

  1. git push你的代碼,所以你有一個備份:)
  2. 在VS中卸載項目(右鍵點擊項目並卸載)
  3. 在 VS 中編輯項目(右鍵單擊並編輯)
  4. 將 TargetFramework OR/AND TargetFrameworkVersion 替換為<TargetFramework>netcoreapp2.0</TargetFramework>

  5. 將項目行,通常是第一行(在 xml root 之后)更改為: <Project Sdk="Microsoft.NET.Sdk" >

  6. 刪除通常是第二行的導入(在 xml 根之后)

  7. 如果需要,請保留描述構建選項的 PropertyGroups(我想要我的自定義)
  8. 刪除引用和文件引用,它們不是必需的。
  9. 關閉文件並重新加載(右鍵單擊重新加載)。
  10. 刪除 assemblyinfo 文件(從屬性文件夾中),因為它不需要,程序集版本現在來自項目
  11. 右鍵單擊項目並轉到屬性以查看項目文件中沒有任何錯誤。 確保您沒有錯別字或不接近的標簽。
  12. 建造。 如果您缺少依賴項,請右鍵單擊項目並添加它們。 - 我想你不想在項目中編輯它們。 或者,您可以根據需要執行 dotnet restore 或 dotnetbulid 來添加它們。

希望這對你有用。 它們看起來有很多步驟,但它們並沒有那么復雜,而且這是一次努力。

暫無
暫無

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

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