dotnet-repl 0.1.216

dotnet tool install --global dotnet-repl --version 0.1.216                
此包包含一个您可以从 shell/命令行调用的.NET 工具
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local dotnet-repl --version 0.1.216                
此包包含一个您可以从 shell/命令行调用的.NET 工具
#tool dotnet:?package=dotnet-repl&version=0.1.216                
nuke :add-package dotnet-repl --version 0.1.216                

dotnet-repl

REPL preview in C# and F#

本项目是使用.NET Interactive / 多语言笔记本Spectre.Console 进行实验,以在命令行上创建一个多语言 .NET REPL。

这是一个个人项目。希望您喜欢它并发现它有用。欢迎贡献。

NuGet Status Build status

安装

要安装 dotnet-repl,请在您的终端中运行以下命令

> dotnet tool install -g dotnet-repl

功能

以下是您可以做到的

使用 C# 编码

您可以在多种不同的语言模式中启动 dotnet-repl。默认是 C#,所以以下两个命令是等效的

> dotnet repl --default-kernel csharp
> dotnet repl

一旦 REPL 启动,您可以在提示符处输入 C# 代码并通过按 Enter 键运行它。(注意,这是 C# 脚本 方言,也用于 Visual Studio 的 C# Interactive 窗口和 .NET Interactive 笔记本。)

<img src="https://user-images.githubusercontent.com/547415/121456759-68a85000-c95b-11eb-83a0-3b0010067e7b.png" width="60%" />

C# 脚本的一个显著特性是能够使用“尾随表达式”为代码提交指定返回值

<img src="https://user-images.githubusercontent.com/547415/121977410-d0cfab00-cd3a-11eb-84a0-ab4f8889c9c7.png" width="60%" />

使用 F# 编码

您还可以使用 --default-kernel 启动 F# 模式的 REPL 或将环境变量 DOTNET_REPL_DEFAULT_KERNEL 设置为 fsharp

> dotnet repl --default-kernel fsharp
# DOTNET_REPL_DEFAULT_KERNEL=fsharp
> dotnet repl

<img src="https://user-images.githubusercontent.com/547415/121456837-8d9cc300-c95b-11eb-9a91-1daae2dbc655.png" width="60%" />

📝 提交多行条目

通过按 Shift-Enter,您可以在运行代码之前之前使用 Enter 添加多行。这可以用于创建包括声明类在内的多行代码结构。

<img src="https://user-images.githubusercontent.com/547415/121463971-dc505a00-c967-11eb-8a57-b976cc6b311b.png" width="60%" />

多行输入的一个方便之处是,你不再需要使用F#交互式规范在行尾使用;;来指示积累的提交应运行。按下Enter会提交代码,如果你需要一次性输入多行代码,可以在提交前使用Shift-Enter来添加新行。

<img src="https://user-images.githubusercontent.com/547415/121977822-b5b16b00-cd3b-11eb-90d6-2798289a47d5.png" width="60%" />

🚥 在同一个会话中更换语言

<img src="https://user-images.githubusercontent.com/547415/121456913-ab6a2800-c95b-11eb-9a47-0f0828b2ba3b.png" width="60%" />

🎁 添加NuGet包

你可以使用#r nuget在当前会话的持续时间中安装一个包。

<img src="https://user-images.githubusercontent.com/547415/121978012-235d9700-cd3c-11eb-89d0-ba367089208c.gif" width="60%" />

🌱 使用笔记本、脚本或代码文件初始化你的REPL会话

你可以使用包含代码的文件作为REPL的初始化脚本。

> dotnet repl --run /path/to/notebook.ipynb

下列文件类型受支持

<img src="https://user-images.githubusercontent.com/547415/192895883-5e80e419-26dd-422c-b4bc-4d3533b861fb.gif" width="60%" />

🏃🏽 运行笔记本、脚本或代码文件然后退出

你可能还想要仅使用笔记本或其他包含代码的文件作为非交互式脚本。你可以通过添加--exit-after-run标志来完成此操作。只要文件扩展名表明文件是由.NET Interactive理解的语言,它将尝试运行它。

> dotnet repl --run /path/to/notebook.ipynb --exit-after-run

