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

如何仅在指定平台构建目标csproj?Windows下跳过非Windows项目

在Windows系统下避免构建Linux和macOS项目的几种方案

1. 给非Windows项目加构建条件(推荐)

直接修改Linux和macOS项目的.csproj文件,让它们只在对应平台下才参与构建:

  • 打开Project.Linux.csproj和Project.MacOs.csproj
  • 在根节点<Project>上添加Condition属性,限定仅在目标OS下生效:
<!-- Project.Linux.csproj -->
<Project Sdk="Microsoft.NET.Sdk" Condition="$([MSBuild]::IsOsPlatform('Linux'))">
  <!-- 项目原有内容不变 -->
</Project>

<!-- Project.MacOs.csproj -->
<Project Sdk="Microsoft.NET.Sdk" Condition="$([MSBuild]::IsOsPlatform('OSX'))">
  <!-- 项目原有内容不变 -->
</Project>

这样在Windows上构建整个解决方案时,这两个项目会被MSBuild自动忽略,完全不参与流程。

2. 在Visual Studio里手动排除构建

如果你平时用Visual Studio开发,直接在配置里关掉非Windows项目的构建开关:

  • 右键解决方案 → 选择属性
  • 进入配置属性 → 配置管理器
  • 先确认"活动解决方案平台"是你当前用的(比如x64)
  • 找到Project.Linux和Project.MacOs,取消它们对应的生成复选框
  • 点击确定保存,之后在Windows下构建就不会碰这两个项目了

3. 用dotnet命令行精准控制构建

如果习惯用命令行构建,直接指定只编译Windows项目就行:

dotnet build Project.Windows.csproj

或者构建整个解决方案时排除不需要的项目:

dotnet build --exclude Project.Linux.csproj --exclude Project.MacOs.csproj

4. 用全局配置文件统一管理

在解决方案根目录新建Directory.Build.props文件,添加全局规则,让Windows环境下自动移除对非Windows项目的引用:

<Project>
  <ItemGroup>
    <ProjectReference Remove="Project.Linux.csproj" Condition="$([MSBuild]::IsOsPlatform('Windows'))" />
    <ProjectReference Remove="Project.MacOs.csproj" Condition="$([MSBuild]::IsOsPlatform('Windows'))" />
  </ItemGroup>
</Project>

这种方式适合项目较多的场景,一次配置后所有子项目都会遵循规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:32:41