Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲激情视频在线观看,国内精品视频在线播放,中文字幕一区二区三区亚洲精品

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          .NET 6 正式發(fā)布,迄今為止最快的 .NET

          .NET 6 正式發(fā)布,迄今為止最快的 .NET

          品|開源中國

          文|局長

          微軟宣布 .NET 6 已正式推出,并稱其為迄今為止最快的 .NET 版本。

          發(fā)布公告提到,.NET 6 是首個(gè)原生支持 Apple Silicon (Arm64) 的版本,并且還針對 Windows Arm64 進(jìn)行了改進(jìn)。.NET 團(tuán)隊(duì)構(gòu)建了一個(gè)新的動態(tài)配置文件引導(dǎo)優(yōu)化 (PGO) 系統(tǒng),該系統(tǒng)可提供僅在運(yùn)行時(shí)才會進(jìn)行的深度優(yōu)化。其他變化包括使用 dotnet monitor 和 OpenTelemetry 改進(jìn)云診斷、提供更強(qiáng)大和更高效的 WebAssembly 支持,以及添加用于 HTTP/3、JSON 處理、數(shù)學(xué)和直接操作內(nèi)存的新 API。

          作為 LTS 長期支持版本,.NET 6 將會獲得 3 年的技術(shù)支持。

          在 .NET 6 開發(fā)周期內(nèi),總共包含大約一萬個(gè) commit,下面簡要介紹新版本的亮點(diǎn)變化。

          .NET 6 亮點(diǎn)

          • 使用 Microsoft 服務(wù)、其他公司運(yùn)行的云應(yīng)用程序和開源項(xiàng)目進(jìn)行了生產(chǎn)壓力測試。

          • 作為最新的長期支持 (LTS) 版本提供三年的技術(shù)支持

          • 跨瀏覽器、云、桌面、IoT 和移動應(yīng)用程序的統(tǒng)一平臺,全部使用相同的 .NET 庫,可便捷地共享代碼。

          • 性能全面提升,尤其是文件 I/O 的性能,減少了執(zhí)行時(shí)間、等待時(shí)間和內(nèi)存使用。

          • C# 10 帶來了語言改進(jìn),例如記錄結(jié)構(gòu) (record structs)、隱式使用和新的 lambda 功能,同時(shí)編譯器添加了增量源代碼生成器。 F# 6 新特性包括基于 task 的異步、管道調(diào)試和多項(xiàng)性能改進(jìn)。

          • Visual Basic 在 Visual Studio 體驗(yàn)和 Windows Forms 項(xiàng)目打開體驗(yàn)方面進(jìn)行了改進(jìn)。

          • 熱重載 (Hot Reload) 支持跳過重新構(gòu)建和重新啟動以查看新更改(當(dāng)應(yīng)用程序正處于運(yùn)行狀態(tài)),此特性支持在 Visual Studio 2022 中使用,并通過 .NET CLI 為 C# 和 Visual Basic 提供了支持。

          • 云診斷已通過 OpenTelemetry 和 dotnet monitor 進(jìn)行改進(jìn),現(xiàn)在在生產(chǎn)環(huán)境中得到支持,并且可用于 Azure 應(yīng)用服務(wù)。

          • JSON API 更強(qiáng)大,并提供源代碼生成器器用于串行更高的性能。

          • ASP.NET Core 引入了最少的 API,以簡化入門體驗(yàn)并提升 HTTP 服務(wù)的性能。

          • Blazor 組件現(xiàn)在可以從 JavaScript 渲染并與現(xiàn)有的基于 JavaScript 的應(yīng)用程序集成。

          • 用于 Blazor WebAssembly (Wasm) 應(yīng)用程序的 WebAssembly AOT 編譯,以及對運(yùn)行時(shí)重新鏈接和本機(jī)依賴項(xiàng)的支持。

          • 使用 ASP.NET Core 構(gòu)建的單頁應(yīng)用程序現(xiàn)在使用了更靈活的模式,可以與 Angular、React 和其他流行的前端 JavaScript 框架一起使用。

          • 添加了 HTTP/3 以便 ASP.NET Core、HttpClient 和 gRPC 都可以與 HTTP/3 客戶端和服務(wù)器交互。

          • 文件 IO 現(xiàn)在支持符號鏈接,并通過從頭開始重新編寫FileStream大幅提升了性能。

          • 通過支持 OpenSSL 3、ChaCha20Poly1305 加密方案和運(yùn)行時(shí)縱深防御緩解措施(特別是W^X和CET),安全性得到了提升。

          • 支持為 Linux、macOS 和 Windows(以前僅適用于 Linux)發(fā)布單文件應(yīng)用程序。

          • IL 修剪現(xiàn)在更加強(qiáng)大和有效,提供了新的警告和分析器,可確保正確的最終結(jié)果。

          • 添加了源代碼生成器和分析器,可幫助生成更好、更安全和更高性能的代碼。

          • 源代碼構(gòu)建使 Red Hat 等組織能夠從源代碼構(gòu)建 .NET,并向其用戶提供自己的構(gòu)建版本。

          文介紹通過C#和VB.NET代碼展示將Html轉(zhuǎn)為Excel文檔的方法。

          dll引用

          方法1

          將 Spire.XLS for .NET (https://www.e-iceblue.cn/Downloads/Spire-XLS-NET.html)下載到本地,解壓,安裝。完成安裝后,在安裝路徑下找到BIN文件夾下的Spire.Xls.dll。然后在Visual Studio中打開“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“添加引用”,將本地路徑BIN文件夾下的dll文件添加引用至程序。

          方法2

          通過 NuGet 安裝。可以通過以下2種方法安裝:

          1.可以在Visual Studio中打開“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“管理NuGet包”,然后搜索“Spire.XLS”,點(diǎn)擊“安裝”。等待程序安裝完成。

          2.將以下內(nèi)容復(fù)制到PM控制臺安裝。

          Install-Package Spire.XLS -Version 12.3.2

          將HTML轉(zhuǎn)為Excel

          C#

          using Spire.Xls;
          
          namespace HtmlToExcel
          {
              class Program
              {
                  static void Main(string[] args)
                  {
                      //加載示例文檔 
                      Workbook workbook=new Workbook();
                      workbook.LoadFromHtml("test.html");
          
                      //自適應(yīng)行高
                      Worksheet sheet=workbook.Worksheets[0];
                      sheet.AllocatedRange.AutoFitRows();
          
                      //保存文檔
                      workbook.SaveToFile("HtmlToExcel.xlsx", FileFormat.Version2013);
                  }
              }
          }

          轉(zhuǎn)換效果:

          —END—

          請大家轉(zhuǎn)發(fā)+評論,希望能幫助更大的水粉們。

          家好,很高興又見面了,我是"高級前端?進(jìn)階?",由我?guī)е蠹乙黄痍P(guān)注前端前沿、深入前端底層技術(shù),大家一起進(jìn)步,也歡迎大家關(guān)注、點(diǎn)贊、收藏、轉(zhuǎn)發(fā)!

          1.什么是 Jint

          Jint 是 .NET 的 Javascript 解釋器,可以在任何現(xiàn)代 .NET 平臺上運(yùn)行,支持 .NET Standard 2.0 和 .NET 4.6.2 目標(biāo)(及更高版本)。在性能方面,Jint 也是非常優(yōu)秀:

          • 由于 Jint 既不生成任何 .NET 字節(jié)碼也不使用 DLR,因此可以非常快地運(yùn)行相對較小的腳本
          • 如果重復(fù)運(yùn)行相同的腳本,則應(yīng)該緩存 Esprima 生成的腳本或模塊實(shí)例并將其提供給 Jint 而不是內(nèi)容字符串
          • 更適合在嚴(yán)格模式下運(yùn)行引擎,可以提高性能

          Jint 可以適應(yīng)以下典型場景:

          • 在安全的沙盒環(huán)境中在 .NET 應(yīng)用程序內(nèi)運(yùn)行 JavaScript
          • 將本機(jī) .NET 對象和函數(shù)公開給 JavaScript 代碼,以 JSON 形式獲取數(shù)據(jù)庫查詢結(jié)果、調(diào)用 .NET 方法等
          • 支持 .NET 應(yīng)用程序中的腳本編寫,允許用戶使用 JavaScript 自定義應(yīng)用程序(如 Unity 游戲)

          Jint 的一些用戶包括 RavenDB、EventStore、OrchardCore、ELSA Workflows、docfx、JavaScript Engine Switcher 等等。

          目前 Jint 在 Github 通過 BSD-2-Clause 協(xié)議開源,有超過 3.7k 的 star,1k 的 fork、1.7k 的項(xiàng)目依賴量,是一個(gè)值得關(guān)注的開源項(xiàng)目。

          2.如何使用 Jint

          基礎(chǔ)示例

          下面示例定義了一個(gè)名為 log 的新值,該值指向 Console.WriteLine,然后運(yùn)行一個(gè)調(diào)用 log('Hello World!') 的腳本。

          var engine=new Engine()
              .SetValue("log", new Action<object>(Console.WriteLine));
          
          engine.Execute(@"
              function hello() {
                  log('Hello World');
              };
          
              hello();
          ");

          變量 x 設(shè)置為 3,并且 x * x 在 JavaScript 中計(jì)算。結(jié)果直接返回到 .NET,在本例中為雙精度值 9。

          var square=new Engine()
              .SetValue("x", 3) // define a new variable
              .Evaluate("x * x") // evaluate a statement
              .ToObject(); // converts the value to .NET

          還可以直接傳遞 POCO 或匿名對象并從 JavaScript 使用。例如,在此示例中,一個(gè)新的 Person 實(shí)例是通過 JavaScript 操作的。

          var p=new Person {
              Name="Mickey Mouse"
          };
          
          var engine=new Engine()
              .SetValue("p", p)
              .Execute("p.Name='Minnie'");
          
          Assert.AreEqual("Minnie", p.Name);

          可以調(diào)用 JavaScript 函數(shù)引用:

          var add=new Engine()
              .Execute("function add(a, b) { return a + b; }")
              .GetValue("add");
          
          add.Invoke(1, 2); // -> 3

          或者通過函數(shù)名稱調(diào)用:

          var engine=new Engine()
             .Execute("function add(a, b) { return a + b; }");
          
          engine.Invoke("add", 1, 2); // -> 3

          訪問 .NET 程序集和類

          開發(fā)者可以通過如下配置引擎實(shí)例來允許引擎訪問任何 .NET 類:

          var engine=new Engine(cfg=> cfg.AllowClr());

          然后就可以將系統(tǒng)命名空間作為全局值進(jìn)行訪問。以下是它在命令行實(shí)用程序上下文中的使用方式:

          jint> var file=new System.IO.StreamWriter('log.txt');
          jint> file.WriteLine('Hello World !');
          jint> file.Dispose();

          國際化

          如果不想使用計(jì)算機(jī)的默認(rèn)值,則可以在使用區(qū)域設(shè)置 JavaScript 方法時(shí)強(qiáng)制引擎應(yīng)使用的時(shí)區(qū)或文化,下面示例強(qiáng)制將時(shí)區(qū)設(shè)置為太平洋標(biāo)準(zhǔn)時(shí)間。

          var PST=TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
          var engine=new Engine(cfg=> cfg.LocalTimeZone(PST));
          
          engine.Execute("new Date().toString()"); // Wed Dec 31 1969 16:00:00 GMT-08:00

          下面示例使用法語作為默認(rèn)區(qū)域性:

          var FR=CultureInfo.GetCultureInfo("fr-FR");
          var engine=new Engine(cfg=> cfg.Culture(FR));
          
          engine.Execute("new Number(1.23).toString()"); // 1.23
          engine.Execute("new Number(1.23).toLocaleString()"); // 1,23

          使用模塊

          可以使用模塊從多個(gè)腳本文件導(dǎo)入和導(dǎo)出變量:

          var engine=new Engine(options=>
          {
              options.EnableModules(@"C:\Scripts");
          })
          
          var ns=engine.Modules.Import("./my-module.js");
          
          var value=ns.Get("value").AsString();

          默認(rèn)情況下,模塊解析算法將僅限于 EnableModules 中指定的基本路徑,并且沒有包支持。但是,開發(fā)者可以通過兩種方式提供自己的包。 使用 JavaScript 源代碼定義模塊:

          engine.Modules.Add("user", "export const name='John';");
          
          var ns=engine.Modules.Import("user");
          
          var name=ns.Get("name").AsString();

          或者使用模塊構(gòu)建器定義模塊,其允許從 .NET 導(dǎo)出 CLR 類和值:

          // Create the module 'lib' with the class MyClass and the variable version
          engine.Modules.Add("lib", builder=> builder
              .ExportType<MyClass>()
              .ExportValue("version", 15)
          );
          
          // Create a user-defined module and do something with 'lib'
          engine.Modules.Add("custom", @"
              import {MyClass, version} from 'lib';
              const x=new MyClass();
              export const result as x.doSomething();
          ");
          
          // Import the user-defined module; this will execute the import chain
          var ns=engine.Modules.Import("custom");
          
          // The result contains "live" bindings to the module
          var id=ns.Get("result").AsInteger();

          3.Jint 的安全性

          以下功能為開發(fā)者提供了一個(gè)安全的沙盒環(huán)境來運(yùn)行用戶腳本:

          • 定義內(nèi)存限制,以防止分配耗盡內(nèi)存。
          • 啟用 / 禁用 BCL 的使用以防止腳本調(diào)用 .NET 代碼。
          • 限制語句數(shù)量以防止無限循環(huán)。
          • 限制調(diào)用深度以防止深度遞歸調(diào)用。
          • 定義超時(shí),以防止腳本花費(fèi)太長時(shí)間才能完成。

          4.本文總結(jié)

          本文主要和大家介紹 Jint ,其是 .NET 的 Javascript 解釋器,可以在任何現(xiàn)代 .NET 平臺上運(yùn)行,支持 .NET Standard 2.0 和 .NET 4.6.2 目標(biāo)(及更高版本)。因?yàn)槠鶈栴},關(guān)于 Jint 主題只是做了一個(gè)簡短的介紹,但是文末的參考資料提供了大量優(yōu)秀文檔以供學(xué)習(xí),如果有興趣可以自行閱讀。如果大家有什么疑問歡迎在評論區(qū)留言。

          參考資料

          https://github.com/sebastienros/jint

          https://blog.devgenius.io/a-javascript-rules-engine-in-net-6-fb092cdc44c

          https://github.com/topics/jint


          主站蜘蛛池模板: 无码人妻AV免费一区二区三区| 亚洲av无码一区二区三区在线播放| 无码少妇一区二区性色AV| 日韩精品一区二区三区四区| 无码少妇A片一区二区三区| 国产AV国片精品一区二区| 国精品无码一区二区三区在线蜜臀| 国产精品亚洲不卡一区二区三区 | 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产91大片精品一区在线观看| 免费一本色道久久一区| 久久91精品国产一区二区| 久久精品免费一区二区喷潮| 精品无码成人片一区二区98| 久久国产精品无码一区二区三区| 欧洲精品无码一区二区三区在线播放| 日韩精品无码人妻一区二区三区| 亚洲一区二区免费视频| 岛国无码av不卡一区二区| 一区二区三区四区精品| 精品一区二区三区免费观看| 又紧又大又爽精品一区二区| 日本精品视频一区二区三区| 日韩精品国产一区| 海角国精产品一区一区三区糖心| 国产免费一区二区三区VR| 国产日产久久高清欧美一区| 国产AV一区二区三区传媒| 中文字幕一区二区三| 99久久精品国产免看国产一区| 色婷婷AV一区二区三区浪潮| 国产亚洲一区二区手机在线观看 | 久久99精品免费一区二区| 国产精品亚洲产品一区二区三区| 一区二区三区91| 久久99精品国产一区二区三区| 一区二区三区观看免费中文视频在线播放 | 视频一区二区三区免费观看| 日韩精品一区二区三区中文字幕| 内射白浆一区二区在线观看| 国模大尺度视频一区二区|