簡體   English   中英

在 Visual Studio 中,是否可以定位 .NET 4.x CLR 但 2.0 class 庫 API?

[英]In Visual Studio, is it possible to target a .NET 4.x CLR but a 2.0 class library API?

當您在 Visual Studio 中 select 是 C# 項目的目標框架時,您實際上是同時 select 三個不同的東西(據我了解)。

選擇 .NET 4.7.2 將 select:

  • 語言版本(例如 C# 7.2)
  • CRL(公共語言運行時)版本(例如 4.5)
  • 和 BCL(基礎 class 庫)版本(例如 4.7.2)

現在,是否有可能以某種方式獨立配置這些東西? 我知道存在依賴關系,但是針對較低的 BCL API 應該可以工作,對吧?

原因是這樣的:我的項目是在 Unity3D 應用程序中使用的 C# class 庫。 Unity 有一個 4.x(兼容)CLR,但讓我們在 .NET 標准 2.0 API 和 4.x 之間進行選擇。 以 2.0 為目標通常是有意義的,因為它更小,而且 4.x 並不適用於 Unity 支持的所有平台。

如果我可以在 Visual Studio 中復制此配置,那就太好了。 否則我可能會不小心在我的 dll 代碼中調用無效(即 > 2.0)API 並且只會在代碼崩潰並在 Unity 中出現“找不到類/函數”時才知道。

語言版本可以通過csproj中的<LangVersion>完全獨立設置,即

<LangVersion>8.0</LangVersion>

CLR 和 BCL 版本是……復雜的。 你真的在這里瞄准一個TFM。 聽起來你想要(再次,在 csproj 中)

<TargetFramework>netstandard2.0</TargetFramework>

實際的 CLR(運行時)由運行它的任何東西決定,而不是由庫決定。 但是你可以多目標,如果這變得有用的話,即

<TargetFrameworks>netstandard2.0;net472</TargetFrameworks>

並為不同的平台配置不同的依賴項和#if等,以充分利用每個平台。 unity是否可以正確使用多目標 package 是另一個問題,我無法回答。

您可以隨時編輯 csproj; 您不受模板生成的內容的約束。

暫無
暫無

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

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