[英]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:
現在,是否有可能以某種方式獨立配置這些東西? 我知道存在依賴關系,但是針對較低的 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.