一种更简单的方式运行 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 ...
随机推荐
- golang结构体判断是否为空
前言 使用任何编程语言都会遇到判空的问题,那么Golang对于自定义的结构体类型如何判空呢? 其实空结构体可不是简单的与nil做比较哦.请看下面两种方法: package main import ( ...
- Java 8的新特性还不了解?快进来!
能坚持别人不能坚持的,才能拥有你想拥有的.关注 编程大道,让我们一起成长
- APEX实战第3篇:如何完善项目基础功能
上一篇<APEX实战第2篇:构建自己第一个APEX程序>虽然有了程序,但实在是太单薄! 本篇将会介绍一些数据库的基础知识,演示如何通过函数.触发器.存储过程.视图等来完善项目的一些基础功能 ...
- 新更新 Scanner键盘输入
原来我们都是将写好的代码进行打印,这是硬程序,如果我们想让电脑实时输入我们想要的值,就需要使用Scanner进行键盘录入 1.让电脑找到Scanner符咒(电脑自动) 2.召唤Scanner精灵 3. ...
- 【Git】工作流
Git 工作流 概念 在项目开发过程中使用 Git 的方式 分类 集中式工作流 像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体.所有 修改都提交到 Master 这个分支上. 这种 ...
- 一个检查左右括号是否配对的语法检查器(c语言)
目录 一.题目如下 二.解题思路 三.代码实现 四.测试结果 一.题目如下 通过键盘输入一个包括 '(' 和 ')' 的字符串string ,判断字符串是否有效.要求设计算法实现检查字符串是否有效,有 ...
- rabbitmq分布式事务
Rabbitmq解决分布式事务的原理:可靠消息最终一致性方案 需要保证以下三要素 1.确认生成者一定要将消息可靠投递到MQ[采用MQ的异步confirm消息确认机制] public interface ...
- Volatile:内存可见性
一.当写一个volatile变量时,JMM会把该线程对应的本地中的共享变量值刷新到主内存. 例子: /* * 一.volatile 关键字:当多个线程进行操作共享数据时,可以保证内存中的数据可见. * ...
- eclipse安装OpenExplorer插件--快速打开文件目录
eclipse安装OpenExplorer插件--快速打开文件目录功能: 1.下载: github: 下载地址:https://github.com/samsonw/OpenExplorer/down ...
- Sentinel源码—4.FlowSlot实现流控的原理
大纲 1.FlowSlot根据流控规则对请求进行限流 2.FlowSlot实现流控规则的快速失败效果的原理 3.FlowSlot实现流控规则中排队等待效果的原理 4.FlowSlot实现流控规则中Wa ...