一種更簡(jiǎn)單的方式運(yùn)行 C# 代碼,簡(jiǎn)化 C# 開(kāi)發(fā)體驗(yàn)!
前段時(shí)間 .NET 10 Preview 4 推出了一種更簡(jiǎn)單的方式運(yùn)行 C# 代碼,即可以直接使用dotnet run file.cs 命令運(yùn)行 C# 文件。這意味著我們不再需要?jiǎng)?chuàng)建項(xiàng)目文件或搭建整個(gè)應(yīng)用程序框架,就能夠快速運(yùn)行腳本、測(cè)試代碼片段或驗(yàn)證想法。
dotnet run file.cs的作用
dotnet run file.cs你可以直接運(yùn)行一個(gè)獨(dú)立的 C# file.cs 文件,就像使用 Python 或 JavaScript 等腳本語(yǔ)言一樣。這一改進(jìn)顯著降低了嘗試 C# 的門(mén)檻,使得 C# 語(yǔ)言在教學(xué)演示、快速原型開(kāi)發(fā)或自動(dòng)化腳本場(chǎng)景中都更具吸引力。
開(kāi)發(fā)環(huán)境安裝
目前該功能還處于預(yù)發(fā)布狀態(tài),使用之前需要先安裝10.0.100-preview.4 SDK。
https://dotnet.microsoft.com/zh-cn/download/dotnet/10.0
VS Code 中創(chuàng)建 C# 文件并直接運(yùn)行
接下來(lái)我們直接在 VS Code 中創(chuàng)建一個(gè)獨(dú)立的 helloWorld.cs 文件,然后直接在 cmd 命令行工具中使用 dotnet run 運(yùn)行:
使用 #:package 引用 NuGet 包
我們可以直接在 helloWorld.cs 文件中使用 #:package 指令添加 NuGet 包引用,接下來(lái)我們來(lái)引用 Newtonsoft.Json 來(lái)進(jìn)行對(duì)象的序列化和反序列:
#: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("序列化結(jié)果:");
Console.WriteLine(json);
// 反序列化示例
string jsonInput = @"{
""Name"": ""華為手機(jī)"",
""Price"": 3899.00,
""ReleaseDate"": ""2025-06-04T00:00:00""
}";
Console.WriteLine("\n\r");
var newProduct = JsonConvert.DeserializeObject<Product>(jsonInput);
Console.WriteLine("反序列化結(jié)果:");
Console.WriteLine($"名稱:{newProduct.Name}");
Console.WriteLine($"價(jià)格:{newProduct.Price:C}");
Console.WriteLine($"發(fā)布日期:{newProduct.ReleaseDate:yyyy-MM-dd}");
}
}
使用 #:sdk 指令指定 SDK
默認(rèn)情況下,基于文件的程序使用 Microsoft.NET.Sdk SDK。如果您正在構(gòu)建類似 Web API 的東西,可以使用 #:sdk 指令更改 SDK:
#:sdk Microsoft.NET.Sdk.Web
使用 #:property 設(shè)置 MSBuild 屬性
可以使用 #:property 配置其他構(gòu)建屬性,例如:
#:property LangVersion preview