一种更简单的方式运行 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
一种更简单的方式运行 C# 代码,简化 C# 开发体验!的更多相关文章
- [C#] 用一种更优美的方式来替换掉又多又长的switch-case代码段
switch-case语句是我们编码过程中常用的一种分支语句.然而正所谓成也萧何败萧何,每当我们向一个已经拥有了成百上千行的switch-case代码段中添加新的case分支的时候,我们是否有过为代码 ...
- react-native-pg-style使用方法(以最简单的方式编写样式代码,抛弃react-native标准的样式创建方式.)
react-native-pg-style 以最简单的方式编写样式代码,抛弃react-native标准的样式创建方式. 看大家写的源码中都是按照react-native标准的样式创建方式来写样式代码 ...
- 深入浅出的webpack4构建工具---比mock模拟数据更简单的方式(二十一)
如果想要了解mock模拟数据的话,请看这篇文章(https://www.cnblogs.com/tugenhua0707/p/9813122.html) 在实际应用场景中,总感觉mock数据比较麻烦, ...
- [1.6W字] 浏览器跨域请求限制的详细原理分析&寻找一种最简单的方式实现XHR跨域(9种方法, 附大招可以纯前端实现跨域!)
Title/ 浏览器跨域(CrossOrigin)请求的原理, 以及解决方案详细指南 #flight.Archives011 序: 最近看到又有一波新的创作活动了, 官方给出的话题中有一个" ...
- 少年,是时候换种更优雅的方式部署你的php代码了
让我们来回忆下上次你是怎么发布你的代码的: 1. 先把线上的代码用ftp备份下来 2. 上传修改了的文件 3. 测试一下功能是否正常 4. 网站500了,赶紧用备份替换回去 5. 替换错了/替换漏了 ...
- spring 第一篇(1-1):让java开发变得更简单(下)
切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...
- Android的按钮单击事件及监听器四种常见的实现方式
第一种:匿名内部类作为事件监听器类<ignore_js_op>大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以 ...
- 让服务调用更简单 - Caller.HttpClient
前言 绝大多数项目都离不开服务调用,服务的调用方式通常是基于Http.RPC协议的调用,需要获取到对应服务的域名或者ip地址以及详细的控制器方法后才能进行调用,如果项目需要支持分布式部署,则需要借助服 ...
- java最简单的方式实现httpget和httppost请求
java实现httpget和httppost请求的方式多种多样,个人总结了一种最简单的方式,仅仅需几行代码,就能够完美的实现. 此处须要用到两个jar包,httpclient-4.3.1.jar.ht ...
- 用 Java 技术创建 RESTful Web (服务 JAX-RS:一种更为简单、可移植性更好的替代方式)
作者: Dustin Amrhein, 软件工程师, IBM Nick Gallardo, 软件工程师, IBM 出处: http://www.ibm.com/developerworks/cn/we ...
随机推荐
- python 将字典转换为列表
在实现功能时,有时候有些函数适用于非字典形式 这时候就需要把字典转换为其他形式 本例主要讲解字典到列表转换 datas=[{'1':'nihao'},{'2':'very goog'}] to_lis ...
- 【Loongson】支持AXI总线接口
概述 支持axi接口.但其实没有burst,没有cache,没有tlb,所以仿真起来全是空泡,冲突转发相关功能正确性就测不出来. 从sram改为axi:等待时间从一拍到看信号握手 主要更改/bug处: ...
- JetBrains goland、pycharm、webstorm、phpstorm 对比两文件内容是否一致
对比文件 JetBrains goland.pycharm.webstorm.phpstorm 对比两文件内容是否一致 第一种 打开文件,按住键盘上的CTRL键,然后鼠标右键,点击菜单中的" ...
- docker 版本号说明
17.03 版本以前 Docker CE 在 17.03 版本之前叫 Docker Engine, 版本说明参考这里 => Docker Engine release notes, 可以看到 D ...
- 2025年3月GESP八级真题解析
第一题--上学 题目描述 C 城可以视为由 \(n\) 个结点与 \(m\) 条边组成的无向图.这些结点依次以 \(1,2,-,n\) 标号,边依次以 \(1,2,-,m\) 标号.第 \(i\) 条 ...
- 可视化|MapBoxGL
注册Proton Mail 用户名 密码 人机验证 昵称 设置恢复方法-选择稍后再说-确定 注册MapBoxGL 填写后 Finish creating your account 一开始之前记得选择U ...
- BUUCTF---keyboard
题目 ooo yyy ii w uuu ee uuuu yyy uuuu y w uuu i i rr w i i rr rrr uuuu rrr uuuu t ii uuuu i w u rrr e ...
- 【SpringMVC】运行流程
SpringMVC 运行流程 在 Spring 的环境下使用 SpringMVC Bean 被创建两次? Spring 的 IOC 容器不应该扫描 SpringMVC 中的 bean, 对应的 Spr ...
- idea git建立分支、切换分支、合并分支
为什么要建立分支 git默认的主分支名字为master,一般团队开发时,都不会在master主分支上修改代码,而是建立新分支,测试完毕后,在将分支的代码合并到master主分支上 2.操作如下: 2. ...
- Oracle的listagg函数(多行按顺序合并字符串)(与wm_concat的区别)
场景: 使用wm_concat函数时,会发现无法对其拼接的字符串进行排序 使用listagg函数可实现按排序进行字符串拼接 select myGroup, listagg(myStr, ',') wi ...