You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从单个csproj生成多个.NET 6控制台可执行文件?

单个.NET 6 CSPROJ生成多个可执行文件的解决方案

方案1:MSBuild多目标批量构建(最省心)

直接修改单个主csproj,让它为每个入口文件触发独立构建,自动继承所有公共配置:

  1. 先移除csproj里默认的单个入口编译配置(比如<Compile Include="Program.cs" />)
  2. 定义所有入口文件的集合,用通配符或逐个指定都可以:
<ItemGroup>
  <!-- 匹配所有以.exe.cs结尾的文件,或者直接列出来:Entry1.cs;Entry2.cs -->
  <EntryPoint Include="**/*.exe.cs" />
</ItemGroup>
  1. 添加自定义Target,为每个入口文件单独构建:
<Target Name="BuildAllExecutables" BeforeTargets="Build">
  <MSBuild
    Projects="$(MSBuildProjectFile)"
    Targets="Build"
    Properties="
      TargetFileName=%(EntryPoint.Filename);
      CompileInclude=$(MSBuildProjectDirectory)\%(EntryPoint.Identity);
      DefaultItemExcludes=**/*;
      OutputPath=$(OutputPath)\%(EntryPoint.Filename)
    " />
</Target>
  • 每个入口文件会生成独立的exe,输出到bin/[配置]/net6.0/[入口文件名]目录下,避免覆盖
  • 所有NuGet引用、编译参数、框架版本都只需要在主csproj里改一次,全部构建自动继承

方案2:共享项目模式(低维护成本)

如果不想折腾复杂Target,用共享项目统一管理公共配置:

  1. 创建一个共享项目(.shproj),把所有公共依赖、通用代码、编译配置都放到这里
  2. 为每个入口文件创建极简csproj,只做两件事:引用共享项目、指定当前入口文件:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\SharedCode\SharedCode.shproj" />
    <Compile Include="MyAppEntry.cs" />
  </ItemGroup>
</Project>
  • 公共配置只需要在共享项目里修改,所有子csproj自动同步,每个子项目只需要几行代码,几乎不需要维护

方案3:直接调用Csc任务编译

如果想更底层控制编译过程,直接在主csproj里用Csc任务批量编译:

<!-- 列出所有入口文件 -->
<ItemGroup>
  <EntryFiles Include="Entry1.cs;Entry2.cs;Entry3.cs" />
</ItemGroup>

<Target Name="BuildMultipleExes" AfterTargets="CoreCompile">
  <Csc
    Sources="%(EntryFiles.Identity)"
    References="@(ReferencePath)" <!-- 自动复用SDK和NuGet的所有引用 -->
    OutputAssembly="$(OutputPath)\%(EntryFiles.Filename).exe"
    TargetType="Exe"
    PlatformTarget="$(PlatformTarget)"
    LangVersion="$(LangVersion)"
  />
</Target>
  • 这个方案直接复用.NET SDK自动生成的引用集合,不用手动添加CLR或NuGet引用,开箱即用

内容的提问来源于stack exchange,提问作者MarkovskI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:55:28