dotnet 10 run file 支持多文件

dotnet 10 run file 支持多文件 目录IntroImplementReferencesIntro目前 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 ImportsTestHelper.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引入地址