【发布时间】:2011-05-27 09:02:59
【问题描述】:
当用户编译引用我们计划删除的程序集的代码时,我想生成一条警告消息。此程序集的内容已与另一个程序集合并,我想鼓励用户停止引用旧程序集。
不幸的是,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 来破坏他们的构建。
听起来我应该使用类型转发器来确保已经针对这些程序集构建的程序继续工作而无需重新编译,但我不想将存根类留在 Assembly1 中只是为了将程序集标记为过时.
【问题讨论】:
-
“我不想将存根类留在 Assembly1 中,只是为了将程序集标记为过时。”为什么不呢?
-
在同时引用 Assembly1 和 Assembly2 的项目中会导致名称冲突,对吧?由于类已被移动而没有更改其名称。
-
TypeForwardedTo是程序集属性,而不是类属性。因此,您无需在 Assembly1 中留下存根类。 -
对,但我需要将这些类标记为已过时,以便为用户生成编译器警告。