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

如何在命令行使用MSBuild构建时排除解决方案中的单个项目

当然有办法啦!我给你分享两个实用的方案,都完全避开了在命令里写Exclude属性的限制:

方法1:明确指定要构建的项目目标

这是最直接的方式,不用修改任何文件,直接在命令行里精准指定你需要构建的项目及其Rebuild目标:

  1. 先确认解决方案里所有项目的准确目标名称(有时候项目的显示名称和内部目标名可能有细微差异),运行这条命令就能列出所有可构建的项目目标:
msbuild YourSolution.sln /t:?

你会看到类似这样的输出片段:

Project "YourSolution.sln" (1) is building "YourSolution.sln" (1:2) on node 1 (default targets).
Valid targets for this project:
...
ProjectA:Rebuild
ProjectB:Rebuild
ProjectC:Rebuild
...

  1. 接下来在构建命令里,用/t参数列出所有你要构建的项目的Rebuild目标,用分号分隔开:
msbuild YourSolution.sln /t:ProjectA:Rebuild;ProjectC:Rebuild /p:Configuration=Release /p:Platform=x64 /restore

这样MSBuild就只会处理你指定的项目,直接跳过你想要排除的那个。

方法2:使用解决方案过滤器文件(适合项目较多的场景)

如果你的解决方案里项目数量很多,不想在命令行里逐个列项目名,可以创建一个解决方案过滤器文件(.slnf)——这个轻量级文件只包含你要构建的项目列表,然后用MSBuild构建它就行:

  1. 手动创建一个文本文件,命名为FilteredBuild.slnf,内容如下(记得替换成你自己的解决方案路径和项目路径):
{
  "solution": {
    "path": "./YourSolution.sln",
    "projects": [
      "./ProjectA/ProjectA.csproj",
      "./ProjectC/ProjectC.csproj"
    ]
  }
}
  1. 然后用这个过滤器文件执行重建命令:
msbuild FilteredBuild.slnf /rebuild /p:Configuration=Release /p:Platform=x64

这个方法的好处是过滤器文件可以重复使用,后续构建直接调用它就行,不用每次都写一大串项目名。

小技巧

如果你担心项目名称拼写错误,还可以直接用项目文件的相对路径代替项目名称,比如:

msbuild YourSolution.sln /t:./ProjectA/ProjectA.csproj:Rebuild;./ProjectC/ProjectC.csproj:Rebuild /rebuild

这种方式更精准,尤其适合项目名称包含特殊字符的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:47:15