当前位置: 首页 > news >正文

dotnet 10 run file 支持多文件

目录

Intro

Implement

References


Intro

目前 dotnet run file 还没有官方支持多文件,不过因为会遵循 build file,会使用常用的 build 文件如:

Directory.Build.props/Directory.Build.target/Directory.Build.rsp/Directory.Packages.props

所以我们可以利用这一点来自己实现一个多文件的支持,官方的支持要等到 .NET 11 来支持了,如果你真的确实有这样的需求不妨尝试一下

Implement

我们现在可以在单文件里指定 build property,不能指定 item,所以我们可以在 property 里指定要依赖的文件,然后通过自定义 build 逻辑来将属性里 import 的文件路径来转换成编译项<Compile Include="$(Import)" />

我们新建一个Directory.Build.targets来支持将属性转换成编译项来共同编译,示例如下:

<Project> <ItemGroup Condition="'$(Imports)' != ''"> <_ImportedFiles Include="$(Imports.Split(';'))" /> <Compile Include="@(_ImportedFiles)" /> </ItemGroup> </Project>

我们这里通过Imports属性转换成Compile编译项,在单文件 C# 文件(multi-file-test.cs)内容如下:

#:property Imports=TestHelper.cs using static Test.TestHelper; PrintMessage("Hello from multi-file test!");

这一文件依赖了同目录下另外一个 C# 文件TestHelper.cs定义了一个TestHelper类型,类型里定义了一个PrintMessage方法,文件内容如下:

namespace Test; public static class TestHelper { public static void PrintMessage(string message) { Console.WriteLine(message); } }

此时我们来执行下dotnet multi-file-test.cs来测试一下

`multi-file-test`

可以看到成功编译并且成功打印出了信息

那会不会影响其他的文件呢,其实没影响的,因为其他文件没有设置Imports也不会新增编译项,比如说我们同一目录下还有一个之前测试的hello.cs, 文件内容如下:

#!/usr/bin/env dotnet Console.WriteLine("Hello .NET 10!");

我们执行下dotnet hello.cs可以看到不会有什么影响的

`dotnet hello.cs`

有需要的朋友可以自己尝试一下哈

References

  • • https://github.com/WeihanLi/SamplesInPractice/tree/main/net10sample/file-programs

引入地址

http://www.jsqmd.com/news/1093230/

相关文章:

  • JavaScript--错误处理
  • OpenClaw(龙虾)2026 最新安装部署终极指南
  • xref_data_to_array
  • CSDN博客-第1天-单神经元反向传播
  • 计算机二级基础知识-计算机体系结构
  • 中小微企业建站首选!PageAdmin CMS,零代码搞定官网运维
  • chunk重叠overlap设多少:切断上下文的坑
  • 支持多端生成的AI开发软件怎么选?功能对比指南
  • AI编程新范式:Skills技能库如何提升Claude、Cursor代码生成质量
  • AI Agent开发实战:从零构建一个能自主规划任务的智能体
  • Python学习笔记·第24天:Pandas数据清洗——缺失值、重复值与透视表实战
  • 使用visual studio和ai制作ppt
  • AI 学习助手:基于 HarmonyOS ArkTS 的智能学习伴侣开发实践
  • 第一批被龙虾气到的人出现了
  • Vue3 项目从开发到上线:环境变量、打包优化与 Nginx 部署全流程
  • 相处的艺术:尊重与边界
  • 企业知识图谱的拐点: 当本体工程遇上 LLM 与 MCP
  • Spring Boot 自定义 Starter 机制
  • GPT-5.6 Sol预览解读:max推理、ultra多Agent与分层安全栈
  • 剑指offer-79、最⻓不含重复字符的
  • Codex Linux 教程:从安装配置到卸载清理全流程指南
  • 基于Anthropic-Cybersecurity-Skills构建网络安全AI智能体实战指南
  • FontForge字体设计完全指南:从入门到精通掌握专业字体编辑
  • GPT-5.6系列模型发布遇阻:OpenAI面临多国监管审批,Claude Fable 5重返引发全球讨论
  • Vibe Coding 实战复盘:一个人 + AI,从零打造会聊天的个人主页
  • 关于多线程归并排序的性能瓶颈与优化方案的技术7
  • HFSS求解设置实战解析:从驱动求解到本征模求解的核心配置
  • 数据中心电力模块的发展趋势对数据中心建设有哪些影响?
  • 目前自动评价系统问题---------会卡在一些异常的地方
  • XCP协议:从总线标定到汽车ECU数据交互的核心