.NET 7 Preview 2 已,第二個預覽版包括對 RegEx 源生成器的增強、將 NativeAOT 從實驗狀態轉移到執行時的進展,以及對「dotnet new」CLI SDK 的一系列重大改進。
在此下載適用於 Windows、macOS 和 Linux 的
引入新的正規表示式源生成器
新的正規表示式源生成器()在不增加啟動成本的情況下,為編譯帶來了效能好處,還提供了良好的偵錯體驗。
要開始使用新的正規表示式源生成器,只需將包含型別轉換為分部(partial
)型別,並使用 RegexGenerator
屬性宣告一個新的分部方法。該方法將返回優化的 Regex 物件,源生成器將自動填充該方法的實現,並在更改模式或傳遞其他選項時自動更新。下面是一個例子:
之前:
public class Foo
{
public Regex regex = new Regex(@"abc|def", RegexOptions.IgnoreCase);
public bool Bar(string input)
{
bool isMatch = regex.IsMatch(input);
// ..
}
}
現在:
public partial class Foo // <-- Make the class a partial class
{
[RegexGenerator(@"abc|def", RegexOptions.IgnoreCase)] // <-- Add the RegexGenerator attribute and pass in your pattern and options
public static partial Regex MyRegex(); // <-- Declare the partial method, which will be implemented by the source generator
public bool Bar(string input)
{
bool isMatch = MyRegex().IsMatch(input); // <-- Use the generated engine by invoking the partial method.
// ..
}
}
NativeAOT 更新
該版本將 NativeAOT 從實驗性的 中移出並進入穩定的執行時庫 repo,但尚未在 dotnet SDK 中新增足夠的支援,以使用 NativeAOT 釋出專案。
SDK 改進
-
新的 CLI 解析器 + 索引標籤完成
.NET 新命令為許多子命令提供了更加一致和直觀的介面,更新了大量對模板選項和引數的 TAB 補全的支援,在使用者輸入有效引數和選項時提供快速反饋。以下是新的幫助輸出範例:
❯ dotnet new --help
Description:
Template Instantiation Commands for .NET CLI.
Usage:
dotnet new [<template-short-name> [<template-args>...]] [options]
dotnet new [command] [options]
Arguments:
<template-short-name> A short name of the template to create.
<template-args> Template specific options to use.
Options:
-?, -h, --help Show command line help.
Commands:
install <package> Installs a template package.
uninstall <package> Uninstalls a template package.
update Checks the currently installed template packages for update, and install the updates.
search <template-name> Searches for the templates on NuGet.org.
list <template-name> Lists templates containing the specified template name. If no name is specified, lists all templates.
新命令名稱
幫助輸出中的所有命令不再具有 -- 字首,更符合使用者對 CLI 應用程式中子命令的期望。 舊版本(--install 等)仍可用於防止破壞使用者指令碼,將來會在這些命令中新增過時警告以鼓勵遷移。
Tab 補全
dotnet CLI 在 PowerShell、bash、zsh 和 fish 等流行的 shell 上支援 tab 補全已經有一段時間。 然而,實現有意義的補全取決於單獨的 dotnet 命令。 對於 .NET 7,新命令學習瞭如何提供 Tab 補全:
- 可用的模板名稱(在 dotnet new <template-short-name> 中)
❯ dotnet new angular
angular grpc razor viewstart worker -h
blazorserver mstest razorclasslib web wpf /?
blazorwasm mvc razorcomponent webapi wpfcustomcontrollib /h
classlib nugetconfig react webapp wpflib install
console nunit reactredux webconfig wpfusercontrollib list
editorconfig nunit-test sln winforms xunit search
gitignore page tool-manifest winformscontrollib --help uninstall
globaljson proto viewimports winformslib -? update
- 模板選項(Web 模板中的模板選項列表)
dotnet new web --dry-run
--dry-run --language --output -lang
--exclude-launch-settings --name --type -n
--force --no-https -? -o
--framework --no-restore -f /?
--help --no-update-check -h /h
- 模板選項的允許值(選擇模板引數上的選擇值)
dotnet new blazorserver --auth Individual
Individual IndividualB2C MultiOrg None SingleOrg Windows
該預覽版本還有大量其他更新專案,詳情請檢視。