当前位置: 首页 > 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.gsyq.cn/news/1605188.html

相关文章:

  • JavaScript--错误处理
  • AI Agent开发实战:从零构建一个能自主规划任务的智能体
  • AI 学习助手:基于 HarmonyOS ArkTS 的智能学习伴侣开发实践
  • 使用visual studio和ai制作ppt
  • 关于多线程归并排序的性能瓶颈与优化方案的技术7
  • HFSS求解设置实战解析:从驱动求解到本征模求解的核心配置
  • GoChatIAI -Go语言AI应用服务平台(1)
  • IntelliJ IDEA 之工程模块管理
  • 全球高端健身房都在用什么跑步机?解析Precor必确的核心技术与产品优势
  • 电路板质量出问题,怎么查源头?全流程追溯体系给出答案
  • 服务网格——让微服务“自动驾驶“的黑科技
  • Playwright 自动化操控 X(Twitter) 发帖踩坑实录
  • 2026年适配维普降AI率软件横评:亲测8款工具,把AI率稳控在安全线内
  • SolidWorks_曲线与曲面设计19_曲面与实体混合建模
  • 3分钟快速上手:HS2-HF Patch终极安装与配置指南
  • ClickHouse:极速OLAP引擎解析
  • 2025轻松指南:零基础医疗会议转待办,包教包会避坑干货满满
  • 搞skill比搞向量库简单多了,要干的事全搞成skill就好了
  • 终极免费卡拉OK游戏指南:快速上手UltraStar Deluxe的完整教程 [特殊字符]
  • 分治策略在图像处理算法中的应用与优化的技术7
  • 变更管理化技术中的变更请求变更控制变更实施
  • 关于基于优先搜索的路径规划算法性能分析的技术7
  • 密码学h面试大法---h(自用版)更新中~(^v^)
  • (InputStream的源码、FilterInputStream源码、BufferedInputStream的源码解读前言)AtomicReferenceFieldUpdater.class和Sys
  • ingress-nginx
  • FanControl终极指南:如何在Windows上实现智能风扇控制,告别噪音烦恼
  • 在线教程丨32K上下文一次解析数十页文档,百度开源Unlimited OCR,重构长文档复杂场景
  • LPDDR5 ZQ校准实战:从背景校准到命令模式的深度解析
  • 从DCB到OSB:北斗多频多系统硬件延迟改正的演进与实践
  • 更新int count变量,fill()函数中getInIfOpen().read(buffer, pos, buffer.length - pos)这行代码的返回值为8192,