Blogger :
meta-douglasp
All posts :
All posts by meta-douglasp
Category :
WSCF/WCF
Blogged date : 2006 Jul 10
My
good friend Yasser is no longer running the Indigo versioning basic.
I'll
let him tell you why, but needless to say, I think it is revenge for me offering him
the "opportunity" to drive this area of the product serveral years ago (he did a wonderful
job, BTW).
Since
we are so close to shipping Indigo, I decided that I would just take it over for the
next couple months instead of having someone else drive it.
The
last thing that we wanted to ensure before we shipped, with regard to versioning,
was that we would have some flexiblity to refactor what assemblies our types reside
in after we ship -- without breaking any existing apps.
I
did a little coding this evening to ensure that this was possible -- this finally
gave me a chance to play around with TypeForwardedTo.
While
the name leaves much to be desired, it all seems to work.
I
forwarded ICommunicationObject and CommunicationState into another assembly (System.ServiceModel.Communication.dll)
which introduced the below IL into the manifest of System.ServiceModel.dll:
.class extern forwarder
System.ServiceModel.ICommunicationObject
{
.assembly extern System.ServiceModel.Communication
}
.class extern forwarder
System.ServiceModel.CommunicationState
{
.assembly extern System.ServiceModel.Communication
}
All
of my tests worked as expected -- that said, when I tried to recompile my test harness
against the new ServiceModel assembly (just to see what the dev experience would be
like), I would have liked VS to "just work" without requiring me to add a reference
to System.ServiceModel.Communication.