c# - 是否可以将程序集标记为已弃用?

标签 c# .net

当用户编译引用我们计划删除的程序集的代码时,我想生成一条警告消息。此程序集的内容已与另一个程序集合并,我鼓励用户停止引用旧程序集。

不幸的是,ObsoleteAttribute 似乎对程序集无效。在构建引用程序集的项目时,是否有任何其他方式导致编译器警告?

谢谢。

编辑:为了澄清,这是合并前后程序集的样子

合并前:

Assembly1:
namespace A.B.C {
    class C1
    ...
}

Assembly2:
namespace A.B.D {
    class D1
    ...
}

合并后:

Assembly1:
(empty)

Assembly2:
namespace A.B.C {
    class C1
    ...
}

namespace A.B.D {
    class D1
    ...
}

在合并之前,用户引用了 Assembly1 和 Assembly2。合并后,他们只需要引用 Assembly2,但我宁愿发出不再需要 Assembly1 的警告,也不愿通过立即删除 Assembly1 来破坏他们的构建。

听起来我应该使用类型转发器来确保已经针对这些程序集构建的程序继续工作而无需重新编译,但我不想将 stub 类留在 Assembly1 中只是为了将程序集标记为过时.

最佳答案

将类型从一个程序集移动到另一个时,正确的做法是使用 type forwarder ,而不是将旧的程序集类标记为已过时。

参见:"CLR Hoser - The Wonders of Whidbey Factoring Features – Part I: Type Forwarders" by Richard Lander (2005)

关于c# - 是否可以将程序集标记为已弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475014/

相关文章:

c# - 发出 IL 代码以加载十进制值

c# - AutoResetEvent.WaitOne() 导致死锁

c# - C#.NET内存泄漏:GC阶段1和阶段2运行时的锯齿状内存使用情况

c# - 正则表达式:为什么每个找到的项目都没有组?

c# - 正则表达式在 C# 中匹配,但在 java 中不匹配

c# - 如何访问 ItemsControl 的子项?

c# - 仅将唯一项目添加到列表

c# - 在 C# 中使用 ToolStripMenuItem 快捷方式

c# - 有人可以向我解释一下事件到底是什么以及与委托(delegate)有什么区别吗?

.net - VB.net 需要内存高效功能