当前支持的文件格式

  • .ipynb:一个Jupyter笔记本,它可以包含.NET Interactive理解的多种不同语言中的代码单元格。
  • .dib:一个.NET Interactive脚本文件。
  • .cs:一个C#源代码文件。(某些语言结构,如命名空间,不支持,所以这是一个额外实验的文件。)
  • .csx:一个C#脚本文件。
  • .fs:一个F#源代码文件。
  • .fsx:一个F#脚本文件。
  • .ps1:一个PowerShell脚本。
  • .html:一个HTML文件。(它将在外部浏览器窗口中渲染。)
  • .js:一个JavaScript文件。(它将在外部浏览器窗口中渲染。)

如果笔记本的所有单元格都成功执行,则返回一个0退出代码。否则,返回2。这可以用作测试笔记本的方式。

<img width="60%" alt="image" src="https://user-images.githubusercontent.com/547415/192914782-1c977e51-1715-40ca-9466-5ccc8219c23e.png">

如果你还希望在运行时捕获笔记本的输出,可以通过指定 --output-path--output-format选项来完成。 --output-path应该是你要写入的文件名。--output-format可以是ipynbtrxipynb是默认值,会将从运行中捕捉到的输出写入一个Jupyter笔记本文件。你可以使用Visual Studio Code中的.NET Interactive Notebooks扩展或任何其他Jupyter阅读器打开此文件,并且可以在GitHub中显示。trx格式是一个.NET测试结果文件,在诸如Azure DevOps之类的CI管道中可能很有用,也可以使用Visual Studio打开或使用t-rex工具读取。

🛳️ 导入笔记本或脚本并运行它

如果REPL已经运行,你可以使用#!import魔法命令将其导入并立即运行文件。所有--run支持的文件类型都由#!import支持。

🏀 当运行笔记本或脚本时传递参数

如果一个笔记本包含带@input标记的魔法命令,那么在.NET Interactive Notebooks等笔记本编辑器中运行它们会创建一个供用户输入的提示。可以使用--input选项在命令行提供这些输入的值。

例如,假设您有一个名为 notebook.ipynb 的笔记本,其中包含以下魔幻命令

#!connect mssql --kernel-name mydatabase @input:connectionString

您可以通过命令行传入连接字符串,如下所示

> dotnet repl --run notebook.ipynb --input connectionString="Persist Security Info=False; Integrated Security=true; Initial Catalog=MyDatabase; Server=localhost"

💁‍♀️ 寻求帮助

您可以通过运行 #!help 魔幻命令来查看REPL的帮助。由于它仍在开发中,我不会在这里全部打印出来。只管试试吧。

键盘快捷键

dotnet-repl 支持许多键盘快捷键。这些将在未来演变,但到目前为止,它们是这样的

快捷键 它的作用
Enter 提交并运行当前代码
Shift+Enter 插入换行但不提交当前代码
Tab 显示下一个完成项
Shift+Tab 显示上一个完成项
Ctrl+C 退出REPL
Ctrl+Up 在后提交历史中后退(仅当前会话)
Ctrl+Down 在后提交历史中前进(仅当前会话)

🧙‍♂️ 魔幻命令

因为 dotnet-repl 是基于 .NET Interactive 构建的,它支持“魔幻命令”。您可以通过一行开始的 #! 识别一个魔幻命令。

您可以通过运行 #!help 魔幻命令来查看支持的魔幻命令列表。

产品 兼容的和额外的计算目标框架版本。
.NET net8.0 是兼容的。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard 的信息。

此包没有依赖。

版本 下载 最后更新
0.1.216 27,681 1/31/2024
0.1.208 9,318 11/8/2023
0.1.205 7,613 10/3/2023
0.1.204 13,868 6/6/2023
0.1.192 12,578 12/28/2022
0.1.187 1,082 12/24/2022
0.1.182 46,520 10/21/2022
0.1.173 1,812 9/29/2022
0.1.169 1,194 9/28/2022
0.1.166 1,202 9/28/2022
0.1.163 1,265 9/26/2022
0.1.159 1,285 9/22/2022
0.1.149 2,304 8/27/2022
0.1.146 1,473 8/25/2022
0.1.127 1,415 8/5/2022
0.1.99 751 8/2/2022
0.1.94 1,748 7/1/2022
0.1.80 797 6/25/2022
0.1.75 2,895 4/23/2022
0.1.72 2,117 2/6/2022
0.1.69 606 2/5/2022
0.1.65 1,296 11/16/2021
0.1.60 1,266 9/1/2021
0.1.55 798 8/6/2021
0.1.44 1,061 6/29/2021
0.1.41 468 6/29/2021
0.1.35 1,048 6/19/2021
0.1.30 551 6/18/2021
0.1.11 1,476 6/15/2021