asp.net 如何在.NET中将外部类型/方法标记为不推荐/禁止?

e4yzc0pl  于 2023-11-20  发布在  .NET
关注(0)|答案(2)|浏览(112)

我们尝试在构建时标记外部类型(如ConfigurationManager)的使用。
自定义代码分析字典可以帮助[1],但仅在项目中包含source的情况下。类似地,Obsolete属性适用于项目中包含的类型。
我甚至不确定代码分析规则是否能够检查方法体?[2]。
关于如何在构建时标记外部类型/方法的使用,有什么建议吗?
[1]- http://msdn.microsoft.com/en-us/library/bb514188.aspx
[2]- http://msdn.microsoft.com/en-us/library/dd172127(v=vs.90).aspx

2w3rbyxf

2w3rbyxf1#

一种方法是创建自定义FxCop规则,在代码分析阶段检查字段,如下所示:

  1. internal sealed class SampleRule : BaseIntrospectionRule
  2. {
  3. public override ProblemCollection Check(Member member)
  4. {
  5. const string typeName = "System.DateTime";
  6. var field = member as Field;
  7. if (field == null || field.Type.FullName != typeName)
  8. return null;
  9. return new ProblemCollection
  10. {
  11. new Problem(new Resolution(field.Name.Name, "Type {0} is obsolete", typeName))
  12. };
  13. }
  14. }

字符串
我建议你看看this tutorial

展开查看全部
uurity8g

uurity8g2#

对于在2023年及以后遇到这个问题的人来说,现在有一个Roslyn分析器可以解决这个问题。
请参阅Microsoft.CodeAnalysis.BannedApiAnalyzers
您需要:
1.引用分析器包(使用Directory.Build.props或自定义props文件将允许对解决方案全局执行此操作);

  1. <ItemGroup>
  2. <PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="3.3.4">
  3. <PrivateAssets>all</PrivateAssets>
  4. <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
  5. </PackageReference>
  6. </ItemGroup>

1.创建一个新的BannedSymbols.txt,并将所有禁用的符号包含其中;
1.将BannedSymbols.txt包含在与分析仪相同的项目中;

  1. <ItemGroup>
  2. <AdditionalFiles Include="$(MSBuildThisFileDirectory)/BannedSymbols.txt" />
  3. </ItemGroup>

例如,为了禁止Refit.RestService类型,您需要有T:Refit.RestService;Don't use it之类的东西,这将导致在您的IDE、. net CLI和CI中出现编译警告。
x1c 0d1x的数据

展开查看全部

相关问题