首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >宣布 dotnet run app.cs – 一种更简单的方式来开始使用 C# 和 .NET 10

宣布 dotnet run app.cs – 一种更简单的方式来开始使用 C# 和 .NET 10

作者头像
郑子铭
发布2025-07-08 15:10:50
发布2025-07-08 15:10:50
2630
举报

宣布 dotnet run app.cs – 一种更简单的方式来开始使用 C# 和 .NET 10

Damian Edwards 首席架构师

我们非常高兴地介绍.NET 10预览版4中发布的一项新功能,它使得开始使用C#比以往任何时候都更加容易。现在您可以直接使用dotnet run app.cs运行一个C#文件。这意味着您不再需要创建项目文件或构建整个应用程序来运行快速脚本、测试代码片段或尝试新想法。它简单直观,旨在简化C#开发体验,特别是对于初学者来说# 。

什么是dotnet run app.cs

直到现在,使用dotnet CLI执行C#代码都需要一个包含.csproj文件的项目结构。借助这项称为_基于文件的应用程序_的新功能,您可以像使用Python或JavaScript这样的脚本语言一样直接运行独立的.cs文件。

这降低了尝试C#的门槛,使该语言成为学习、原型设计或自动化场景中更具吸引力的选择。

  • 快速启动,无需项目文件 – 非常适合学习、实验和小脚本。
  • 一流的CLI集成 – 不需要额外工具,没有依赖项,只需dotnet和您的.cs文件。
  • 扩展到实际应用 – 这不是单独的方言或运行时。当您的脚本成长起来后,它可以演变成使用相同语言、语法和工具的完整项目。

针对基于文件的C#应用程序的新文件级指令

在.NET 10预览版4中,基于文件的应用程序还支持一组强大的文件级指令,允许声明一些存储在基于项目的应用程序的项目文件中的重要事项,而无需离开单个.cs文件。这些指令让基于文件的应用程序更加灵活和富有表现力,同时保持与MSBuild概念的兼容性。

使用#:package引用NuGet包

您可以在.cs文件中直接使用#:package指令添加NuGet包引用:

代码语言:javascript
复制
#:package Humanizer@2.14.1

using Humanizer;

var dotNet9Released = DateTimeOffset.Parse("2024-12-03");
var since = DateTimeOffset.Now - dotNet9Released;

Console.WriteLine($"It has been {since.Humanize()} since .NET 9 was released.");

使用#:sdk指定SDK

默认情况下,基于文件的应用程序使用Microsoft.NET.Sdk SDK。如果您正在构建类似Web API的东西,可以使用#:sdk指令更改SDK:

代码语言:javascript
复制
#:sdk Microsoft.NET.Sdk.Web

这告诉工具将文件视为Web项目的一部分,启用ASP.NET Core的功能如Minimal APIs和MVC。

使用#:property设置MSBuild属性

您可以使用#:property配置额外的构建属性。例如:

代码语言:javascript
复制
#:property LangVersion preview

这让您的基于文件的应用程序可以选择加入高级语言特性和平台定位,而不需要完整的项目文件。

使用shebang行编写shell脚本

