Visual Studio 2010 : XML XSD Schema to Classes within the IDE
Whenever I have needed to create a class file from an XML XSD schema, I use the .NET xsd.exe tool and prebuild events, in VS, to ensure that my classes and schemas are in sync with each other at build time. This of course works fine, however...
I have noticed that if the XSD and derived class are in the same project VS understands the relationship and visually displays the CS as a child of the XSD file in solution explorer. So I was wondering if there is any functionality in Visual Studio 2010 to perform class creation for me within the IDE rather than relying on the prebuild script?
For example, I would add the XSD to the project set some options somewhere and VS takes over and creates my classes for me.
Does VS 2010 support anything like this? Or should I just stop wondering and continue to use xsd.exe and prebuild.
EDIT I have also noticed that under the properties of the XSD file I have the option to set a Custom Tool, reading the description this seems close to what I am aiming for but I am unsure of the correct usage for this property.
EDIT Also, if there is a solution I need this to be based on the features/functions that come as standard with VS2010. I would prefer to not use a 3rd party addon etc
Visual Studio 2010 in itself does not contain any such functionality for general consumption.
Visual Studio has some limited support for this XSD-to-code conversion in the context of typed datasets in ADO.NET - but those are not general-purpose solutions, they are targeted at exactly that one usage scenario.
But do check out the XSD2Code add-in that does exactly that
You can use the XSD.exe which is in C:\program files\Microsoft\SDKs\Windows\v7.0A\Bin\xsd.exe. follow the steps to add XSD as a menu item in VS tools menu
- Add XSD file to your VS project
- Go to visual studio Tools menu
- Go to external tools
- Enter the Title as XSD
- command as the path to xsd in your system(normaly C:\program files\Microsoft SDKs\Windows\v7.0A\Bin\xsd.exe. )
- Arguments as $(ItemPath) /c /l:cs
- initial directory as $(ItemDir)
- check the Use output window thats it press ok
Then click the Xsd files in your solution explorer and then tools--Xsd click, this will generate the class on the same folder as the .XSD file. If you already did not add the file in step 1, you will have to add the resulting .cs file into the project by right-clicking on the project in the Solution Explorer, select Add --> Existing Item and then the .CS file generated from the .XSD should be present and can be included.
There used to be a means to do that in Visual Studio. You could right click on an xml schema and there was a choice in the context menu that said something like "generate dataset." I used to use it frequently and it worked great. For some mysterious reason, Microsoft removed that function - maybe after VS 2003? I'm not sure why it's ok to use a command line utility and that it's not ok to execute the same code from a menu, but there it is.