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