公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

如何在.NET Framework及.NET6以前項目中使用C#12新特性

freeflydom
2024年7月22日 10:4 本文熱度 1559

前兩天發了一篇關于模式匹配的文章,鏈接地址,有小伙伴提到使用.NET6沒法體驗 C#新特性的疑問, 其實呢只要本地的SDK源代碼編譯器能支持到的情況下(直接下載VS2022或者VS的最新preview版本)
只需要做很小的改動就可以支持的.

目前仍然還有一些小伙伴因為歷史原因可能還在寫.NET Framework項目,

.NET Framework 目前不直接支持 C# 12,因為 C# 12 是與 .NET 6 和更高版本一起發布的,而 .NET Framework 的最后一個版本是 4.8,之后就不再更新了。但是,你也可以通過一些方法間接使用 C# 12 的新特性,前提是這些特性在編譯時不依賴于 .NET 6 或更高版本的基礎類庫的新特性。以下是實現這一目標的步驟:

  1. 更新 Visual Studio:確保你的 Visual Studio 至少更新到支持 C# 12 的版本。這通常意味著使用 Visual Studio 2022 的最新版本。

  2. 編輯項目文件:手動編輯你的 .csproj 文件,將 C# 語言版本設置為 12。這可以通過添加或修改 <LangVersion> 標簽來實現。

<PropertyGroup>

  <LangVersion>12.0</LangVersion>

</PropertyGroup>

當然如果安裝的VS2022的最新preview版本你還可以把版本號直接設置為latest以支持比12.0更高的語言版本

當然如果你的代碼可能需要同時支持多個框架版本你可以使用預編譯指令,以避免編譯錯誤的問題

#if NET8_0_OR_GREATER

// 使用 C# 12 的特性,這些特性依賴于 .NET8 或更高版本的基礎類庫

#else

// 提供 .NET Framework 兼容的代碼

#endif

當設置LangVersion后,對于NET Framework項目如果使用record,init等關鍵字定義時應該還會有如下的報錯出現,這主要是因為兼容.NET Standard版本實現的問題:

解決這個問題也很簡單,項目中定義一個命名空間為System.Runtime.CompilerServicesIsExternalInitclass即可:

namespace System.Runtime.CompilerServices

{

    public static class IsExternalInit

    {

    }

}

下面創建一個項目測試一下,代碼如下:

namespace UseLatestLangVersion

{

    public class TestClass(string initWord)

    {

        public int Id { get; init; }

        public record User(string Name, int Age);

        public void SayHello()

        {

            Console.WriteLine(initWord);

            var user = new User("vipwan", 30);

            if (user is { Age: >= 18 })

            {

                Console.WriteLine($"user {user.Name} is adult.");

            }

        }

    }

}

以上的代碼項目框架是.NET Framework4.5.2,用到了最新的一些C#特性,經過簡單改造,就可以編譯成功了.

重中之重就是本地SDK的csc編譯器支持的最大版本一定要>=LangVersion設置版本

最后請注意,即使通過這些方法,也不意味著早期的框架版本項目就能使用Nuget引用新版框架的dll庫,比如NETFramework4.5引用NET8編譯的dll版本,那肯定是不行的,除非該dll編譯成了對應的框架版本支持

轉自https://www.cnblogs.com/vipwan/p/18313947 作者萬雅虎


該文章在 2024/7/22 10:04:57 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 成人毛片十八女人毛片视频 | 国产三级精品三级在 | 国产午夜精品免费视频观看 | 国产无码av一区二区在线入口 | 国产真人无码作爱免费视频久 | av午夜精品一区二区三 | 韩国三级理论无码电影在线观看 | 国产精品不卡在线观看的a站 | 国产中文另类二区 | 国产精品白浆精子流水合集 | 成人精品一区二区三区不 | 高清中文字幕在线 | 东京热99精品国产一区二区 | 成人精品一区二区三区电影黑人 | 91精品国内手机在线观看 | 国产精品成人观看视频网 | 911国产精品无码久久 | 国产成人无码a区视频在线观看 | 18处破外女出血在线 | 白洁一区二区三区中文 | 99久久精品无码一 | 国产精品美女爆乳在线观看99 | 国产无套粉嫩白浆在线观看 | 国产精品视频熟女韵味 | 国产成人无码午夜视频在线播放 | 国产粗口调教在线播放 | 国产成人aⅴ在线免费观看 国产成人aa精品一区在线播放 | 69国产成人综合久久精品 | 国产精品嫩草影院 | 国码无码久久99 | 国产中文字幕永久免费 | 国产一区福利 | 国产福利片在线观看 | 国产精品一区二区三区免 | 国产三级国产三级欧美三级 | 精品国产制服丝袜一区二区 | 精品高潮呻吟久久av无码 | 国产国拍亚洲精品永久污 | 国产一区二区不卡视频 | 国内视频一区在线播放 | 精品日韩专区 |