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

如何通过Directory.Build.props将分析器项目引用到除自身外所有项目

实现方案

你完全可以通过MSBuild内置属性获取当前处理的项目信息,按以下规则配置即可实现需求:

核心判断依据

MSBuild提供了内置的MSBuildProjectName属性,可以直接获取当前正在执行构建逻辑的项目名称,也就是你需要的「执行引用操作的发起项目」标识,基于这个属性做过滤即可。

具体配置示例

你只需要在Directory.Build.props中加入如下配置即可,注意把示例中的项目名、项目路径替换成你实际的对应内容:

<Project>
  <!-- 此处保留你之前已有的其他配置 -->
  
  <!-- 仅在非分析器、非分析器测试项目中引入分析器引用 -->
  <ItemGroup Condition="'$(MSBuildProjectName)' != '你的分析器项目名' And '$(MSBuildProjectName)' != '你的分析器测试项目名'">
    <ProjectReference 
      Include="相对路径到你的分析器项目文件\你的分析器项目名.csproj" 
      OutputItemType="Analyzer"
      ReferenceOutputAssembly="false" 
    />
  </ItemGroup>
</Project>

配置说明

  • OutputItemType="Analyzer":标记该引用为分析器项目,不会作为普通程序集引用被带入项目输出
  • ReferenceOutputAssembly="false":避免业务项目编译时依赖分析器的输出程序集,符合分析器的引用规范

更灵活的过滤规则

如果你不想硬编码固定的项目名,也可以约定分析器相关项目的命名规则,比如所有分析器相关项目的名称都包含Analyzers关键词,就可以用模糊匹配的条件:

<ItemGroup Condition="!$(MSBuildProjectName.Contains('Analyzers'))">
  <!-- 同上的ProjectReference配置 -->
</ItemGroup>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:45:04