dotnet-repl 0.1.216
dotnet tool install --global dotnet-repl --version 0.1.216
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local dotnet-repl --version 0.1.216
#tool dotnet:?package=dotnet-repl&version=0.1.216
nuke :add-package dotnet-repl --version 0.1.216
dotnet-repl
本项目是使用.NET Interactive / 多语言笔记本 和 Spectre.Console 进行实验,以在命令行上创建一个多语言 .NET REPL。
这是一个个人项目。希望您喜欢它并发现它有用。欢迎贡献。
安装
要安装 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
可以是ipynb
或trx
。 ipynb
是默认值,会将从运行中捕捉到的输出写入一个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 已计算。 |
此包没有依赖。
版本 | 下载 | 最后更新 |
---|---|---|
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 |