一种更简单的方式运行 C# 代码,简化 C# 开发体验!
前言
前段时间 .NET 10 Preview 4 推出了一种更简单的方式运行 C# 代码,即可以直接使用dotnet run file.cs
命令运行 C# 文件。这意味着我们不再需要创建项目文件或搭建整个应用程序框架,就能够快速运行脚本、测试代码片段或验证想法。
dotnet run file.cs的作用
dotnet run file.cs
你可以直接运行一个独立的 C# file.cs
文件,就像使用 Python 或 JavaScript 等脚本语言一样。这一改进显著降低了尝试 C# 的门槛,使得 C# 语言在教学演示、快速原型开发或自动化脚本场景中都更具吸引力。
开发环境安装
目前该功能还处于预发布状态,使用之前需要先安装10.0.100-preview.4
SDK。
- https://dotnet.microsoft.com/zh-cn/download/dotnet/10.0
VS Code 中创建 C# 文件并直接运行
接下来我们直接在 VS Code 中创建一个独立的 helloWorld.cs 文件,然后直接在 cmd 命令行工具中使用 dotnet run 运行:
使用 #:package 引用 NuGet 包
我们可以直接在 helloWorld.cs
文件中使用 #:package
指令添加 NuGet
包引用,接下来我们来引用 Newtonsoft.Json
来进行对象的序列化和反序列:
#:package Newtonsoft.Json@13.0.3
using Newtonsoft.Json;
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public DateTime ReleaseDate { get; set; }
}
class Program
{
static void Main()
{
// 序列化示例
var product = new Product
{
Name = "笔记本",
Price = 9999.99m,
ReleaseDate = DateTime.Now
};
string json = JsonConvert.SerializeObject(product, Formatting.Indented);
Console.WriteLine("序列化结果:");
Console.WriteLine(json);
// 反序列化示例
string jsonInput = @"{
""Name"": ""华为手机"",
""Price"": 3899.00,
""ReleaseDate"": ""2025-06-04T00:00:00""
}";
Console.WriteLine("\n\r");
var newProduct = JsonConvert.DeserializeObject<Product>(jsonInput);
Console.WriteLine("反序列化结果:");
Console.WriteLine($"名称:{newProduct.Name}");
Console.WriteLine($"价格:{newProduct.Price:C}");
Console.WriteLine($"发布日期:{newProduct.ReleaseDate:yyyy-MM-dd}");
}
}
使用 #:sdk 指令指定 SDK
默认情况下,基于文件的程序使用 Microsoft.NET.Sdk
SDK。如果您正在构建类似 Web API 的东西,可以使用 #:sdk
指令更改 SDK:
#:sdk Microsoft.NET.Sdk.Web
使用 #:property 设置 MSBuild 属性
可以使用 #:property
配置其他构建属性,例如:
#:property LangVersion preview
参考文章
- https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app
- https://github.com/dotnet/sdk/blob/main/documentation/general/dotnet-run-file.md
作者名称:追逐时光者
作者简介:一个热爱编程、善于分享、喜欢学习、探索、尝试新事物和新技术的全栈软件工程师。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如果该篇文章对您有帮助的话,可以点一下右下角的【♥推荐♥】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确的地方,欢迎指正或补充,不胜感激。