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

能否在解决方案级别而非各项目单独添加BannedSymbols.txt?

解决方案级统一配置BannedApiAnalyzers的实现方法

完全不用挨个项目手动加包改配置,有两种可直接落地的方案,适配.NET Framework 4.x传统项目结构,哪怕解决方案有上百个项目也能一次配置全局生效。

方案1:使用MSBuild原生Directory.Build.props全局导入(推荐,适配VS2017及以上版本)

这是MSBuild内置的原生机制,会自动把根目录配置文件的规则应用到所有子目录下的C#项目,没有额外侵入性。
操作步骤:

  • 在.sln解决方案文件所在的根目录,新建名为Directory.Build.props的XML文件
  • 文件里统一写好分析器引用、规则集配置、禁用API清单路径,所有项目会自动继承这些配置,不用单独修改每个.csproj
  • 把共用的规则集文件.ruleset、禁用API清单BannedSymbols.txt都放在解决方案根目录,后续只需要维护这一份文件就行

配置示例:

<Project>
  <PropertyGroup>
    <!-- 开启编译、实时编辑阶段的分析器执行 -->
    <RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
    <RunAnalyzersDuringLiveAnalysis>true</RunAnalyzersDuringLiveAnalysis>
    <!-- 全局引用根目录下的统一规则集 -->
    <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)GlobalBannedRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <ItemGroup>
    <!-- 全局引入BannedApiAnalyzers包,所有项目自动加载,不用逐项目装NuGet -->
    <PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="3.3.4" PrivateAssets="all" />
    <!-- 全局引用统一的禁用API清单文件 -->
    <AdditionalFiles Include="$(MSBuildThisFileDirectory)BannedSymbols.txt" Link="BannedSymbols.txt" />
  </ItemGroup>
</Project>

注意:如果是用VS2015及更早版本的传统.NET Framework项目,不支持自动识别Directory.Build.props,直接用方案2即可。

方案2:自定义全局导入目标文件(适配老版本开发环境)

如果开发环境版本太老不支持自动读取Directory.Build.props,可以用自定义Props+全局Import的方式实现:

  • 在解决方案根目录新建build文件夹,放入写好统一配置的GlobalAnalyzerConfig.props文件,配置内容和方案1的示例一致
  • 配置MSBuild全局Import规则,在机器级MSBuild配置文件里加一行导入语句,指向你写好的全局配置文件,之后本机加载的所有C#项目都会自动应用配置
  • 如果不想改机器级配置,也可以把这些配置打包成内部自用的NuGet包,将BannedApiAnalyzers设为包依赖,把规则文件、禁用API清单都打包进NuGet,再配置解决方案的包管理规则,让所有项目默认引用这个内部包,后续新增项目也会自动带上分析器配置。

配置验证

配完不用重启VS,等项目加载完成后,随便找个项目写入你在BannedSymbols.txt里标记为禁用的API,要是能正常弹出分析器警告,就说明全局配置生效了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:21:18