Open With... the editor of your choice.

I'm on an VS IDE high lately. So to continue in this arena. Here is another tip my students and audiences seem to like.

I'm sure there is someone out there who has an XML file with a non standard extension, and they want to be able to use the XML editor in Visual Studio. But when you open the file there is no colour coding or any of the other XML editor features. This is because you are not in the XML editor. This is a nice little trick, I hope someone finds it useful.

I found this the first time I set up a Visual Studio project to hold all my NANT Scripts. NANT creates XML files with a .build extension. When you edit these XML files in Visual Studio they are not colour coded by default, because Visual Studio does not know it's an XML file.

Here is how to rectify the situation. When you open the file in Visual Studio (File->Open->File...). You will notice a drop down arrow on the open button.

Click the drop down arrow and select Open With... You should get this dialog.

Select the type of editor you want to open the file with. While you are here click on the Set as Default button. From now on whenever you open a file with that extension it will be opened in the editor you selected. In my example files with a .build selection always open in the XML editor now.


SOA Challenges: Entity Aggregation

Ramkumar Kothandaraman has a good article just released on MSDN discussing SOA Challenges: Entity Aggregation. Aggregation is a much better name than “composable entities“ since it's definition implies that property sets of an entity grow as more child entities are merged into it. This also implies that you need a mapping layer and conflict resolution to resolve duplicate property names or just rename them for that matter.

This is becoming an important technique for passing xml documents up the stack of web services, each one adding their own value to the entity - or aggregating in a master/slave hierarchy topology. Either way, one of the subtle things about entity aggregation is that you can also think of it as a lightweight form of multiple inheritance for the properties of your domain objects. Is that useful or am I just bent?

How do you feel about the VS.NET Query Designer

The VS Data Team wants your input. Head over here. (BTW, don't you love these surveys? They're the best and tell me that MS really cares about what we think).

ObjectSharp Helps Send Kids to Camp. - Jun 03, 2004 - Toronto - -21

Dear ObjectSharp,

Many thanks for your support of our recent golf tournament on May 15th, 2004.

Looks like we've raised close to $3,000 for the Wenonah Foundation (helping to support families in need with camp fees), which is terrific.

Good turn-out...about 55 or so played in the tournament proper and others were there for dinner.

One of our nurses at Camp won the ObjectSharp Closest to the Pin, Keg gift Certificates. She's delighted (and will be eating at the Keg for several months!).

See you soon...thanks again,

Jeff Bradshaw

Senior Director - Wenonah Camps Group

Borland's Together Modeling tool for .Net

I've had the opportunity to use Borland's Together Control Center product a lot lately.

For those of you that are wondering "What the hell is Together?", the Borland web site defines it as:

"An integrated development platform designed to simplify and accelerate the analysis, design, development, and deployment of enterprise applications."

Translation... yet another UML case tool.

Initially, I found my self asking... Why would I use this when Visio Enterprise Architect does basically the same thing?

The answer lies in its simplicity.  I found the Together IDE easier to use than Visio and the code generation it produced from my models was just as good.  Plus it provides the ability to track requirements, test cases and generate excellent html documentation.

There were a few minor annoyances such as the way it produces nested namespaces and its Java style indentation, but all and all it is a fairly capable product, especially considering that it is the first version that offers C# and VB.Net support.

Although it does lack some of the extended UML elements that Visio provides as well as pre-built classes for the .Net framework, I expect these will be offered in future versions.

Smart Client Application Design and Deployment - Jun 02, 2004 - Toronto - -22

Are you interested in building applications with amazing UI that are still easy to develop? Do you need your application to securely access data? Do you like the ease of Web-based development, but still want the power of Windows programming?

Attend this MSDN Deep Dive where we will go deep on Smart Client Application Design and Deployment

In this half day session, you will learn:

  • Best Practices for Designing and Building Smart Client Applications
  • The Ins and Outs of Secure Data Access
  • Developing Secure Smart Client Applications
  • Deploying and Maintaining Smart Client Applications

And away we go...

Blogs...what can I say?

Trying to write down and explain what I have a hard time putting into words about the technology that I know.  I will be the first to admit, I am by no stretch of the imagination a teacher :)

Humor for Techies

A large percentage of the blog reading that I do regularly is about technical topics.  No offense to any of the authors, but as much as a geek I am, the material is frequently dry.  I'm always looking for something juicy to sink my eyes into. So imagine my delight at finding  Both technical (?) and humorous in one fell swoop.  Thanks to Alex Papadimoulis for making my days

Backward compatability not Backwards compatability

I was at a client site the other day and one of the developers asked me if it was possible to get the name of the assembly that had made a call to a specific function within a class.

I told him to use the Assembly.GetCallingAssembly() static method in the System.Reflection namespace and pointed him to an example of it's use in one of our c# classes.

He then thanked me and went off to add the call to his code. 

I thought that the matter was done, but a little later he came back and told me that it didn't work. It seems that it was always returning the Microsoft.VisualBasic namespace.

Now I knew that he was writing the code in VB but I couldn't believe that there was a bug in this method... one that I'd used on several times before with no problems.

I rewrote his code in C# and sure enough... It worked!  But the VB code always returned Microsoft.VisualBasic....

Then I set about trying to figure out why.

After a lot of hair pulling and google-ing to no avail, I finally figured it out:

Consider the following class:

 using System.Reflection;

class MyClass


public string WhoCalledMe()


return Assembly.GetCallingAssembly().FullName;




And now the VB code that instantiates it and calls the WhoCalledMe method:

 ' VB source code

Dim x

Dim caller as string

x = New MyClass()

' This returns Microsoft.VisualBasic....!

caller = x.WhoCalledMe()



The reference to the object that contained the call to Assembly.GetCallingAssembly() was not properly declared.

Instead of strongly typing the reference variable, it was declared un-typed... and since the compiler option was not set to "Option Strict", this was allowed.

This means that there is some sort of Microsofty magic going on here to resolve the late bound call through... you guessed it... the Microsoft.VisualBasic assembly.

The moral of this story is:  Backward compatibility is great when you need it... but you have to be careful to make sure it doesn't turn into BACKWARDS compatibility.




FTP Software

For years I have been trying to find FTP software that was good. I mean easy to use, reliable with a nice GUI. I have used all kinds over the years. I won't mention all the bad ones I used, so as not to offend anyone. None of them were very nice to use.

I asked Dan what he used for FTP. He told me the kids today use FileZilla. You have to listen to the kids, they know.

So I went to SourceForge and downloaded FileZilla. this is the best FTP software I have ever used.

It's intuitive and friendly, and so far completely reliable.

I love it, and I don't care who knows it.