The occasional Interop Nightmare
You would think that After 4-5 years of programming experience, after having learned many new tircvks and technonlogies, i would be less surprised by the bwilderment that overcomes me as i come to solve this interop nightmare i seem to be facing.
It started out quite nicely. My company employs a trace utility to debug our applications. this utility is actually a COM wrapper to a C++ tracing server, to which our C++ apps send traces to while running. A VB Trace client uses this COM wrapper to display the traces in an organized fasion. really nothing fancy, but works.
The only trouble we have ever had was using connecting to the COM wrapper running on a remote computer (read: DCOM). our system security policies somehow prevent the DCOM from accessing this wrapper (playing around with dcomConfig did not work of course...).
"Well." i thought to myself foolishly, "i WAS trying to learn this whole "Remoting" thing, so this would be a great way to learn!". the target was pretty simple - write a delegation layer using .NET remoting, which passes the Data reciever from the COM wrapper trace events, to a .net remoting enabled client on the client machine, which passes this data on as a COM wrapper in itself, thus allowing the VB Application to use it via the "references" dialog and so on...
so ther i went, sifting through the documentation, and event purchased Ingo Rammer's new Remoting Book.
Well, turns out that the old VB aplication that needed to use COM wrapped .NET componenets needed to have those .NEt componenets Strongly named and in the GAC. OK i can live with that. BUT - since my .NEt compoenent also referenced an older COM server (not managed), it too needed to be strongly named, and it's wrapper assembly needed to be in the GAC (or something of the sort - i passed out halfway figuring this thing..)
It should not be this difficult. really. COM interop should be the easiest thing, and i dont mean just referencing old com - that IS easy, but take the more elaborate step and if i make a compoenent strongly named - automatically make its references strongly named as well ! i shouldnt have to do this manually.
Since i'm still not using Everett - i dont know if this was implemented in that version - but i get the feeling it did not.... too bad. COM interop is going to be the most important thing in the next couple of years - people wont just reqrite zillions of lines of code. Amen.