基于文件的应用程序也支持shebang行(#!),允许您编写跨平台的C# shell脚本,在类Unix系统上直接可执行。例如:

代码语言:javascript
复制
#!/usr/bin/dotnet run
Console.WriteLine("Hello from a C# script!");

您可以使文件可执行并直接运行:

代码语言:javascript
复制
chmod +x app.cs
./app.cs

这使得C#成为CLI实用程序、自动化脚本和工具的便捷选项,无需项目设置。

转换为基于项目的应用程序

当您的基于文件的应用程序变得复杂,或者您只是想要基于项目应用程序提供的额外功能时,可以将其转换为标准项目:

代码语言:javascript
复制
dotnet project convert app.cs

此命令会根据您的文件名创建一个新目录,生成一个.csproj文件,将您的代码移至Program.cs文件,并将任何#:指令翻译成MSBuild属性和引用。

示例

给定这个文件:

代码语言:javascript
复制
#:sdk Microsoft.NET.Sdk.Web
#:package Microsoft.AspNetCore.OpenApi@10.*-*

var builder = WebApplication.CreateBuilder();

builder.Services.AddOpenApi();

var app = builder.Build();

app.MapGet("/", () => "Hello, world!");
app.Run();

生成的.csproj将是:

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.*-*" />
</ItemGroup>

</Project>

这使得从单个文件到完全功能、可构建且可扩展的项目的过渡无缝进行。

现有无需项目即可运行C#的方法

这远非开发者第一次希望在没有项目的情况下运行C#。社区项目如CS-Script,dotnet-script,Cake 等早已填补了这一角色,实现了脚本工作流、REPL体验及其他C#体验。这是Scott Hanselman于2018年关于dotnet-script全局工具的博客文章。

这些工具仍然有价值,值得一看,尤其是在更高级的脚本场景中。然而,有了这种新的内置支持,开发者可以立即开始:无需额外安装、配置或发现步骤。

同样重要的是:这不是一种单独的 C# 方言或模式。我们有意将此功能作为从常规C#基于项目应用程序自然早期“点击停止”的一部分。您正在编写相同的C#代码,使用相同的编译器,当您的代码成长起来后,如果愿意的话,它可以自然地过渡到基于项目的应用程序。

开始

1. 安装.NET 10预览版4 从dotnet.microsoft.com下载并安装它。

2. 安装Visual Studio Code(推荐) 如果您使用的是Visual Studio Code,请安装C# Dev Kit,然后按照以下说明更新C#扩展以支持基于文件的应用程序:

要启用对基于文件的应用程序和指令的支持,您需要最新预发行版本的 C# 扩展:

  • • 打开扩展侧边栏(Ctrl+Shift+X
  • • 搜索“C#”
  • • 在扩展页面上,点击切换到预发行版本按钮
  • • 确保安装的版本至少是2.79.8

3. 编写代码 创建一个名为hello.cs的文件:

代码语言:javascript
复制
Console.WriteLine("Hello, world!");

4. 运行它! 在同一文件夹中打开终端并运行:

代码语言:javascript
复制
dotnet run hello.cs

5. 转换为项目 要将文件转换为项目,请运行:

代码语言:javascript
复制
dotnet project convert hello.cs

了解更多

观看此功能在微软Build大会演示环节中的实际操作:无需项目,只需C#与dotnet run app.cs

您将看到如何轻松开始、探索指令以及在准备就绪时转换为完整项目有多么容易。

未来之路

通过dotnet run app.cs,我们让C#变得更加易于接近,同时保留了.NET生态系统的所有强大功能和深度。无论您是在制作原型、教学还是构建生产系统,这项新功能都能帮助您更快地从想法变为执行。

在即将到来的.NET 10预览版中,我们旨在改进在VS Code中处理基于文件的应用程序的体验,增强新文件级指令的IntelliSense,提高性能,并支持调试。在命令行方面,我们正在探索对多个文件的基于文件的应用程序的支持,以及使运行基于文件的应用程序更快的方法。

今天就试一试,并将您的反馈发送到GitHub,随着我们在.NET 10及以后继续塑造这一体验。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 宣布 dotnet run app.cs – 一种更简单的方式来开始使用 C# 和 .NET 10
    • 什么是dotnet run app.cs?
    • 针对基于文件的C#应用程序的新文件级指令
      • 使用#:package引用NuGet包
      • 使用#:sdk指定SDK
      • 使用#:property设置MSBuild属性
      • 使用shebang行编写shell脚本
    • 转换为基于项目的应用程序
      • 示例
    • 现有无需项目即可运行C#的方法
    • 开始
    • 了解更多
    • 未来之路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档