安装 .NET 9 SDK
第一步,先搭建好开发环境。请前往 [dot.net/download](https://dot.net/download) 官方页面,选择对应系统的 SDK 版本进行下载与安装。安装完成后,在终端执行 `dotnet --info` 或 `dotnet --version`,若能正常显示版本号,即表明环境配置成功。安装 VS Code
编辑器方面,推荐使用轻量且高效的 VS Code。同样,前往 [code.visualstudio.com/download](https://code.visualstudio.com/download) 下载安装包,按默认设置完成安装即可。安装 VS Code 插件
编辑器就绪后,还需安装两个关键扩展: 1. **C# 相关插件**:这是编写 .NET 代码的基础支持。
C# Plugins
polyglot
Polyglot Notebooks 使用教学
插件安装完毕后,就可以创建你的第一个 Notebook 了。下面梳理几个常用操作,带你快速掌握。创建笔记
有两种常用创建方式: * **快捷键**:按下 `Ctrl/Cmd + Shift + P` 调出命令面板,输入并选择 `Polyglot Notebook: Create new blank notebook`。然后根据提示选择文件后缀(`.dib` 或 `.ipynb`)及编程语言(如 C#),即可创建成功。 * **直接新建文件**:更直接的方法是在项目文件夹中新建一个文件,将后缀改为 `.dib` 或 `.ipynb`,然后在文件右上角点击 `Select Kernel`,选择 `.NET Interactive` 内核即可。 > 关于文件格式,说明一下:`.ipynb` 是 Jupyter 标准格式,会保存每次运行的结果,因此文件体积较大。而 `.dib` 是 Polyglot Notebooks 引入的新格式,仅存储代码和文档,不保留输出结果,更适合用 Git 进行版本管理,推荐使用。安装 Nuget 包
在 Notebook 中安装第三方库,无需使用传统的 `dotnet add package` 命令,而是通过特殊指令完成。 * **引用 Nuget 包**:使用 `#r "nuget:<包名>[,<版本号>]"` 命令。版本号为可选项,若不指定则默认安装最新稳定版。 * `#r "nuget: Microsoft.SemanticKernel"` // 安装最新正式版 * `#r "nuget: Microsoft.SemanticKernel, *-*"` // 安装最新预览版 * `#r "nuget: Microsoft.SemanticKernel, 1.11.1"` // 安装指定版本 * **指定 Nuget 源**:若需从自定义源拉取包,可使用 `#i "nuget: {源地址}"` 指定。 以下是实际操作示例,安装后会自动显示已安装的包信息:// 安装最新Semantic Kernel正式包
#r "nuget: Microsoft.SemanticKernel"
Installed Packages
Microsoft.SemanticKernel, 1.40.1
// 安装指定版本的OpenAI Connectors 正式包
#r "nuget: Microsoft.SemanticKernel.Connectors.OpenAI, 1.40.1"
Installed Packages
microsoft.semantickernel.connectors.openai, 1.40.1
// 安装最新的Plugins预览包
#r "nuget: Microsoft.SemanticKernel.Plugins.Core, *-*"
Installed Packages
Microsoft.SemanticKernel.Plugins.Core, 1.40.1-alpha
定义类
在 Notebook 中,你可以像在普通 C# 文件中一样定义类并直接使用。// 定义一个Person类
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
override public string ToString()
{
return $"{FirstName} {LastName} is {Age} years old.";
}
}
var person = new Person
{
FirstName = "John",
LastName = "Doe",
Age = 25
};
Console.WriteLine(person);
person.Display();
引入外部类文件
将通用辅助类放到单独的 `.cs` 文件中,再通过 `#!import` 指令导入 Notebook,能让主笔记更简洁。例如,创建一个 `Config` 文件夹,并在其中放置 `EnumHelper.cs` 文件。// Config/EnumHelper.cs
using System.ComponentModel;
public class EnumHelper
{
public static string GetDescription(Enum value)
{
var field = value.GetType().GetField(value.ToString());
var attributes = (DescriptionAttribute[])field.GetCustomAttributes(typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? attributes[0].Description : value.ToString();
}
}
然后在 Notebook 中导入并调用:
// 导入外部文件
#!import Config/EnumHelper.cs
enum DayOfWeek
{
[Description("星期一")]
Monday = 1,
[Description("星期二")]
Tuesday = 2,
[Description("星期三")]
Wednesday = 3,
[Description("星期四")]
Thursday = 4,
[Description("星期五")]
Friday = 5,
[Description("星期六")]
Saturday = 6,
[Description("星期日")]
Sunday = 7
}
var desc = EnumHelper.GetDescription(DayOfWeek.Monday);
desc.Display();
星期一
禁用 Warning
有时为了试用预览版库(例如 Semantic Kernel 的实验性功能),会遇到编译器警告。可以使用 `#pragma` 指令在代码块局部屏蔽这些警告。using Microsoft.SemanticKernel.Plugins.Core;
#pragma warning disable SKEXP0050
typeof(MathPlugin).Display();
#pragma warning restore SKEXP0050
交互式输入
最后,一个非常实用的功能:在 Notebook 中实现交互式输入,等待用户键入信息。这在演示或需要动态参数的场景中格外有用。//交互式输入:获取用户输入
using PolyglotKernel = Microsoft.DotNet.Interactive.Kernel;
var input = await PolyglotKernel.GetInputAsync("Pick a number.");
input.Display();
var input2 = await PolyglotKernel.GetPasswordAsync("Pick a pwd.");
input2.Display();
以上就是从零搭建环境到上手 Polyglot Notebooks 的完整流程。熟练掌握这些操作后,编写 .NET 项目示例、进行技术验证的效率将显著提升。