制作第三方方法[已淘汰]

时间:2016-01-27 15:25:18

标签: c# .net visual-studio deprecated obsolete

如果我想将 my 代码中的方法声明为已弃用/已废弃,我可以向其添加[Obsolete]属性,并使编译器在发出警告(或错误)时发出警告(或错误)使用方法。

是否可以为第三方方法(例如System.Console.WriteLine)实现类似的效果?显然,我无法添加属性,因为我不控制代码。但也许在.NET或Visual Studio中还有其他一些技巧可用吗?

我最好寻找一个“开箱即用”的解决方案,不需要编写我自己的后期构建脚本来手动解析代码。

3 个答案:

答案 0 :(得分:5)

使用Visual Studio 2015,您可以创建实时代码分析器,可以为几乎任何事情提供自定义设计时检查。有一个很好的教程here。这些通常作为解决方案的一部分存在,因此无论在何处编译,它们都将“跟随它”。

代码分析器可以引发编译时错误或警告,甚至可以提供UI来自动纠正问题。它们可能非常强大,但根据您的需要编写其中一个可能相当复杂。

以前版本的Visual Studio(2010+)存在similar feature。它没有很好地集成,但可能适合你。

答案 1 :(得分:3)

您可以通过在ReSharper中创建自定义代码检查规则来实现此目的。

转到ReSharper /选项/代码检查/自定义模式/添加模式,编写与已弃用的方法调用匹配的模式,并选择检查严重性,例如"建议"或"警告"。您还可以编写可以通过快速修复应用的替换模式。

示例

Example of one custom pattern

在此示例中,System.Console被滥用于日志记录,应由适当的log4net调用替换。

答案 2 :(得分:1)

ReSharper用户的另一种选择:ExternalAnnotations

以下是为Selenium的WebDriver.dll添加注释的示例:

  1. 在目标项目的ExternalAnnotations旁边创建*.csproj文件夹。
  2. 在文件夹中创建WebDriver.xml
    <?xml version="1.0" encoding="utf-8" ?> 
    <assembly name="WebDriver">
      <member name="M:OpenQA.Selenium.INavigation.GoToUrl(System.String)">
        <attribute ctor="M:System.ObsoleteAttribute.#ctor(System.String,System.Boolean)">
          <argument>Use different overload of this method.</argument>
          <argument>true</argument>
        </attribute>
      </member>
    
  3. 重新加载解决方案。