Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
275 views
in Technique[技术] by (71.8m points)

c# - Is it possible to mark an assembly as deprecated?

I'd like to produce a warning message when users compile code that references an assembly we're planning on removing. The contents of this assembly have been merged with another, and I'd like to encourage users to stop referencing the old assembly.

Unfortunately, it looks like ObsoleteAttribute is not valid for assemblies. Is there any other way to cause a compiler warning when a project referencing an assembly is built?

Thanks.

EDIT: For clarification, here's what the assemblies look like before and after the merge

Before the merge:

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

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

After the merge:

Assembly1:
(empty)

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

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

Before the merge, users referenced both Assembly1 and Assembly2. After the merge, they only need to reference Assembly2, but I'd rather produce a warning that Assembly1 is no longer necessary than break their builds by removing Assembly1 right away.

It sounds like I should use type forwarders to make sure that programs that have already been built against these assemblies continue to work without requiring recompilation, but I don't want to leave stub classes in Assembly1 just to flag the assembly as obsolete.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

When moving types from one assembly to another the correct thing to do is to use a type forwarder, not to mark the old assembly classes as obsolete.

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...