【问题标题】:How can I mark a type or member obsolete in an assembly that I do not control?如何在我无法控制的程序集中将类型或成员标记为过时?
【发布时间】:2018-08-16 22:55:57
【问题描述】:

示例:我的同事应该不再使用Microsoft.VisualBasic.Collection,我希望构建过程应该将它们指向替换类型。这听起来像是ObsoleteAttribute 的情况,只是我无法在Microsoft.VisualBasic.Collection 中设置属性。有没有办法实现这样的事情(淘汰/禁止某些项目的框架类型或成员)而不诉诸丑陋的黑客。

如果没有,有什么技巧?

更新:Visual Studio 2017 CE

【问题讨论】:

  • 看看代码分析器:github.com/dotnet/roslyn/wiki/…
  • 是的,我见过他们。但是对于已经存在的东西(贬低一种类型),它看起来需要做很多工作。
  • ...但是 AFAIK 这是在不破坏框架程序集的情况下做到这一点的方法,因为您不能“从外部添加属性”。仅添加属性的“包装器类型”在您的情况下也无济于事,因为您的同事不会使用包装器类型。而且您应该能够使用上面链接中的大部分样板代码,并且只实现实际的“类型检查和警告”,这应该将工作量保持在最低限度。将其视为一个很好的编码练习来学习新东西;-)...(如果您实施它,请与我们分享一个可行的解决方案)
  • 你也可以使用已经替代FxCop的代码分析工具:docs.microsoft.com/en-gb/visualstudio/code-quality/…
  • “我希望构建过程应该将它们指向替换类型。” - 这是绝对要求吗?如果没有,我可以发布一个 hack 解决方案以使构建失败。

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


【解决方案1】:

ObsoleteAttribute 不是这种情况 - 因为这意味着 Microsoft 打算删除此类。

正如@ChrFin 建议的那样,解决方案是使用分析器(又名 linter)来强制执行编码标准,而不是尝试破解您不拥有的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2013-01-02
    • 1970-01-01
    • 2015-09-27
    • 2010-12-18
    相关资源
    最近更新 更多