<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>BlogML Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Home</link><description>BlogML Wiki Rss Description</description><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=21</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
About BlogML
&lt;/h1&gt;&lt;h2&gt;
&lt;a href="http://blogml.org/" class="externalLink"&gt;Read about the project&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and subscribe to our &lt;a href="http://blogml.org/feed/" class="externalLink"&gt;RSS feed&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.
&lt;/h2&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>Keyvan</author><pubDate>Tue, 18 Dec 2007 04:47:40 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20071218044740A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=20</link><description>&lt;div class="wikidoc"&gt;
!About BlogML&lt;br /&gt;!!&lt;a href="http://blogml.org/" class="externalLink"&gt;Read about the project&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and subscribe to our &lt;a href="http://blogml.org/feed/" class="externalLink"&gt;RSS feed&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>Keyvan</author><pubDate>Tue, 18 Dec 2007 04:47:06 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20071218044706A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=19</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;About BlogML&lt;/b&gt;&lt;br /&gt;&lt;a href="http://blogml.org/" class="externalLink"&gt;Read about the project&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and subscribe to our &lt;a href="http://blogml.org/feed/" class="externalLink"&gt;RSS feed&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>Keyvan</author><pubDate>Thu, 13 Dec 2007 16:19:03 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20071213041903P</guid></item><item><title>UPDATED WIKI: News Feeds</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=News Feeds&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;div class="rss"&gt;
&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blogml.org/blogs/news/archive/2007/09/15/troubleshooting-blogml-schema.aspx"&gt;Troubleshooting BlogML - Schema&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, September 15, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blogml.org/blogs/news/rss.aspx" target="_blank"&gt;News&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;In the second post of my post series about BlogML troubleshooting I discussed about &lt;a href="http://nayyeri.net/archive/2007/09/15/troubleshooting-blogml-schema.aspx"&gt;BlogML schema and specification&lt;/a&gt; and how to validate a BlogML file against BlogML schema to make sure it has the correct structure. 
&lt;p&gt;As I&amp;#39;ve chosen a simple way to write this series, want to let non-technical users to learn how to use BlogML.&amp;nbsp; As the result, I described things from the base with a background to let all users understand concepts. 
&lt;p&gt;In this post you can learn about XML validation, BlogML schema, how to validate BlogML files against BlogML schema and some additional points about this validation and solving issues.&lt;/p&gt;&lt;img src="http://blogml.org/aggbug.aspx?PostID=7" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blogml.org/blogs/news/archive/2007/09/14/troubleshooting-blogml.aspx"&gt;Troubleshooting BlogML&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, September 14, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blogml.org/blogs/news/rss.aspx" target="_blank"&gt;News&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Recently I&amp;#39;ve begun writing some blog post series about troubleshooting BlogML on my blog and you can read the first post as an introduction &lt;a class="" href="http://nayyeri.net/archive/2007/09/10/troubleshooting-blogml-introduction.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In these posts I want to talk about troubleshooting some common issues in main parts of the BlogML migration process including the schema, .NET API, source blogging tool and destination blogging tool.&lt;/p&gt;
&lt;p&gt;This is the first step to create better documentation for BlogML!&lt;/p&gt;&lt;img src="http://blogml.org/aggbug.aspx?PostID=3" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blogml.org/blogs/news/archive/2007/08/30/blogml-site-reloaded.aspx"&gt;BlogML Site Reloaded&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, August 30, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blogml.org/blogs/news/rss.aspx" target="_blank"&gt;News&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Finally we reached to a good point and moved the site to a great platform and a VPS.&amp;nbsp; Now BlogML official website is powered by Community Server 2007 Service Pack 3 and some new parts are added to it.&amp;nbsp; We now host our forums and downloads on the official website rather than workspace and you can get better support and features on our forums.&lt;/p&gt;
&lt;p&gt;Documentation section (including Wiki and FAQs) is now working with a private part of Community Server and we hope to add rich documentation as soon as possible.&lt;/p&gt;
&lt;p&gt;We have to thank Rob Howard, Jason Alexander, Adonis Bitar and Rick Reszler from Telligent to help us set this site up and running.&lt;/p&gt;
&lt;p&gt;You can follow this blog in order to keep yourself up to date with latest changes and news on project.&amp;nbsp; There is also a RSS feed to subscribe &lt;a href="http://blogml.org/blogs/news/rss.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogml.org/aggbug.aspx?PostID=1" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br /&gt;&lt;div class="rss"&gt;
&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/20/ebooks-good-or-bad.aspx"&gt;eBooks: Good or Bad?&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, September 21, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 0px 5px 5px; border-left: 0px; border-bottom: 0px" height="220" alt="Photo taken from http://www.laptop.org/OLPC_files/laptop-ebook.jpg" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/eBooksGoodorBad_3FBB/laptop-ebook_3.jpg" width="284" align="right" border="0"&gt; In one of his recent posts, &lt;a href="http://wroxblog.typepad.com/" rel="acquaintance"&gt;Jim Minatel&lt;/a&gt; (Wiley/Wrox Acquisitions Editor), &lt;a href="http://wroxblog.typepad.com/minatel/2007/09/ebook-author-op.html"&gt;asks authors for their opinions about eBooks&lt;/a&gt;.&amp;nbsp; I've been trying to post about this for a while so here is my thoughts.&lt;/p&gt; &lt;p&gt;First of all, I have to say that publishers can give the best answers to this question because in the top most level they get affected by the results of selling eBooks and piracy.&lt;/p&gt; &lt;p&gt;But from an author point of view (not a reader) I think that it doesn't differ for any author to see his or her book as a printed book or eBook.&amp;nbsp; All of us have non-commercial goals in mind when writing a book and the money wouldn't be the primary reason to write a book.&amp;nbsp; For myself, writing a book is one of several ways to contribute to the community and help to improve it.&amp;nbsp; Therefore, from this view authors can be happy if they see eBook version of their work to spread their work.&lt;/p&gt; &lt;p&gt;To be honest, I personally don't like to see any piracy for copyrighted material especially for books because books are a little different from other copyrighted material.&amp;nbsp; Publishers, editors and authors are people who are helping our world to be better though so stealing their works shouldn't be a good job at all.&amp;nbsp; The big concern about eBooks (in my opinion) is the piracy.&amp;nbsp; Unfortunately eBooks have been a very common way of stealing the work of publishers and authors in the recent years.&lt;/p&gt; &lt;p&gt;Even though I'd like to share my knowledge with others through my works (including blog, article, book and open source software) but hate to see that others use my work to promote themselves.&amp;nbsp; As an instance, there is a local .NET site that is even listed on ASP.NET official website as a local community.&amp;nbsp; This site is providing pirated eBooks from several publishers for free download and gets many praises to promote itself.&amp;nbsp; They even make money from the books by sending a collection of eBooks to postal addresses.&amp;nbsp; There are many websites that do this around the world.&amp;nbsp; Everyday we face with them when searching for feedbacks for books but for two reasons I personally don't like to follow this issue to close these sites:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;I can't do this myself!&amp;nbsp; I have to ask publishers to follow up on such sites and am almost sure they can't do this for all the sites (or it's better to say that they prefer to avoid doing this).&amp;nbsp; There have been many situations that I was going to ask publishers to try to close a site but knew that it's almost impossible for them to do this for all these sites around the world.&amp;nbsp; A publisher can't get in this challenge and spend its resources to save its work, a work that it has created by spending money and resources.&amp;nbsp; So it's all a waste of resource and energy not a business!  &lt;li&gt;I don't like to waste my time on this!&amp;nbsp; Someone has done a stupid job and has stolen my (or other's) rights.&amp;nbsp; This already has wasted some resources from me (or another author) or a publisher and wasting more time on this doesn't seem logical though!&amp;nbsp; They sit somewhere and steal other's works in a short time then we have to spend a lot of time to prevent them and in many cases we're not successful!&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;But what lead me to move the conversation from eBook to piracy?&amp;nbsp; Because the main parameter on choosing whether we want to publish an electronic version or not is the incomings and market.&amp;nbsp; Obviously an eBook should be sold with a very cheaper price than a printed book.&amp;nbsp; Now what happens if people even don't pay that cheap price and use the pirated eBook copies?&amp;nbsp; Read this terrible story in &lt;a href="http://wroxblog.typepad.com/minatel/2005/05/market_demand_f.html"&gt;this post&lt;/a&gt; from Jim that is written in May 2005.&lt;/p&gt; &lt;p&gt;However, as an author I'd like to see more and more people are reading my work but don't like to see that others are promoting themselves with what I've done!&amp;nbsp; On the other hand, I think that eBooks can't represent the quality of a work.&amp;nbsp; I mean that in our world if I pay $50 for something, I suppose that it's more important and better than something that I bought for $5!&lt;/p&gt; &lt;p&gt;But from a technical perspective in .NET there can be some positive points for eBooks.&amp;nbsp; Having the electronic version of a book helps publishers to publish a colorful book easily.&amp;nbsp; Nowadays this is going to become important especially after the birth of WPF and Silverlight and the requirement of having some figures colorful.&lt;/p&gt; &lt;p&gt;On the other hand, eBooks let you deliver a book sooner to the market.&amp;nbsp; Normally it takes more time to design, produce, print and ship printed books but with eBooks you can save time and deliver the content to end users quickly.&amp;nbsp; This can be a positive point for technical .NET books as well because when a new technology comes out, people are looking for it (like hungry guys) and this can feed them quickly!&lt;/p&gt; &lt;p&gt;All in all, regarding these positive and negative points, I would prefer to not to have an electronic version of the books.&amp;nbsp; There are always some exceptions and this can't be a general rule but if I was in charge of someone who could decide, I had to restrict eBooks as much as I could!!&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=111268" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/18/community-server-2007-1.aspx"&gt;Community Server 2007.1&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Wednesday, September 19, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Telligent released the final version of what you recently saw as &lt;a href="http://nayyeri.net/archive/2007/08/27/community-server-2007-service-pack-3-pre-release.aspx"&gt;Service Pack 3 for Community Server 2007&lt;/a&gt; with a new name: &lt;a href="http://communityserver.org/blogs/announcements/archive/2007/09/18/community-server-2007-1.aspx"&gt;Community Server 2007.1&lt;/a&gt;.&amp;nbsp; As Jose has written in the official announcement, this change in the name is coming from the number of new features, enhancements and bug fixes.&lt;/p&gt; &lt;p&gt;One of major changes in this service pack was the replacement of traditional monthly archive with a new CSJob to execute and create an index of monthly archive.&amp;nbsp; For me, there were some problems and probably some visitors noticed the lack of this archive on my site for a week or so.&amp;nbsp; Finally David Penton helped me to solve the issue.&amp;nbsp; I think some changes are applied to this final release to avoid further problems for others.&lt;/p&gt; &lt;p&gt;My site is already upgraded to this new version (build 3.1.20917.1142) with no problem.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=109210" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/18/phil-haack-to-change-the-world.aspx"&gt;Phil Haack to Change the World&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Tuesday, September 18, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 5px 5px; border-right-width: 0px" height="184" alt="Phil Haack and Cody" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/PhilHaacktoChangetheWorld_134A7/720440046_7bec55b6f0_m_3.jpg" width="244" align="right" border="0"&gt; After &lt;a href="http://www.hanselman.com/blog" rel="acquaintance"&gt;Scott Hanselman&lt;/a&gt;, now &lt;a href="http://haacked.com/archive/2007/09/17/why-is-microsoft-removing-my-mvp-status.aspx"&gt;Microsoft hires Phil Haack&lt;/a&gt; to show that they still hire best guys around the world!&lt;/p&gt; &lt;p&gt;While I've missed my feed reader list and am looking to find an OPML file from my back up history, today I read this on &lt;a href="http://haacked.com/" rel="friend"&gt;Phil&lt;/a&gt;'s blog.&amp;nbsp; Like most of you, first I thought Phil has lost his MVP status for his contributions to open source community (well, I still think Microsoft doesn't like open source in the way that we like it!).&amp;nbsp; Phil is now hired by Microsoft to change the world by working on a new MVC framework for upcoming ASP.NET version.&amp;nbsp; His title is a Senior Program Manager in the ASP.NET team.&amp;nbsp; Congratulations, Phil!&lt;/p&gt; &lt;p&gt;Phil has been a very active community member with a great blog and everyday contributions to open source projects.&amp;nbsp; I hope that we don't miss his contributions to open source projects like Subtext, Subkismet, Subsonic and SubXXX in general!!&amp;nbsp; Good luck, buddy!&lt;/p&gt; &lt;p&gt;Back in October 2006 I &lt;a href="http://nayyeri.net/archive/2006/10/12/some-words-about-mvp-programs.aspx"&gt;had written&lt;/a&gt; about the gap between Microsoft and community and had pointed to Phil as one of guys who really deserved MVP award (even more).&amp;nbsp; Now that I see Microsoft is changing its strategy for community contributions (still they need more changes though), things are interesting for me and I like to follow this thread because in my opinion we should expect more of this stuff coming out from the community in the future!&lt;/p&gt; &lt;p&gt;+ As a complementary for this post, read a new post by Scott Hanselman about &lt;a href="http://www.hanselman.com/blog/PNPSummit2007OneOfTheseThingsDoesntBelong.aspx"&gt;Patterns and Practices Summit&lt;/a&gt; (take a look at the list of keynote presentation speakers and loose your control for a moment!).&amp;nbsp; One of things that Scott can present is about this ASP.NET MVC Framework and you can encourage him to do this!&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=108966" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/17/use-wmi-provider-in-windows-communication-foundation.aspx"&gt;Use WMI Provider in Windows Communication Foundation&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, September 17, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;If you can recall from my older posts, I had discussed about &lt;a href="http://nayyeri.net/archive/2007/01/23/tracing-and-message-logging-in-windows-communication-foundation.aspx"&gt;tracing and message logging in Windows Communication Foundation&lt;/a&gt; before.&amp;nbsp; There is another option to monitor diagnostics of a WCF application using Windows Management Instrumentation (WMI) and is the topic of this post.&lt;/p&gt; &lt;p&gt;There are three steps to use WMI provider in WCF: building and configuring a service, building a client to use this service and viewing WMI information.&lt;/p&gt; &lt;h3&gt;Service&lt;/h3&gt; &lt;p&gt;First we need to create a service.&amp;nbsp; The service contract for my sample service is this:&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Runtime.Serialization;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.ServiceModel;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; WMISample&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af"&gt;ServiceContract&lt;/span&gt;]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;interface&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IMyService&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af"&gt;OperationContract&lt;/span&gt;]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;int&lt;/span&gt; GetData(&lt;span style="color: blue"&gt;int&lt;/span&gt; value);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af"&gt;OperationContract&lt;/span&gt;]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetText(&lt;span style="color: blue"&gt;string&lt;/span&gt; value);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;And the service implementation is this:&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Runtime.Serialization;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.ServiceModel;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; WMISample&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MyService&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IMyService&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; IMyService Members&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; GetData(&lt;span style="color: blue"&gt;int&lt;/span&gt; value)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt; (value == 0)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Value can't be zero!"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; (value * 2);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetText(&lt;span style="color: blue"&gt;string&lt;/span&gt; value)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"Hello {0}!"&lt;/span&gt;, value);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;The important point is where you want to configure your service.&amp;nbsp; Here you need to add a &amp;lt;diagnostic&amp;gt; element under &amp;lt;system.servicemodel&amp;gt; and set its &lt;em&gt;wmiProviderEnabled&lt;/em&gt; attribute to true.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="color: blue"&gt; ?&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;services&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;service&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;WMISample.MyService&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;metadataSupport&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;contract&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;WMISample.IMyService&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;binding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;basicHttpBinding&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;address&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;mex&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;binding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;mexHttpBinding&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;contract&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;IMetadataExchange&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;service&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;services&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;diagnostics&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;wmiProviderEnabled&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;true&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;messageLogging&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;logEntireMessage&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;true&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;logMalformedMessages&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;false&lt;/span&gt;"&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: red"&gt;logMessagesAtTransportLevel&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;false&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;logMessagesAtServiceLevel&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;false&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;diagnostics&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;behaviors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;metadataSupport&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;serviceMetadata&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;behaviors&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;h3&gt;Client&lt;/h3&gt; &lt;p&gt;On the client side we don't need to do any special thing.&amp;nbsp; Here is the simple code to use this service in a client:&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; MyClient&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.Title = &lt;span style="color: #a31515"&gt;"Use WMI Provider in WCF"&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;MyServiceClient&lt;/span&gt; proxy = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MyServiceClient&lt;/span&gt;())&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"GetData(2) = {0}"&lt;/span&gt;, proxy.GetData(2)));&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"GetText(\"Keyvan\") = {0}"&lt;/span&gt;, proxy.GetText(&lt;span style="color: #a31515"&gt;"Keyvan"&lt;/span&gt;)));&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;h3&gt;View WMI Information&lt;/h3&gt; &lt;p&gt;At this point you can view WMI information both from WMI viewer tools or writing your own programming codes.&lt;/p&gt; &lt;p&gt;For example, using WMI Object Browser tool I can see something like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/UsingWMIProviderwithWindowsCommunication_EE36/Snap2_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="349" alt="WMI Object Browser" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/UsingWMIProviderwithWindowsCommunication_EE36/Snap2_thumb.jpg" width="450" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I can also write my own codes to view WMI information.&amp;nbsp; Here is a simple console application that I wrote for this purpose:&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Management;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; ViewWMI&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ManagementScope&lt;/span&gt; managementScope = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ManagementScope&lt;/span&gt;(&lt;span style="color: #a31515"&gt;@"root\servicemodel"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ObjectQuery&lt;/span&gt; query = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObjectQuery&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"select * from ServiceAppDomain"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ManagementObjectSearcher&lt;/span&gt; searcher = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ManagementObjectSearcher&lt;/span&gt;(managementScope, query);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ManagementObjectCollection&lt;/span&gt; collection = searcher.Get();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ManagementObjectCollection&lt;/span&gt;.&lt;span style="color: #2b91af"&gt;ManagementObjectEnumerator&lt;/span&gt; enumerator = collection.GetEnumerator();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;while&lt;/span&gt; (enumerator.MoveNext())&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(enumerator.Current[&lt;span style="color: #a31515"&gt;"__PATH"&lt;/span&gt;]);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;And it gives an output like this: &lt;/p&gt; &lt;p&gt;&lt;a href="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/UsingWMIProviderwithWindowsCommunication_EE36/1_4.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="252" alt="Output" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/UsingWMIProviderwithWindowsCommunication_EE36/1_thumb_1.jpg" width="480" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;You can download the source code of sample projects written for this post from &lt;a href="http://nayyeri.net/misc/keyvan/BlogFiles/UseWMIinWCFSample.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=107753" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/15/troubleshooting-blogml-schema.aspx"&gt;Troubleshooting BlogML - Schema&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, September 15, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;In the first post of my series about BlogML troubleshooting I gave &lt;a href="http://nayyeri.net/archive/2007/09/10/troubleshooting-blogml-introduction.aspx"&gt;an introduction to BlogML troubleshooting&lt;/a&gt; in general.&amp;nbsp; In this post I want to talk about issues related to BlogML schema and specification.&lt;/p&gt; &lt;p&gt;BlogML is a derivation of XML format and like many other derivations has its own specification and structure.&lt;/p&gt; &lt;p&gt;It's not related to this post but for those who don't know: we have three common ways to define the structure of an XML file: XSD schema, DTD and Relax NG.&amp;nbsp; The XSD schema is the most common way and something that .NET developers use frequently.&amp;nbsp; XSD schema is an XML file, itself, and has a special structure to declare the structure of an XML file like the order of elements, list of possible elements, attributes&amp;nbsp; and ...&lt;/p&gt; &lt;p&gt;In BlogML we used XSD schemas in order to define the structure of BlogML files and apply our specification to general XML format.&amp;nbsp; This has some benefits for us:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;We can have a constant structure for all BlogML files.  &lt;li&gt;The result of an export operation can be checked and validated against this schema to make sure the result is correct.  &lt;li&gt;Using this schema, we can validate any BlogML file to make sure it has the correct structure before doing an import operation.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This schema has not been a very critical problem for BlogML users but I think it's worth to clarify some points about schema to help users understand what we're talking about when we refer to schema and validation process.&amp;nbsp; The first thing that I ask from BlogML users in many situations is "do you have a valid BlogML file?" then they answer "how can I make sure I have a valid BlogML file?".&amp;nbsp; Therefore, let me talk about this topic here.&lt;/p&gt; &lt;p&gt;The BlogML XSD schema is something that we defined for BlogML structure.&amp;nbsp; Each version of BlogML has its own schema and .NET API library.&amp;nbsp; You need to choose the correct version for your schema, .NET API library and converter tool in order to be able to perform a success migration.&lt;/p&gt; &lt;p&gt;This XSD file is available as a part of BlogML download but some migration tools have provided it along the converter (like my Community Server converter).&lt;/p&gt; &lt;p&gt;We recommend users to validate their BlogML files (exporter from the source blogging tool) against this schema to make sure everything is correct inside the document.&amp;nbsp; This validation can be very helpful to avoid further problems and can help to solve issues.&lt;/p&gt; &lt;p&gt;For example, last week a non-technical user had reported some issues with his BlogML migration on Community Server Gold forums.&amp;nbsp; After receiving his file, I belief that his file has a wrong structure and could stop him from using BlogML.&lt;/p&gt; &lt;p&gt;Below is a small part of BlogML schema in a schematic form (the actual schema is an XML file).&amp;nbsp; As you see, the BlogML schema declares the relationship between elements and their child elements and attributes and the type of each element or attribute.&lt;/p&gt; &lt;p&gt;&lt;a href="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/TroubleshootingBlogMLSchema_10E42/Snap1_6.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="429" alt="BlogML Schema" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/TroubleshootingBlogMLSchema_10E42/Snap1_thumb_2.jpg" width="300" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;But how to validate a BlogML file against this schema?&amp;nbsp; Let me give a brief description about XML validation for non-technical users.&amp;nbsp; There are two general groups of issues with an XML file:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Errors: these are critical problems with an XML file and they stop you from using this file in any case so errors must be solved before using an XML file.  &lt;li&gt;Warnings: these problems aren't critical but are worth to solve before using an XML file.&amp;nbsp; For example, the order of some elements XML document may be different from schema and this provides warnings.&amp;nbsp; An XML file with warnings can be parsed by .NET but based on the code logic for your specific application they may cause exceptions.&amp;nbsp; In BlogML we've tried to handle these situations but though we recommend you to solve all warnings before doing a migration.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;To validate a BlogML file against BlogML schema, you have several choices.&amp;nbsp; The number of your choices is equal to all available XML validators in the world.&amp;nbsp; All you need is to choose one of them and give the address or content of your BlogML file and BlogML schema as inputs to it and perform a validation.&amp;nbsp; I personally like to use Visual Studio XML validation features but it has some limitations.&amp;nbsp; The big limitation is it only lists a specific number of errors and warnings and doesn't include any errors or warning after reaching to this number.&amp;nbsp; But its integration with my favorite IDE is enough to encourage me to use it.&amp;nbsp; We don't expect anyone to have Visual Studio installed so from the early versions we've provided a built-in XML validation application as a part of BlogML download package.&amp;nbsp; This validator isn't very professional.&amp;nbsp; It just gets the content of your BlogML file and the content of BlogML schema and performs a validation then lists any error or warning in a MessageBox one by one.&amp;nbsp; Note that based on the size of your file, it may take longer to load the file and perform the validation so you need to be patient while performing this validation especially if you're an old blogger with many posts.&amp;nbsp; It's loading all the posts that you've written during some years!!&amp;nbsp; The other point is you may see some of the errors and warnings after solving current issues and they may be hidden before you correct other issues.&lt;/p&gt; &lt;p&gt;Recently I created a &lt;a href="http://www.codeplex.com/BlogML/WorkItem/View.aspx?WorkItemId=12673"&gt;work item&lt;/a&gt; to improve this validator for next version to work in a way similar to other XML validators.&amp;nbsp; You can even write your own validator application with .NET.&amp;nbsp; It's so easy and I've described it in an article about &lt;a href="http://aspalliance.com/941_Validating_XML_Files_Against_XSD_Schemas_in_NET_1x_and_20"&gt;XML validation against XSD schemas in .NET 1.1 and 2.0&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;After validating your BlogML file, you may get some errors or warnings.&amp;nbsp; All validators (including the built-in BlogML validator) provide the line and column number of the errors or warning as well as a text description about its reason.&amp;nbsp; In most cases, this description is very helpful to figure out the reason.&amp;nbsp; Based on the type of error or warning and its reason, you need to follow some steps to solve the issue and get a clean BlogML file.&amp;nbsp; Often it's not easy to solve some errors and warnings that are generated by export tools because you need to deal with a large number of posts hence errors or warnings.&amp;nbsp; Here is the point!&amp;nbsp; A good converter tool is a tool that can generate an output without errors or warnings.&amp;nbsp; However, if you have a BlogML file with this problem then don't worry.&amp;nbsp; Anyway, you need to solve errors but can ignore warnings to see what will happen on migration.&amp;nbsp; We have done most serialization code manually to handle such problems and hope that this can reduce the difficulty for users.&lt;/p&gt; &lt;p&gt;For example, below you see a snapshot of validation of a BlogML file in Visual Studio.&lt;/p&gt; &lt;p&gt;&lt;a href="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/TroubleshootingBlogMLSchema_10E42/Snap3_4.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="112" alt="XML Validation" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/TroubleshootingBlogMLSchema_10E42/Snap3_thumb_1.jpg" width="450" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;As you see, this BlogML file has four errors and one warning.&amp;nbsp; Four errors are a result of using hexadecimal values in the XML document and corresponding line and column of each error is shown in the window.&amp;nbsp; That warning is also a result of a unexpected &amp;lt;div&amp;gt; element in BlogML file which is showing a WordPress database error.&lt;/p&gt; &lt;p&gt;At the end, I have to note that at least you need to have a BlogML file without errors to be able to use migration tools.&amp;nbsp; The version of the BlogML schema, BlogML .NET API and your converter tool should match though.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=106775" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/14/managing-my-days.aspx"&gt;Managing My Days&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, September 14, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 5px 5px; border-right-width: 0px" height="214" alt="Photo taken from http://www.safelyinvest.com/business.jpg" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/GettingLazyinBlogging_12325/business_3.jpg" width="284" align="right" border="0"&gt; Sometimes it happens though!&amp;nbsp; I've experienced this many many times in my life and it still happens.&amp;nbsp; It seems that reading all those books and articles about life hacks and project management hasn't had any effect!!&lt;/p&gt; &lt;p&gt;As you may have noticed both from my blogging and other community activities, recently I've been so busy and haven't had the opportunity to keep myself up as well as the past and couldn't keep up blogging regularly like the past couple of years.&amp;nbsp; Even though most of my current activities aren't public and you'll see their results in the future, but still there are some reasons that keep me away of what I like to do!&lt;/p&gt; &lt;p&gt;From my private activities, I'm writing the book that will be public in the future.&amp;nbsp; I'm also working on a few open source projects and mainly on Google Safe Browsing API implementation as a part of Subkismet.&amp;nbsp; As I had stated before, I need a few hours of free time to finish this implementation and produce an Alpha release but unfortunately I haven't been able to find those a few hours yet!&lt;/p&gt; &lt;p&gt;Moreover, in the recent weeks, I've been helping Microsoft on a confidential program which took some free time from me as well.&amp;nbsp; I also like this one but never can talk about its details.&lt;/p&gt; &lt;p&gt;The actual problem for me is I've taken more incoming tasks than my time.&amp;nbsp; I call it Keyvan Overflow which happens sometimes but needs my patience to buffer these tasks and get them done based on priority.&amp;nbsp; Normally in these cases I'm able to end up with something fair but this military service has stopped me from managing my life easily.&amp;nbsp; Recently I've gotten in trouble with co-workers at military office.&amp;nbsp; I could predict this situation from the first day because my personality is completely different from normal guys here in this country so I can't keep working with them.&amp;nbsp; Generally I haven't worked with amateur guys and now that I've forced to work with amateur guys it's too hard for me!&amp;nbsp; They're bothering me everyday and this is the worst thing to mention about my life nowadays!&amp;nbsp; One of friends, recommended me to read &lt;a href="http://www.amazon.com/gp/product/0446526568/103-8512413-3285419?ie=UTF8&amp;amp;tag=keyvannayyeri-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0446526568"&gt;The No A-s-s-h-o-l-e Rule&lt;/a&gt; book which seems to be a good book to read for this situation.&lt;/p&gt; &lt;p&gt;But how to end these troubles?&amp;nbsp; It's simple!&amp;nbsp; I have to put a priority on open source projects and get them done one by one.&amp;nbsp; Thankfully book has been the most important task for me and I've been able to handle it in the right way.&amp;nbsp; I also should reduce playing video games and watching movies in order to be able to keep blogging like the past.&lt;/p&gt; &lt;p&gt;Hey!&amp;nbsp; The good news is about weather.&amp;nbsp; It's getting cool.&amp;nbsp; God damn you Summer!!&amp;nbsp; I hope that I can have better days in near future!&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=106273" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/13/what-is-new-with-professional-visual-studio-add-ins-and-extensions.aspx"&gt;What is New with Professional Visual Studio Add-ins and Extensions?&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, September 13, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;While I &lt;a href="http://nayyeri.net/archive/2007/07/23/my-new-book-professional-visual-studio-add-ins-and-extensions.aspx"&gt;announced&lt;/a&gt; my new book in July, I've been working on the book everyday to get things done on time.&amp;nbsp; Although it has been so hard to manage this life with these troubles (that others provide for me in this country) but fortunately I've been able to keep things managed to now and pass a reasonable percentage of the book content.&lt;/p&gt; &lt;p&gt;It has been almost 2.5 months that I've begun working on the book and our team including myself as author, Bill as Development Editor and Cody as Technical Editor have been right on track.&amp;nbsp; The result is we're getting closer to the next stages and final print day of the book and there are some news about it coming out.&lt;/p&gt; &lt;p&gt;Book has found its shape and now it has a structure which helps me to write new chapters based on this structure to keep the consistency.&amp;nbsp; I have to confess that at first glance I worried about the book to some extent because VSX is a topic with poor documentation and resources in comparison with other Microsoft development topics.&amp;nbsp; Moreover, Wrox had a multi-author canceled book on this topic (even unlike my book, it was just limited to add-ins).&amp;nbsp; But after stepping in details and writing some chapters, now I don't worry anymore!&lt;/p&gt; &lt;p&gt;The other news is yesterday I received a notification about the addition of my book to Amazon.&amp;nbsp; Now you can &lt;a href="http://www.amazon.com/gp/product/0470230843/105-9824668-8151608?ie=UTF8&amp;amp;tag=keyvannayyeri-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470230843"&gt;check it&lt;/a&gt; on Amazon even though it's very soon to have an option for pre-order.&amp;nbsp; As you see, it's a prediction of 500 pages for the book and initially April 7, 2008 has been set as the release date for it but obviously these information are subject to change especially for this book which wants to use Visual Studio 2008 for the content and depends on its release date.&lt;/p&gt; &lt;p&gt;I checked out Wiley and Wrox websites to see if they have added the book as well but not only it's not there but also our &lt;a href="http://www.amazon.com/gp/product/0470108282?tag2=keyvannayyeri-20"&gt;Professional Community Server&lt;/a&gt; book has disappeared!&lt;/p&gt; &lt;p&gt;Beside this, I have some news about Wrox to spread.&amp;nbsp; First, Wiley is offering &lt;a href="http://www.wiley.com/WileyCDA/Section/id-306312.html"&gt;150 E-Books of Wrox titles&lt;/a&gt; for a limited time.&amp;nbsp; Second, &lt;a href="http://ckwebb.com/" rel="acquaintance"&gt;Chris Webb&lt;/a&gt; has created an account for &lt;a href="http://twitter.com/wrox"&gt;Wrox status on Twitter&lt;/a&gt; and a &lt;a href="http://www.facebook.com/group.php?gid=17831253704"&gt;Wrox group on Facebook&lt;/a&gt; for authors and fans.&amp;nbsp; And finally, now Wrox has a &lt;a href="http://www.cafepress.com/wroxpress"&gt;CafePress store&lt;/a&gt; where you can buy apparel, hats, Mousepad and ...&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=105373" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/10/troubleshooting-blogml-introduction.aspx"&gt;Troubleshooting BlogML - Introduction&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Tuesday, September 11, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Having a good documentation for software is something mandatory nowadays.&amp;nbsp; I see some negative feedbacks about various software for documentation.&amp;nbsp; Unfortunately people (even non-technical people) don't want to spend sometime to get what they need.&amp;nbsp; In most cases, I see duplicate questions about something that is already answered but if you don't answer then they begin saying "this frustrated software ..." or "I'm giving up with this ..." and same statements!&amp;nbsp; I hate people who expect others to put the food on the table for them and they just know how to eat!&lt;/p&gt; &lt;p&gt;However, above paragraphs were an introduction to move the thread to BlogML, our open source mark up language for blog content definition.&amp;nbsp; In the recent months we got many users both from .NET community and from non-technical users.&amp;nbsp; Some users had problems to get their migrations done with BlogML so sent some feedback about the BlogML project.&amp;nbsp; Now that we have an &lt;a href="http://blogml.org"&gt;official site for BlogML&lt;/a&gt; and have planned to provide good documentation about it, I thought it would be helpful if I write a short post as an introduction to BlogML troubleshooting and keep writing more detailed posts on my blog in the future to save myself from answering a question many times and also users to find their answers easier.&amp;nbsp; So here is the first post as an introduction!&lt;/p&gt; &lt;p&gt;First let me talk about the BlogML issues in general.&amp;nbsp; During these two years when I've been a member of BlogML project and have worked with many guys to help them migrate between blogging tools, saw some common issues with BlogML.&amp;nbsp; From one view, these issues can be grouped in four categories:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Problems with schema  &lt;li&gt;Problems with BlogML .NET API  &lt;li&gt;Problems with export tool  &lt;li&gt;Problems with import tool&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;As is obvious, the latest two cases aren't something that we directly can take care of them because converters are written with community members not ourselves.&lt;/p&gt; &lt;p&gt;The other annoying point is unfortunately most of the questions and reported issues are something that we have already answered in the default download packages but users do not attend to them at all and again just come up and ask about these issues!&lt;/p&gt; &lt;p&gt;One common question for users is "Do you have an export or import tool for my blogging tool?".&amp;nbsp; This is something obvious: as long as someone writes a converter then we have that tool available otherwise we just can say that we're sorry!&amp;nbsp; Fortunately we currently support all famous blogging tools and services like Community Server, Subtext, DasBlog, Windows Live Spaces, Blogger and WordPress and a converter for BlogEngine.NET is coming!&amp;nbsp; But if you're using a blogging tool that doesn't have a converter written yet and if you're a technical guy then it's possible to create some database mappings to generate your BlogML XML content from database easily.&amp;nbsp; This is a solution that some guys have used to generate their BlogML content.&lt;/p&gt; &lt;p&gt;The other common question is about the percentage of the content that may be lost during a migration with BlogML.&amp;nbsp; I'm proud to say that BlogML is able to move the content of all common blogging tools easily.&amp;nbsp; All common features for blogging tools and services are built for default BlogML structure.&amp;nbsp; We also have provided some extensibility points like extended properties to let you store data as key/value pairs for BlogML objects and use them easily.&amp;nbsp; Furthermore, we're going to add new blogging features and extensibility points to BlogML in next version.&amp;nbsp; I agree that people may have different thoughts about BlogML based on the blogging tool that they use but in my opinion my Community Server converter along Subtext converter are two good examples of converters that could be able to implement BlogML features in good details.&amp;nbsp; Users of these two converters have been happy with them so far!&lt;/p&gt; &lt;p&gt;In the abovementioned introduction I gave four different categories about BlogML issues.&amp;nbsp; In the upcoming posts, I discuss more about troubleshooting BlogML issues based on these categories.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=104515" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/08/cs-dev-guide-emailing-in-community-server-2007.aspx"&gt;CS Dev Guide: Emailing in Community Server 2007&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, September 08, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Back in September 2006 I wrote a CS Dev Guide post about &lt;a href="http://nayyeri.net/archive/2006/09/01/CS-Dev-Guide_3A00_-Send-Emails.aspx"&gt;emailing in Community Server 2.1&lt;/a&gt;.&amp;nbsp; In Community Server 2007 emailing has changed a lot and now we can consider it as something completely new.&amp;nbsp; I can say that &lt;a href="http://qgyen.net/" rel="acquaintance"&gt;Ken Robertson&lt;/a&gt; has done a great job on enhancing email features in Community Server 2007 and thank to his additions, now emailing is extendable and you can customize emailing features easily.&amp;nbsp; In this post I want to talk about emailing in Community Server 2007 which is now known as MailRoom in APIs.&lt;/p&gt; &lt;p&gt;&lt;em&gt;CommunityServer.MailGateway.MailRoom&lt;/em&gt; is responsible for emailing in Community Server 2007 (I ignore MailGateway as a commercial add-on here).&amp;nbsp; There you can find an &lt;em&gt;EmailJob&lt;/em&gt; which sends queued emails on a regular basis.&amp;nbsp; Beside this, there are some classes that contain a list of methods to return template email texts to be sent.&lt;/p&gt; &lt;p&gt;For example, &lt;em&gt;CommonEmails&lt;/em&gt; contains a list of common text templates for some scenarios like sending an email from one user to another via &lt;em&gt;UserToUser&lt;/em&gt; method or notification email for password change for a user via &lt;em&gt;UserPasswordChanged&lt;/em&gt; method.&lt;/p&gt; &lt;p&gt;There are also some classes specifically designed for emails that belong to specific applications.&amp;nbsp; For example, &lt;em&gt;WeblogEmails&lt;/em&gt; is a class that contains some methods for email text templates for weblog emails like &lt;em&gt;WeblogFeedbackNotification&lt;/em&gt; which sends a notification email for feedbacks on a blog.&lt;/p&gt; &lt;p&gt;The most important and common class in this namespace is &lt;em&gt;Emails&lt;/em&gt; which contains a collection of methods to work with emails.&amp;nbsp; Some of these methods are some ready to go email templates for common scenarios (and most of them are available in &lt;em&gt;CommonEmails&lt;/em&gt; class as well).&amp;nbsp; But here there are some methods that need special attention:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;CanSend: This is a Boolean function to test if a user can send emails or not.  &lt;li&gt;FormatHtmlAsPlainText: Gets a string value as HTML and returns its plain text equivalent.  &lt;li&gt;FormatPlainTextAsHtml: Gets a string value as plain text and returns its HTML equivalent.  &lt;li&gt;GetTemplate: This method has two overloads to get an email type as string, a user and return an &lt;em&gt;EmailTemplate&lt;/em&gt; object for that user and email type.&amp;nbsp; Email type string value is something that you define for your email templates in their XML files. &lt;li&gt;QueueMessage: This method has two overloads and it can either queue an &lt;em&gt;Telligent.MailGateway.Common.Components.EmailTemplate&lt;/em&gt; or &lt;em&gt;System.Net.Mail.MailMessage&lt;/em&gt; object.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;As is obvious from above discussion, for sending emails you have two choices:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Choose from a list of common email templates provided in Community Server and use some available methods for them to send your email.  &lt;li&gt;Create a &lt;em&gt;Telligent.MailGateway.Common.Components.EmailTemplate&lt;/em&gt; or &lt;em&gt;System.Net.Mail.MailMessage&lt;/em&gt; manually and queue it.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Knowing these principles, let me give three examples to clarify things.&lt;/p&gt; &lt;p&gt;First of all, let me use an email template to send an email after changing the password for current user to notify him or her about this change.&amp;nbsp; Here I create an instance of &lt;em&gt;CommonEmails&lt;/em&gt; class and use its &lt;em&gt;UserPasswordChanged&lt;/em&gt; method to notify the user.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; ChangePassword()&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;CSContext&lt;/span&gt; context = &lt;span style="color: teal"&gt;CSContext&lt;/span&gt;.Current;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; newPass = &lt;span style="color: maroon"&gt;"NewPass"&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.User.ChangePassword(&lt;span style="color: maroon"&gt;"OldPass"&lt;/span&gt;, newPass);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;CommonEmails&lt;/span&gt; emails = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;CommonEmails&lt;/span&gt;();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; emails.UserPasswordChanged(context.User, newPass);&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;In the second example, I create a &lt;em&gt;MailMessage&lt;/em&gt; object and set its properties to send an email from current user to the admin user of the site then queue this email with &lt;em&gt;Emails.QueueMessage&lt;/em&gt; method.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; SendEmailWithMailMessage()&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;CSContext&lt;/span&gt; context = &lt;span style="color: teal"&gt;CSContext&lt;/span&gt;.Current;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;MailMessage&lt;/span&gt; message = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;MailMessage&lt;/span&gt;(context.User.Email,&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.SiteSettings.AdminEmailAddress);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.Subject = &lt;span style="color: maroon"&gt;"Hey Admin!"&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.IsBodyHtml = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.Body = &lt;span style="color: maroon"&gt;"What are you doing?! :-D"&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;Emails&lt;/span&gt;.QueueMessage(message);&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;And in the last example, I use &lt;em&gt;Telligent.MailGateway.Common.Components.EmailTemplate&lt;/em&gt; to send an email.&amp;nbsp; This class is very similar to &lt;em&gt;System.Net.Mail.MailMessage&lt;/em&gt; class but with some extra properties and methods.&amp;nbsp; You create your email based on this class and use &lt;em&gt;Emails.QueueMessage&lt;/em&gt; method to queue it.&amp;nbsp; But here there is a point: you can insert some tokens in your email body in order to replace them with some values when you want to queue the email.&amp;nbsp; To do this, you need to pass a list of &lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; SendEmailWithEmailTemplate()&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;CSContext&lt;/span&gt; context = &lt;span style="color: teal"&gt;CSContext&lt;/span&gt;.Current;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Telligent.MailGateway.Common.Components.&lt;span style="color: teal"&gt;EmailTemplate&lt;/span&gt; template =&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;new&lt;/span&gt; Telligent.MailGateway.Common.Components.&lt;span style="color: teal"&gt;EmailTemplate&lt;/span&gt;();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; template.Subject = &lt;span style="color: maroon"&gt;"Hello"&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; template.Body = &lt;span style="color: maroon"&gt;"How are you?&amp;nbsp; I'm [name]!"&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; template.From = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;MailAddress&lt;/span&gt;(context.User.Email);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; template.To.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;MailAddress&lt;/span&gt;(context.SiteSettings.AdminEmailAddress));&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;List&lt;/span&gt;&amp;lt;Telligent.MailGateway.Common.Components.&lt;span style="color: teal"&gt;EmailTextToken&lt;/span&gt;&amp;gt; tokens =&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;List&lt;/span&gt;&amp;lt;Telligent.MailGateway.Common.Components.&lt;span style="color: teal"&gt;EmailTextToken&lt;/span&gt;&amp;gt;();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Telligent.MailGateway.Common.Components.&lt;span style="color: teal"&gt;EmailTextToken&lt;/span&gt; token =&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;new&lt;/span&gt; Telligent.MailGateway.Common.Components.&lt;span style="color: teal"&gt;EmailTextToken&lt;/span&gt;(&lt;span style="color: maroon"&gt;"name"&lt;/span&gt;,&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.User.DisplayName);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;Emails&lt;/span&gt;.QueueMessage(template, tokens);&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Here at the end, I would like to point to something about the way that emails are stored in Community Server 2007.&amp;nbsp; In this version, that traditional way of storing email fields in database columns is replaced with a new approach that lets an email to be extended and stored easily in the database.&amp;nbsp; This new approach is nothing more than serializing the &lt;em&gt;MailMessage&lt;/em&gt; object into XML format and storing this XML document in database.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=103533" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/07/how-to-write-a-custom-msbuild-task.aspx"&gt;How to Write a Custom MSBuild Task&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, September 07, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;When working on a chapter of my upcoming &lt;a href="http://nayyeri.net/archive/2007/07/23/my-new-book-professional-visual-studio-add-ins-and-extensions.aspx"&gt;Professional Visual Studio Add-ins and Extensions&lt;/a&gt; book, I wrote about MSBuild tasks and writing a custom task for custom scenarios.&amp;nbsp; Let me write a short description about it here as well.&lt;/p&gt; &lt;p&gt;Writing a custom MSBuild task consists of creating a class in an assembly which implements &lt;em&gt;ITask&lt;/em&gt; interface located in &lt;em&gt;Microsoft.Build.Framework&lt;/em&gt; assembly.&amp;nbsp; This &lt;em&gt;ITask&lt;/em&gt; interface class has two properties and a method to implement.&amp;nbsp; &lt;em&gt;BuildEngine&lt;/em&gt; and &lt;em&gt;HostObject&lt;/em&gt; are two properties to implement and Execute is a Boolean function to implement.&lt;/p&gt; &lt;p&gt;Not only you can implement this interface but also alternatively Microsoft has done a default implementation for &lt;em&gt;BuildEngine&lt;/em&gt; and &lt;em&gt;HostObject&lt;/em&gt; properties in &lt;em&gt;Task&lt;/em&gt; abstract base class located in &lt;em&gt;Microsoft.Build.Utilities&lt;/em&gt; assembly which you can use to override its &lt;em&gt;Execute&lt;/em&gt; function and do same job.&amp;nbsp; Obviously this is easier and I'm going to use this approach here.&lt;/p&gt; &lt;p&gt;First I create a class library project with a class and add reference to &lt;em&gt;Microsof.Build.Utilities&lt;/em&gt; assembly.&amp;nbsp; Now I derive my class from &lt;em&gt;Task&lt;/em&gt; abstract base class and implement this base class.&amp;nbsp; This implementation shouldn't have anything except an overridden &lt;em&gt;Execute&lt;/em&gt; method.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; Microsoft.Build.Utilities;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; MyTask&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MyTask&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;Task&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; Execute()&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Execute&lt;/em&gt; function must return true if task has executed successfully otherwise it must return false.&amp;nbsp; Here I override this function with a very simple logic to just log a string value as you see below.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; Microsoft.Build.Utilities;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; MyTask&lt;/p&gt; &lt;p style="margin: 0px"&gt;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MyTask&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;Task&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; Execute()&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.LogMessage(&lt;span style="color: #a31515"&gt;"Keyvan Nayyeri"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Now I compile this code into the assembly to get a DLL file.&amp;nbsp; After this I can write an MSBuild file to test my task.&lt;/p&gt; &lt;p&gt;To import this custom task to my MSBuild file I need to use a &lt;em&gt;&amp;lt;UsingTask&amp;gt;&lt;/em&gt; element which is a direct child of root &lt;em&gt;&amp;lt;Project&amp;gt;&lt;/em&gt; element.&amp;nbsp; This element has a &lt;em&gt;TaskName&lt;/em&gt; attribute to get the name of the task class and an &lt;em&gt;AssemblyFile&lt;/em&gt; attribute to get the name or address of the assembly where this class is implemented in.&lt;/p&gt; &lt;p&gt;So I create a very simple MSBuild file which uses a &lt;em&gt;&amp;lt;UsingTask&amp;gt;&lt;/em&gt; element to import my custom task and has a single target to use this task.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="color: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Project&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UsingTask&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;TaskName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;MyTask&lt;/span&gt;"&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: red"&gt;AssemblyFile&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;C:\Users\Keyvan Nayyeri\Documents\Visual Studio 2008\Projects\MyTask\MyTask\bin\Debug\MyTask.dll&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Target&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;MyTaskTarget&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;MyTask&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Target&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Project&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Running this MSBuild file, I get an output like what you see below.&amp;nbsp; Notice the "Keyvan Nayyeri" text in the output.&lt;/p&gt; &lt;p&gt;&lt;a href="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/HowtoWriteaCustomMSBuildTask_11217/Visual%20Studio%202008%20Beta%202%20Command%20Prompt%20(2)_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="257" alt="MSBuild Output" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/HowtoWriteaCustomMSBuildTask_11217/Visual%20Studio%202008%20Beta%202%20Command%20Prompt%20(2)_thumb.jpg" width="490" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;That's it!&amp;nbsp; I've covered this in the book in more details.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=102948" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/06/bioshock.aspx"&gt;BioShock&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, September 06, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;&lt;a href="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/BioShock_63B0/o_bioshock_2_3_2.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="300" alt="Wallpaper from Games2Wallpapers.com" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/BioShock_63B0/o_bioshock_2_3_thumb_1.jpg" width="400" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Recently whole the video game world were talking about &lt;a href="http://www.gamespot.com/xbox360/action/bioshock/index.html"&gt;BioShock&lt;/a&gt; as an amazing game!&amp;nbsp; So I decided to give it a try but couldn't buy it until this Monday.&amp;nbsp; After buying the game I played it in my very limited spare time on my Xbox 360 and so far I think I've gotten what I had to get from the game!&lt;/p&gt; &lt;p&gt;From the story point of view (you already know that this is a very important parameter for me), game doesn't have a good story in my opinion.&amp;nbsp; You just enter in Rapture, a city built under the sea, and play the game in different locations of this city.&amp;nbsp; Nothing is real (or at least looks like a real thing) in the story.&lt;/p&gt; &lt;p&gt;Graphic is excellent but not great.&amp;nbsp; Sounds&amp;nbsp;aren't very detailed but the way that they excite the fear makes them special.&amp;nbsp; Game is in the Science-Fiction First Person Shooter genre and is already familiar to most video game players!&lt;/p&gt; &lt;p&gt;I couldn't find a special point that has made this game famous and popular except one thing that is going to make me addicted to the game as well: game play!&amp;nbsp; The game play is very special.&amp;nbsp; Your capabilities and things that you can do with the environment attracts the player because the variety of these capabilities, gadgets, enemies and ...&amp;nbsp;makes everything new for you during the game so always you're surprised with something new and this attracts you to keep playing!&amp;nbsp; You don't have only one choice to go ahead, kill enemies and pass the mission.&amp;nbsp; Instead, you need to go in all directions to take different gadgets, keys and ... and then go back to other directions and follow the game with them.&lt;/p&gt; &lt;p&gt;On the other hand, even though you can't enjoy a great story but the particular kind of story which is mixed with fear puts you in a&amp;nbsp;position to follow the game!&lt;/p&gt; &lt;p&gt;All in all, I like the game and rate it 8.5/10 but unfortunately being so busy doesn't let me to finish it in a few days!&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=102054" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/05/silverlight-1-0-released.aspx"&gt;Silverlight 1.0 Released&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Wednesday, September 05, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="178" alt="Microsoft Silverlight" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/Silverlight1.0Released_7A43/silverlight_detail_1.jpg" width="240" border="0"&gt; &lt;/p&gt; &lt;p&gt;Finally Microsoft released &lt;a href="http://www.silverlight.net/"&gt;Silverlight 1.0&lt;/a&gt; RTW and it supports Linux via &lt;a href="http://www.mono-project.com/Moonlight"&gt;Moonlight&lt;/a&gt;&amp;nbsp;as a result of a partnership with Novell!&amp;nbsp; Read the official press announcement &lt;a href="http://www.microsoft.com/presspass/press/2007/sep07/09-04SilverlightPR.mspx"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;As you know, Silverlight has been a common topic on .NET community since last year when Microsoft put a primary focus on it in Mix and provided several resources and samples.&amp;nbsp; This new technology would be a major addition to Orcas and I'm happy to see another technology built on XAML!&lt;/p&gt; &lt;p&gt;If you're looking for a good resource to read more about Silverlight, as always Wrox is the lead and is going to release &lt;a href="http://www.amazon.com/gp/product/0470228407/105-9824668-8151608?ie=UTF8&amp;amp;tag=keyvannayyeri-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470228407"&gt;Silverlight 1.0&lt;/a&gt; book written by some well-known community members&amp;nbsp;this November!&lt;/p&gt; &lt;p&gt;&lt;a href="http://silverlight.net/GetStarted/"&gt;Here&lt;/a&gt; you can download the final version of runtime engine for Windows and Mac.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=101485" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/09/04/dataset-writexmlschema-and-dataset-readxmlschema-issue.aspx"&gt;DataSet.WriteXmlSchema and DataSet.ReadXmlSchema Issue&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Tuesday, September 04, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;P&gt;As a part of my implementation of Google Safe Browsing API in Subkismet project, I was working on an XML provider to store data in XML files and load them later.&amp;nbsp; One of approaches that I tried to test was using a &lt;EM&gt;DataSet&lt;/EM&gt; to store my data as XML and load it from the file to a &lt;EM&gt;DataSet&lt;/EM&gt; and generally building my provider based on XML manipulation features of DataSets.&amp;nbsp; When working on this code, I got in a trouble that I write in this post with a solution for that even though I didn't keep using this approach because of the performance and speed and am going to choose another approach to directly work with XML documents.&amp;nbsp; I never applied same solution to other&amp;nbsp;scenarios to face with&amp;nbsp;this error!&lt;/P&gt;
&lt;P&gt;But what was a the situation?&amp;nbsp; Let me give a simplified example here.&amp;nbsp; I was using a &lt;EM&gt;DataSet&lt;/EM&gt; to store and load my data and use its &lt;EM&gt;WriteXml()&lt;/EM&gt; and &lt;EM&gt;ReadXml()&lt;/EM&gt; methods in order to saves changes and retrieve data.&amp;nbsp; To load the initial schema of my &lt;EM&gt;DataSet&lt;/EM&gt;, I wrote a method to use the &lt;EM&gt;DataSet.WriteXmlSchema()&lt;/EM&gt; and write the schema to a stream and then use this stream in &lt;EM&gt;DataSet.ReadXmlSchema()&lt;/EM&gt; to retrieve my &lt;EM&gt;DataSet&lt;/EM&gt; schema.&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Collections.Generic;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Linq;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Text;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.IO;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Data;&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; DataSetIssues&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;{&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataManager&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; AddData(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; name, &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; age)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt; dataset = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt;();&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.ReadXmlSchema(GetSchema());&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MemoryStream&lt;/SPAN&gt; GetSchema()&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;MemoryStream&lt;/SPAN&gt; stream = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MemoryStream&lt;/SPAN&gt;();&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt; dataset = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"MyDataSet"&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;DataTable&lt;/SPAN&gt; table = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataTable&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"MyTable"&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; table.Columns.Add(&lt;SPAN style="COLOR: #a31515"&gt;"name"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;));&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; table.Columns.Add(&lt;SPAN style="COLOR: #a31515"&gt;"age"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;));&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.Tables.Add(table);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.AcceptChanges();&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.WriteXmlSchema(stream);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; stream;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;}&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Running this code, you'll get a runtime error when calling the &lt;EM&gt;DataSet.ReadXmlSchema()&lt;/EM&gt; by passing the result of &lt;EM&gt;GetSchema()&lt;/EM&gt; method.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/DataSet.WriteXmlSche.ReadXmlSchemaIssues_7DCE/DataSetIssues%20(Debugging)%20-%20Microsoft%20Visual%20Studio%20(3).jpg" atomicselection="true" mce_href="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/DataSet.WriteXmlSche.ReadXmlSchemaIssues_7DCE/DataSetIssues%20(Debugging)%20-%20Microsoft%20Visual%20Studio%20(3).jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=347 alt="XmlException - Root element is missing." src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/DataSet.WriteXmlSche.ReadXmlSchemaIssues_7DCE/DataSetIssues%20(Debugging)%20-%20Microsoft%20Visual%20Studio%20(3)_thumb.jpg" width=490 border=0 mce_src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/DataSet.WriteXmlSche.ReadXmlSchemaIssues_7DCE/DataSetIssues%20(Debugging)%20-%20Microsoft%20Visual%20Studio%20(3)_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Since this exception was an &lt;EM&gt;XmlException&lt;/EM&gt; and particularly about the structure of the file, I tried to check the actual content of XML document and after some debugging, I ended up with the following content for the stream.&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;version&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;?&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:schema&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyDataSet&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;""&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:xs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:msdata&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;urn:schemas-microsoft-com:xml-msdata&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyDataSet&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;msdata:IsDataSet&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;msdata:UseCurrentLocale&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:choice&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;maxOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;unbounded&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyTable&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;name&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:string&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;age&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:int&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:choice&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:schema&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Then I checked the content that comes directly out as an XML&amp;nbsp;file from &lt;EM&gt;DataSet.WriteXmSchema()&lt;/EM&gt;.&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;version&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;standalone&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;yes&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;?&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:schema&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyDataSet&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;""&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:xs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema&lt;/SPAN&gt;"&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:msdata&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;urn:schemas-microsoft-com:xml-msdata&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyDataSet&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;msdata:IsDataSet&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;msdata:UseCurrentLocale&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:choice&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;maxOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;unbounded&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyTable&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;name&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:string&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;age&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:int&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:choice&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:schema&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;On the other hand, the content of &lt;EM&gt;DataSet.GetXmlSchema()&lt;/EM&gt; was this:&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;version&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;utf-16&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;?&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:schema&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyDataSet&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;""&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:xs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema&lt;/SPAN&gt;"&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:msdata&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;urn:schemas-microsoft-com:xml-msdata&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyDataSet&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;msdata:IsDataSet&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;msdata:UseCurrentLocale&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:choice&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;maxOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;unbounded&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;MyTable&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;name&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:string&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;age&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:int&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:choice&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xs:schema&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;And the nice point was in either cases, &lt;EM&gt;DataSet.ReadXmlSchema()&lt;/EM&gt; was able to read the content without any problem.&amp;nbsp; The more interesting point was if I could store the content of stream into an XML file on hard drive and load it again to pass to&amp;nbsp;&lt;EM&gt;DataSet.ReadXmlSchema()&lt;/EM&gt;, it could work as well!&lt;/P&gt;
&lt;P&gt;At this point, I went back and forth and took a closer look at stack trace:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Xml.XmlTextReaderImpl.Throw(Exception e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Xml.XmlTextReaderImpl.ParseDocumentContent()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Xml.XmlTextReaderImpl.Read()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Xml.XmlTextReader.Read()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Xml.XmlReader.MoveToContent()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Data.DataSet.ReadXmlSchema(XmlReader reader, Boolean denyResolving)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Data.DataSet.ReadXmlSchema(Stream stream)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at DataSetIssues.DataManager.AddData(String name, Int32 age) in C:\Users\Keyvan Nayyeri\Documents\Visual Studio 2008\Projects\DataSetIssues\DataSetIssues\DataManager.cs:line 21&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at DataSetIssues.Program.Main(String[] args) in C:\Users\Keyvan Nayyeri\Documents\Visual Studio 2008\Projects\DataSetIssues\DataSetIssues\Program.cs:line 13&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ThreadHelper.ThreadStart_Context(Object state)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ThreadHelper.ThreadStart()&lt;/EM&gt; 
&lt;P&gt;This couldn't give more ideas but that &lt;EM&gt;XmlTextReader&lt;/EM&gt; that wants to parse the content of stream bit me that there is a problem with the position of cursor in the &lt;EM&gt;XmlTextReader&lt;/EM&gt; or most likely in the &lt;EM&gt;MemoryStream&lt;/EM&gt;.&amp;nbsp; Therefore I tried to reset the &lt;EM&gt;Position&lt;/EM&gt; property of &lt;EM&gt;MemoryStream&lt;/EM&gt; by hand to zero and yes, that solved the issue.&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Collections.Generic;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Linq;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Text;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.IO;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Data;&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; DataSetIssues&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;{&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataManager&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; path =&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #a31515"&gt;@"C:\Users\Keyvan Nayyeri\Documents\Visual Studio 2008\Projects\DataSetIssues\DataSetIssues\file.xml"&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; AddData(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; name, &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; age)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt; dataset = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt;();&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;MemoryStream&lt;/SPAN&gt; stream = GetSchema();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// The point is here&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stream.Position = 0;&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.ReadXmlSchema(stream);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;DataRow&lt;/SPAN&gt; row = dataset.Tables[&lt;SPAN style="COLOR: #a31515"&gt;"MyTable"&lt;/SPAN&gt;].NewRow();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; row[&lt;SPAN style="COLOR: #a31515"&gt;"name"&lt;/SPAN&gt;] = name;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; row[&lt;SPAN style="COLOR: #a31515"&gt;"age"&lt;/SPAN&gt;] = age;&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.Tables[&lt;SPAN style="COLOR: #a31515"&gt;"MyTable"&lt;/SPAN&gt;].Rows.Add(row);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.AcceptChanges();&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.WriteXml(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.path);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MemoryStream&lt;/SPAN&gt; GetSchema()&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;MemoryStream&lt;/SPAN&gt; stream = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MemoryStream&lt;/SPAN&gt;();&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt; dataset = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"MyDataSet"&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;DataTable&lt;/SPAN&gt; table = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataTable&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"MyTable"&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; table.Columns.Add(&lt;SPAN style="COLOR: #a31515"&gt;"name"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;));&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; table.Columns.Add(&lt;SPAN style="COLOR: #a31515"&gt;"age"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;));&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.Tables.Add(table);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.AcceptChanges();&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataset.WriteXmlSchema(stream);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; stream;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;}&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Now the root element is not missing!&amp;nbsp; As you see, the exception text wasn't related to the actual issue at all.&amp;nbsp; On the other hand, in my honest opinion, behind the scenes, &lt;EM&gt;DataSet.ReadXmlSchema()&lt;/EM&gt; should check for the position of the stream that is passed to it and reset the value if&amp;nbsp;necessary!&amp;nbsp; I wrote the actual code in .NET 2.0 but wrote this simpler sample in .NET 3.5 and see this issue here as well!&lt;/P&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=100858" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/08/31/update-visual-studio-2005-add-ins-for-visual-studio-2008.aspx"&gt;Update Visual Studio 2005 Add-ins for Visual Studio 2008&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, August 31, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;A blog&amp;nbsp;post by Andreas Erben about &lt;a href="http://developers.de/blogs/andreas_erben/archive/2007/08/01/using-copysourceashtml-with-visual-studio-2008-beta-2.aspx"&gt;updating CopySourceAsHtml add-in for Visual Studio 2008 Beta 2&lt;/a&gt; (which was a part of &lt;a href="http://www.hanselman.com/blog/ScottHanselmans2007UltimateDeveloperAndPowerUsersToolListForWindows.aspx" rel="acquaintance"&gt;Scott Hanselman's Ultimate Developer Tools 2007&lt;/a&gt;) bit me to write this point and give a more general description about updating your Visual Studio 2005 add-ins for Visual Studio 2008.&amp;nbsp; I know working on this stuff for the book makes me old!!&lt;/p&gt; &lt;p&gt;In general, you can upgrade a Visual Studio 2005 add-in for Visual Studio 2008 by copying its DLL file, add-in file and configuration file to the &lt;em&gt;Addins&lt;/em&gt; folder of Visual Studio 2008 storage folder in your documents and making some changes as follows.&lt;/p&gt; &lt;p&gt;You need to open the add-in file (which has a .AddIn extension).&amp;nbsp; This file has an add-in icon which makes it different from other files.&amp;nbsp; This add-in file is an XML document with a special structure and has an XML namespace set to &lt;em&gt;http://schemas.microsoft.com/AutomationExtensibility&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;I don't want to talk about the structure of this file here.&amp;nbsp; You can order my book when it came out to learn these things!!&amp;nbsp; But there is one point to update add-ins to Visual Studio 2008.&lt;/p&gt; &lt;p&gt;As you see in the XML file, there are one or two &lt;em&gt;&amp;lt;HostApplication /&amp;gt;&lt;/em&gt; elements that have a child &lt;em&gt;&amp;lt;Version /&amp;gt;&lt;/em&gt; element.&amp;nbsp; For Visual Studio 2005 add-ins this is set to 8.0 which is the internal version of Visual Studio Whidbey.&amp;nbsp; For example, for CopySrouceAsHtml 2005 it's like this:&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;UTF-16&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;standalone&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;no&lt;/span&gt;"&lt;span style="color: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Extensibility&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/AutomationExtensibility&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;HostApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Microsoft Visual Studio Macros&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;8.0&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;HostApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;HostApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Microsoft Visual Studio&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;8.0&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;HostApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Addin&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;FriendlyName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;CopySourceAsHtml&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;FriendlyName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Adds support to Microsoft Visual Studio 2005 for copying source code, syntax highlighting, and line numbers as HTML.&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Assembly&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;CopySourceAsHtml.dll&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Assembly&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;FullClassName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;JTLeigh.Tools.CopySourceAsHtml.Connect&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;FullClassName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;LoadBehavior&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;5&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;LoadBehavior&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CommandPreload&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;CommandPreload&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CommandLineSafe&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;CommandLineSafe&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Addin&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Extensibility&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;The first &lt;em&gt;&amp;lt;HostApplication /&amp;gt;&lt;/em&gt; element is for Visual Studio Macros IDE and targets add-ins in this environment and the second &lt;em&gt;&amp;lt;HostApplication /&amp;gt;&lt;/em&gt; element is for main Visual Studio IDE.&amp;nbsp; You can update the &lt;em&gt;&amp;lt;Version /&amp;gt;&lt;/em&gt; element of these elements to 9.0 (which is the internal version of Visual Studio Orcas) in order to make them work for Visual Studio 2008.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;UTF-16&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;standalone&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;no&lt;/span&gt;"&lt;span style="color: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Extensibility&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/AutomationExtensibility&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;HostApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Microsoft Visual Studio Macros&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;9.0&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;HostApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;HostApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Microsoft Visual Studio&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;9.0&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;HostApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Addin&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;FriendlyName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;CopySourceAsHtml&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;FriendlyName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Adds support to Microsoft Visual Studio 2005 for copying source code, syntax highlighting, and line numbers as HTML.&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Assembly&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;CopySourceAsHtml.dll&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Assembly&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;FullClassName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;JTLeigh.Tools.CopySourceAsHtml.Connect&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;FullClassName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;LoadBehavior&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;5&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;LoadBehavior&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CommandPreload&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;CommandPreload&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CommandLineSafe&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;CommandLineSafe&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Addin&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Extensibility&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;After doing this, your add-ins will be loaded with Visual Studio (and its Macros IDE) and are accessible via Add-in Manager dialog.&lt;/p&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="290" alt="Add-in Manager" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/UpdateVisualStudio2005AddinstoVisualStud_12B99/Add-in%20Manager_1.jpg" width="440" border="0"&gt; &lt;/p&gt; &lt;p&gt;As Microsoft hasn't changed previous DTE structure and just added new features beside it, almost all Visual Studio 2005 add-ins should work with Visual Studio 2008 unless they use a very special API that is changed in Orcas.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=99361" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/08/30/blogml-official-website-reloaded.aspx"&gt;BlogML Official Website Reloaded&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, August 30, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Earlier this month, I announced the availability of &lt;a href="http://nayyeri.net/archive/2007/08/09/blogml-official-website-goes-live.aspx"&gt;BlogML official website&lt;/a&gt; powered by DotNetNuke ASP.NET portal.&amp;nbsp; I also stated that neither me nor&amp;nbsp;&lt;a href="http://markitup.com" rel="friend"&gt;Darren&lt;/a&gt; liked to use DotNetNuke for several reasons but there wasn't a better solution for us at that time.&lt;/p&gt; &lt;p&gt;After that announcement, some Telligenti's began some conversations and moved them to me about the support for Wiki and Knowledge Base applications in Community Server.&amp;nbsp; The result of these conversations was a big favor of Telligent, especially Rob Howard and Jason Alexander, to our open source project to let us use a completely private part of Community Server.&amp;nbsp; Telligent has been using these applications on Community Server website for its official documentation but never released it to public.&amp;nbsp; These applications were under development smoothly inside Telligent.&amp;nbsp; This decision was a good reason for us to suddenly change our mind and uninstall DotNetNuke and replace it with Community Server and move it to a VPS.&lt;/p&gt; &lt;p&gt;Right now, &lt;a href="http://blogml.org/"&gt;site is up&lt;/a&gt; but is&amp;nbsp;in&amp;nbsp;a very pure state.&amp;nbsp; We're going to add new sections in the future but this migration had some changes in its core and they were the addition of forums and downloads sections to the site.&amp;nbsp; Now we're going to close our forums and downloads on workspace and move them to official website to have a better control on them and enjoy the great features of best forum application around the world!&amp;nbsp; We've created forums for specification, core APIs and all related blogging tools to provide better support for our users.&lt;/p&gt; &lt;p&gt;Wiki&amp;nbsp;application of Community Server still needs more work but we've trusted on it because its current features and power are absolutely better than what we had in DotNetNuke.&amp;nbsp; We also hope that we can help Telligent and Wiki developers to figure out possible bugs and issues and improve it and keep our site up to date with latest bits.&amp;nbsp; I've joint to Community Server Wiki developers to get my hands on code and participate on &lt;strike&gt;improving it&lt;/strike&gt; destroying it!!&lt;/p&gt; &lt;p&gt;So far we're so happy with this migration and I feel better now!&amp;nbsp; At least,&amp;nbsp;&lt;a href="http://notgartner.wordpress.com/" rel="acquaintance"&gt;Mitch&lt;/a&gt; can't send us some private messages and emails anymore!!&lt;/p&gt; &lt;p&gt;Here I should thank some guys who helped us on getting started with Community Server.&amp;nbsp; First of all, &lt;a href="http://weblogs.asp.net/rhoward" rel="acquaintance"&gt;Rob&lt;/a&gt;, himself, for his special attention to our project and generally to .NET community.&amp;nbsp; I personally like the way&amp;nbsp;he manages his company with others including &lt;a href="http://jasona.net/" rel="acquaintance"&gt;Jason Alexander&lt;/a&gt;, the second man who kept up on this thread to make sure we're set up with Community Server.&amp;nbsp; And also to&amp;nbsp;&lt;a href="http://ooto.info/" rel="acquaintance"&gt;Ado&lt;/a&gt; and&amp;nbsp;&lt;a href="http://community.reszler.org/blogs/wizz" rel="friend"&gt;Rick&lt;/a&gt; for helping me on details of this site.&amp;nbsp; The process wasn't straightforward and we fall in some issues but they helped me to get it done!&lt;/p&gt; &lt;p&gt;Now we're looking for some guys who help us on documentation and also we're going to define a roadmap and take off to next version in near future.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=98808" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/08/29/my-new-pocket-pc-htc-p4350.aspx"&gt;My New Pocket PC: HTC P4350&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Wednesday, August 29, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="254" alt="HTC P4350 (taken from http://www.trustedreviews.com/mobile-devices/review/2007/03/29/HTC-P4350/p1)" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/MyNewPocketPCHTCP4350_936C/4317-HTCP4350FLATOPEN261006_1.jpg" width="370" border="0"&gt;&lt;/p&gt; &lt;p&gt;Over the past 3.5 years, I've been using a Qtek 2020 Pocket PC to manage my&amp;nbsp;business life!&amp;nbsp; That PPCPE had Windows Mobile 2003 installed by default but I upgraded its ROM image to Windows Mobile 2003 Second Edition.&amp;nbsp; I was a member of first groups of the wave of people who&amp;nbsp;bought Windows Mobile devices here (Symbian is the most popular OS locally!).&amp;nbsp; For almost two years, it was an excellent device for me but after new releases of Windows Mobile and breaking some parts of its LCD, I didn't attend to it anymore!&amp;nbsp; Beginning my service and being busy with it was another reason to leave thinking about it.&lt;/p&gt; &lt;p&gt;But recently I felt that I need to return to smart devices for some reasons so decided to try to buy a new device.&amp;nbsp; I had some choices both from Blackberry and some Pocket PC brands.&amp;nbsp; After asking&amp;nbsp;friends for their experiments and reading reviews, I found that Pocket PC is still better for me!&amp;nbsp; In several Pocket PC brands, HTC Touch was a recommendation by friends and seemed to be good option.&amp;nbsp; I looked for it in the markets and when I was going to buy it, a friend in military office stopped me and began reading reviews on the web.&amp;nbsp; After a few minutes he got back to me and said Touch doesn't seems to have a good performance!&amp;nbsp; I checked those reviews and got it!&amp;nbsp; A few other guys confirmed this as well. As I was interested to buy a HTC device, took a look at other brands and found &lt;a href="http://www.htc.com/product/03-product_p4350.htm"&gt;P4350&lt;/a&gt; as a suitable deal for myself!&amp;nbsp; And finally yesterday I bought it!&lt;/p&gt; &lt;p&gt;It had Windows Mobile 5.0 installed but when I got back to home and checked HTC website, saw that HTC is offering free ROM upgrade for this model to Windows Mobile 6.0!&amp;nbsp; Great!&amp;nbsp; In a few minutes I upgraded my device to Windows Mobile 6.0 and now it's working very well.&lt;/p&gt; &lt;p&gt;So far I'm happy with this device and am enjoying it!&amp;nbsp; After a while, now I have a better management on my life and am going to install some useful applications on it.&lt;/p&gt; &lt;p&gt;In my opinion it has a very good design, dimensions and weight.&amp;nbsp; Its keyboard and good LCD are very helpful and&amp;nbsp;positive points for it!&amp;nbsp; You can forget that hacked iPhone and trust on better devices!&lt;/p&gt; &lt;p&gt;On the other hand, last week I bought another Pocket PC for my sister: &lt;a href="http://www.imate.com/t-DETAILS_PDAL.aspx"&gt;i-mate PDAL&lt;/a&gt;.&amp;nbsp; It's a great deal for her&amp;nbsp;as well.&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=98023" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/08/27/community-server-2007-service-pack-3-pre-release.aspx"&gt;Community Server 2007 Service Pack 3 Pre-Release&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Tuesday, August 28, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Jose Lema announces &lt;a href="http://communityserver.org/blogs/announcements/archive/2007/08/27/community-server-2007-sp3-pre-release.aspx"&gt;Community Server 2007 Service Pack 3 Beta release&lt;/a&gt; on Community Server site.&amp;nbsp; This Beta release has 3.0.20827.1108 as its build number.&amp;nbsp; There is a huge list of enhancements and bug fixes available in the download packages and on the announcement post.&lt;/p&gt; &lt;p&gt;A few days ago I installed an earlier pre-release package on my site (build 3.0.20823.1100).&amp;nbsp; There were a few issues for me that I reported back to the team and they're fixed in this build.&amp;nbsp; In my opinion this is a major service pack in comparison with service packs 1 and 2.&lt;/p&gt; &lt;p&gt;I'm going to install this version on my site after getting back to home from the service!&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=97209" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/08/27/synonyms-in-sql-server-2005.aspx"&gt;Synonyms in SQL Server 2005&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, August 27, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Naming conventions are always a big concern&amp;nbsp;for developers whether they're an application developer or database developers!&amp;nbsp; Naming tables, columns, views, stored procedures and other objects in a database sometimes gets harder than what&amp;nbsp;we think, especially when we're working on multiple objects with same name from two different databases, tables or ...&lt;/p&gt; &lt;p&gt;SQL Server 2005 introduced a new feature for synonyms that come handy to assign alternative names for a database object in order to work with it easier.&amp;nbsp; CREATE SYNONYM is a new statement that lets you assign these alternative names.&lt;/p&gt; &lt;p&gt;You can define a synonym on a two-part, three-part or four-part object name.&amp;nbsp; The scope of synonyms is limited to the database where they're defined in!&amp;nbsp; Synonyms can be defined for some objects like:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Table  &lt;li&gt;View  &lt;li&gt;Stored Procedure  &lt;li&gt;Function  &lt;li&gt;Replication filter procedure  &lt;li&gt;Extended stored procedure&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Let me give an example.&amp;nbsp; Suppose that I have a database named &lt;em&gt;MyDB&lt;/em&gt; with a table named &lt;em&gt;MyTable&lt;/em&gt;.&amp;nbsp; This table contains three columns: &lt;em&gt;ID&lt;/em&gt;, &lt;em&gt;Name&lt;/em&gt; and &lt;em&gt;Age&lt;/em&gt;.&amp;nbsp; I create some sample data in this table.&lt;/p&gt; &lt;p&gt;Now I can assign an alternative name to &lt;em&gt;MyTable&lt;/em&gt; like &lt;em&gt;AltMyTable&lt;/em&gt; as you see.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;CREATE &lt;/span&gt;SYNONYM dbo.AltMyTable &lt;span style="color: blue"&gt;FOR &lt;/span&gt;MyTable&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;SELECT &lt;/span&gt;* &lt;span style="color: blue"&gt;FROM &lt;/span&gt;AltMyTable&lt;/p&gt;&lt;/div&gt; &lt;p&gt;This simply returns data from MyTable.&lt;/p&gt; &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="107" alt="Output" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/SynonymsinSQLServer2005_11BB2/Snap2_1.jpg" width="400" border="0"&gt; &lt;/p&gt; &lt;p&gt;As another example, I also create a simple stored procedure to select data from &lt;em&gt;MyTable&lt;/em&gt; and name it &lt;em&gt;SelectData&lt;/em&gt;.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;IF EXISTS &lt;/span&gt;(&lt;span style="color: blue"&gt;SELECT &lt;/span&gt;* &lt;span style="color: blue"&gt;FROM &lt;/span&gt;sysobjects &lt;span style="color: blue"&gt;WHERE &lt;/span&gt;type = &lt;span style="color: maroon"&gt;'P' &lt;/span&gt;&lt;span style="color: blue"&gt;AND name &lt;/span&gt;= &lt;span style="color: maroon"&gt;'SelectData'&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;BEGIN&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;DROP &lt;/span&gt;&lt;span style="color: blue"&gt;Procedure &lt;/span&gt;Stored_Procedure_Name&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;END&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;GO&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;CREATE Procedure &lt;/span&gt;SelectData&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;AS&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;SELECT &lt;/span&gt;* &lt;span style="color: blue"&gt;FROM &lt;/span&gt;MyTable&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;GO&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Now I assign a new name like &lt;em&gt;SelectMyData&lt;/em&gt; to this stored procedure.&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;CREATE &lt;/span&gt;SYNONYM dbo.SelectMyData &lt;span style="color: blue"&gt;FOR &lt;/span&gt;SelectData&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;EXECUTE &lt;/span&gt;SelectMyData&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="106" alt="Output" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/SynonymsinSQLServer2005_11BB2/Snap3_1.jpg" width="400" border="0"&gt; &lt;/p&gt; &lt;p&gt;You can also check your synonyms from the explorer easily.&lt;/p&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="165" alt="Snap3" src="http://nayyeri.net/misc/keyvan/WindowsLiveWriter/SynonymsinSQLServer2005_11BB2/Snap3_3.jpg" width="220" border="0"&gt;&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=96990" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/08/26/community-server-developer-conference-2007.aspx"&gt;Community Server Developer Conference 2007&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, August 27, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;In July &lt;a href="http://weblogs.asp.net/rhoward/archive/2007/07/27/community-server-developer-conference.aspx"&gt;Rob,&lt;/a&gt; &lt;a href="http://scottwater.com/blog/archive/CSDC/"&gt;Scott&lt;/a&gt; and others wrote about &lt;a href="http://csdc.eventbrite.com/"&gt;Community Server Developer Conference (CSDC)&lt;/a&gt; that will be held on October 20th and 21st.&lt;/p&gt; &lt;p&gt;As I can't attend any of these conferences before ending the hell (hell is approximately equal to military service!), didn't write about it that time.&amp;nbsp; Yesterday&amp;nbsp;at hell office, the man who directly works with me on software material was checking his mailbox and received a newsletter that was informing him about this event.&amp;nbsp; He knows that I'm a Community Server fan but I didn't let them know how much do I know of technical stuff to avoid further troubles for myself.&amp;nbsp; After reading that email, he said that "Hey, Community Server has a conference, don't you want to attend?!".&amp;nbsp; And I answered that "Now?&amp;nbsp; Of course, we'll attend with the private who's working with us because they have sent an invitation to our military organization to attend!" and I laughed at them!&amp;nbsp; He said "Didn't you know about the event?" and I replied back "No, I don't follow Community Server news since I came here!".&amp;nbsp; What a good&amp;nbsp;liar I am!!&amp;nbsp; Of course, I'm pretty sure that they're stupid enough to not check and&amp;nbsp;read this blog!&lt;/p&gt; &lt;p&gt;However, what a shame for me when they talk about this stuff and I don't!&amp;nbsp; So here you are!&amp;nbsp; If you're a Community Server fan, this is a good opportunity to meet other folks and learn some new stuff so go ahead and register for it.&amp;nbsp; I asked some friends and know that many folks are going to attend!&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=96818" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://nayyeri.net/archive/2007/08/23/blogml-to-wordpress-importer.aspx"&gt;BlogML to WordPress Importer&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, August 24, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://nayyeri.net/rss.aspx" target="_blank"&gt;Keyvan Nayyeri&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Back in July, I &lt;a href="http://nayyeri.net/archive/2007/07/21/blogger-to-blogml-exporter-with-powershell.aspx"&gt;wrote&lt;/a&gt; about the &lt;a href="http://www.aaronlerch.com/blog/2007/07/21/export-blogger-blogs-to-blogml-with-powershell/"&gt;PowerShell script&lt;/a&gt; that Aaron Lerch had&amp;nbsp;designed to export Blogger content to BlogML in order to migrate his blog from Blogger to WordPress.&lt;/p&gt; &lt;p&gt;He has done it again by writing a &lt;a href="http://www.aaronlerch.com/blog/2007/08/23/breaking-up-moving-blog-engines/"&gt;BlogML to WordPress importer tool&lt;/a&gt; with PHP.&amp;nbsp; He gives more details about this tool on his blog&amp;nbsp;which is now powered by WordPress.&lt;/p&gt; &lt;p&gt;This is very nice because we had an &lt;a href="http://nayyeri.net/archive/2007/05/07/wordpress-blogml-export.aspx"&gt;export tool from WordPress to BlogML&lt;/a&gt; written by &lt;a href="http://www.windows-now.com/blogs/robert/" rel="acquaintance"&gt;Robert McLaws&lt;/a&gt; and now there is an import tool available as well.&amp;nbsp; Officially we define a blog engine as BlogML support when it has import and export tools both.&lt;/p&gt; &lt;p&gt;For a long time, we've been requesting BlogML support from WordPress guys (this "we" refers to .NET community members not me and Darren!) but they never responded to us!&amp;nbsp; Now both import and export tools for WordPress are written with .NET developers.&amp;nbsp; I'm sorry to see such a behavior from PHP community!&lt;/p&gt;&lt;img src="http://nayyeri.net/aggbug.aspx?PostID=95389" width="1" height="1"&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br /&gt;&lt;div class="rss"&gt;
&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://markitup.com/Posts/Post.aspx?postId=8777f952-e157-45ae-922b-65de57536b60"&gt;Non-Nerd&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, September 17, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://feeds.feedburner.com/MarkItUp" target="_blank"&gt;MarkItUp - Thinking Products...&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;... although I'm sure that my nerdiness just jumped due to the fact that I'm posting an "I'm not a nerd" image to my blog while eating breakfast! &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://www.nerdtests.com/nt2ref.html"&gt;&lt;img alt="NerdTests.com says I'm a Non-Nerd.  What are you?  Click here!" src="http://www.nerdtests.com/images/badge/nt2/db61c1a6e7aa1e82.png"&gt; &lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://markitup.com/Posts/Post.aspx?postId=81c175eb-ad63-428f-8399-c2896e1e8fe2"&gt;Typing speed&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, September 15, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://feeds.feedburner.com/MarkItUp" target="_blank"&gt;MarkItUp - Thinking Products...&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Like &lt;a href="http://notgartner.com"&gt;Mitch&lt;/a&gt;, I also took the &lt;a href="http://www.typequick.com/ttest/testyourskills.html"&gt;typing speed test&lt;/a&gt;:&lt;/p&gt; &lt;p&gt;&lt;img src="http://markitup.com/Data/Images/TypingSpeed.PNG"&gt; &lt;/p&gt; &lt;p&gt;Not bad, but not as fast as Mitch was though:&lt;/p&gt; &lt;p&gt;&lt;img src="http://notgartner.files.wordpress.com/2007/09/image-thumb26.png?w=364&amp;amp;h=262"&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Although my accuracy was better than his.&amp;nbsp; I think that, for your typing speed to be "official", you need to be able to sustain it at 98% accuracy for 3 minutes.&lt;/p&gt; &lt;p&gt;As a side note... I might have been slowed slightly by the fact that I was enjoying reading about population control as I typed.&amp;nbsp; I actually learned a couple of things during the test that were interesting! &lt;img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif"&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Update:&lt;/font&gt;&lt;/strong&gt;&lt;br&gt;I quick tweak to my technique seems to have pushed my speed over the elusive 120 wpm &lt;img alt="smile_nerd" src="http://spaces.live.com/rte/emoticons/smile_nerd.gif"&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img src="http://markitup.com/Data/Images/TypingSpeed1.PNG"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://markitup.com/Posts/Post.aspx?postId=36ba7603-962a-45ef-a0ff-e36520bec4fb"&gt;Live Applications&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Sunday, September 09, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://feeds.feedburner.com/MarkItUp" target="_blank"&gt;MarkItUp - Thinking Products...&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;This week I installed the &lt;a href="http://get.live.com/wl/all"&gt;new Live desktop applications&lt;/a&gt; and have been using them on my 3 Vista computers.&amp;nbsp; I'm liking some of the integration that you get between these.&amp;nbsp; For example, yesterday we went across to the local park to fly kites and, I had my phone on me so I took some photos:&lt;/p&gt; &lt;p&gt;&lt;img height="245" src="http://byfiles.storage.live.com/y1pnA57zcZ2AV-L2PMAl915IM9gwJ-d8hHqAilTAdMO-uEtR1gx6fhGPV8z9MdEFDUJMj8ORe7EJzgLnU4REoviv7w0ywdj4Bs7" width="326"&gt;&amp;nbsp; &lt;img height="245" src="http://byfiles.storage.live.com/y1pnA57zcZ2AV8IIFBNGOEREF1uUktBwMEhxVhb5jAVrAesv2ilTnCfqVFoIbYDLUwUmMYnvdvHY-fIOrjGKM_6QbpDHez-49o4" width="326"&gt; &lt;/p&gt; &lt;p&gt;When I got back home, I plugged my phone into my TabletPC and imported the photos from my phone straight into the new Windows Live Photo Gallery.&amp;nbsp; From there I used the new "stitch" feature to create the following landscape photo from 3 of the photos:&lt;/p&gt; &lt;p&gt;&lt;img src="http://byfiles.storage.live.com/y1pnA57zcZ2AV8yqRJxvD-p9ItemK771_YNlevkqPRnT8Hd_oSKuzGofXX2t6nSuI30XLZyuDX3fk10Kmu2eT-wh3nJYG73b3pJ"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The I used the 'Publish' option within Windows Live Photo Gallery to publish those photos directly to my Live Space:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a title="http://showusyourcode.spaces.live.com/default.aspx" href="http://showusyourcode.spaces.live.com/default.aspx"&gt;http://showusyourcode.spaces.live.com/default.aspx&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Now I'm using Windows Live Writer - another of the new Live applications - to blog about it.&amp;nbsp; It would be nice if Windows Live Writer was slightly more integrated with Live so that the 'Insert Picture' module could be configured to pull pictures straight from my Live Space without me having to get the URL's from the Spaces web site.&lt;/p&gt; &lt;p&gt;It's taken a while, but Live's 'Software + Services' stuff is finally starting to take shape.&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://markitup.com/Posts/Post.aspx?postId=e502535f-c930-489c-8519-9de4718148e5"&gt;10 Future Web Trends&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, September 06, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://feeds.feedburner.com/MarkItUp" target="_blank"&gt;MarkItUp - Thinking Products...&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;What then can we expect from the next 10 or so years on the Web? As &lt;a href="http://www.readwriteweb.com/archives/poll_top_web_technology_10_years.php#c018960"&gt;NatC commented&lt;/a&gt; in this week's poll, the biggest impact of the Web in 10 years time won't necessarily be via a computer screen - "your online activity will be mixed with your presence, travels, objects you buy or act with." Also a lot of crossover will occur among the 10 trends below (and more) and there will be Web technologies that become enormously popular that we can't predict now. &lt;p&gt;Bearing all that in mind, here are 10 Web trends to look out for over the next 10 years...&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://www.readwriteweb.com/archives/10_future_web_trends.php"&gt;10 Future Web Trends&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Good read.&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://markitup.com/Posts/Post.aspx?postId=d573a77b-c871-43f6-ad07-9d341e95f984"&gt;Serialization Exceptions when calling Web Services from Ajax&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Tuesday, September 04, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://feeds.feedburner.com/MarkItUp" target="_blank"&gt;MarkItUp - Thinking Products...&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Today I was calling a web service from an Ajax client in an application that I'm working on and I noticed that I wasn't getting any results.&amp;nbsp; To get a better idea of what was going on, I wired up the error handler for the web service call and did some tracing to see the error message.&amp;nbsp; The error handling code that I added looked like this:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;var msg = String.format(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Stack trace: {0}\nService Error: {0}\nMessage: {1}\nStatus Code: {2}\nException Type: {3}\nTimed out: {4}", &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; error.get_stackTrace(),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; error.get_message(),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; error.get_statusCode(),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; error.get_exceptionType(),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; error.get_timedOut()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );  &lt;p&gt;Sys.Debug.trace(msg);&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I re-ran the application and this is the exception that was getting returned:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Stack trace:&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal...&lt;br&gt;Message: Specified cast is not valid.&lt;br&gt;Status Code: 500&lt;br&gt;Exception Type: System.InvalidCastException&lt;br&gt;Timed out: false&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The exception was telling me that there was a serialization problem with the Type being returned from the web service call.&amp;nbsp; This was interesting to me because I had just changed the return Type of the ws method call.&amp;nbsp; I initially wondered whether there was some generated JS type that was cached and that the new Type that I was returning was different from it.&amp;nbsp; That seemed unlikely though so I looked at the members on the new Type that I was returning.&amp;nbsp; There was a Guid, an Int32, a custom Enum, and a string.&amp;nbsp; Hrmm.&amp;nbsp; I decided to remove the Enum property from the Type to see whether it was causing the failure, and sure enough, my application ran fine.&amp;nbsp; Here's the Enum that I was using:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;public enum PinType : short {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Standard = 0,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Favourite = 1,&lt;br&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Next I added the enum based property back but I changed the enum so that it was a standard Int32-based one.&amp;nbsp; Again, it ran fine... so the problem is obviously that the built in JavaScriptSerializer cannot handle short's.&amp;nbsp; In my case I just decided to cut my losses and leave my enum inheriting from Int32, but here's an article that describes a bit about how to implement your own custom Json serializer to use with non-supported Types:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a title="http://www.asp.net/ajax/documentation/live/mref/T_System_Web_Script_Serialization_JavaScriptConverter.aspx" href="http://www.asp.net/ajax/documentation/live/mref/T_System_Web_Script_Serialization_JavaScriptConverter.aspx"&gt;http://www.asp.net/ajax/documentation/live/mref/T_System_Web_Script_Serialization_JavaScriptConverter.aspx&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;When you have written your custom converter you can either add it programatically or via the web configuration file like so:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;jsonSerialization maxJsonLength="500"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;converters&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="MyConverter" &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type="MarkItUp.CustomEnumTypeConverter"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/converters&amp;gt;&lt;br&gt;&amp;lt;/jsonSerialization&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://markitup.com/Posts/Post.aspx?postId=a59f3608-a43e-4e8d-8249-44b3dd7af63e"&gt;BBC World Service - A high quality online resource&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Sunday, September 02, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://feeds.feedburner.com/MarkItUp" target="_blank"&gt;MarkItUp - Thinking Products...&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;The BBC website is a truly great resource with heaps of quality archives of content such as podcasts, special features, interviews, and programs.&amp;nbsp; As an example, yesterday while I was travelling in the car to hockey, I was listening to the BBC World Service via our own Australian ABC radio channel.&amp;nbsp; On the radio at the time there was an interview with &lt;em&gt;Stewart Butterfield, one of the creators of &lt;/em&gt;&lt;a href="http://flickr.com"&gt;&lt;em&gt;Flickr&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&amp;nbsp; &lt;/em&gt;As I was listening to this interview, &lt;a href="http://notgartner.com"&gt;Mitch&lt;/a&gt; rang&amp;nbsp; - and I mentioned to him about the interview.&amp;nbsp; When Mitch asked for a link to the interview audio file I told him that I was listening to it in the car on the radio but that I'd chase up the link when I got home.&amp;nbsp; Sure enough, a quick search shows that the BBC already have the audio file uploaded and available for listening to:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://www.bbc.co.uk/worldservice/programmes/the_interview.shtml"&gt;BBC World Service | Interview with Stewart Butterfield&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://markitup.com/Posts/Post.aspx?postId=06d84a3f-0a3a-47aa-b456-9f8c4a7e5cfe"&gt;A way to build .NET 3.5 Applications with Team Build 2005&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, September 01, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://feeds.feedburner.com/MarkItUp" target="_blank"&gt;MarkItUp - Thinking Products...&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;Have you downloaded VS2008 and started using it to create .NET 3.5 solutions?&amp;nbsp; Pretty cool huh... inbuilt support for ASP.NET Ajax projects and all the goodness that we get from Linq too.&amp;nbsp; What about your development environment?&amp;nbsp; Are you using TFS to manage your source control and build processes?&amp;nbsp; If you answered "yes" to both of those questions then I'll bet that, like me, you've been horrified to learn that you cannot build Visual Studio 2008 and .NET 3.5 projects natively with your existing TFS 2005 environment.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Thankfully, over on the &lt;a href="http://tfsnow.wordpress.com/"&gt;TFSNow blog&lt;/a&gt;, &lt;a href="http://notgartner.com"&gt;Mitch&lt;/a&gt; has just posted the following article which comes to the rescue:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://tfsnow.wordpress.com/2007/08/31/building-net-35-applications-with-team-build-2005/"&gt;Building .NET 3.5 Applications with Team Build 2005 « TFS Now&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I'm so grateful to Mitch for spelunking his way around to find these solutions for us.&amp;nbsp; Over the past 2 weeks, as &lt;a href="http://readify.net/"&gt;we've&lt;/a&gt;&amp;nbsp;started developing VS2008 solutions which target the .NET 3.5 runtime, it's been very frustrating not having CI and all the goodness that comes with doing automated builds.&amp;nbsp; Now thanks to Mitch&amp;nbsp;we can forge ahead&amp;nbsp;using .NET 3.5&amp;nbsp;with all its Linq'y goodness while still&amp;nbsp;being able to keep&amp;nbsp;our automated build and deployment processes in place.&amp;nbsp; That's what I call having your cake and eating it too! &lt;img alt="cake" src="http://spaces.live.com/rte/emoticons/cake.gif"&gt;&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://markitup.com/Posts/Post.aspx?postId=6eeb1e79-a451-4f56-80b1-4465431910ea"&gt;Silverlight meeting in SL tonight&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, August 30, 2007&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://feeds.feedburner.com/MarkItUp" target="_blank"&gt;MarkItUp - Thinking Products...&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;Event Details:&lt;/u&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;Guest Speaker: &lt;/b&gt;Brad Abrams, Group Program Manager, .NET Framework  &lt;p&gt;&lt;b&gt;When&lt;/b&gt;: Thursday, August 30th, 3 – 4 PM PST  &lt;p&gt;&lt;b&gt;Where&lt;/b&gt;: Visual Studio Island Auditorium in Second Life  &lt;p&gt;&amp;nbsp; &lt;p&gt;Here’s the SLURL:&lt;a href="http://slurl.com/secondlife/Microsoft/101/123/30/"&gt;http://slurl.com/secondlife/Microsoft/101/123/30/&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Here’s a Silverlight poster that you can get for free from in the auditorium: &lt;p&gt;&lt;img height="289" src="http://markitup.com/Data/Images/SliverlightSL.PNG" width="451"&gt;&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>Keyvan</author><pubDate>Sat, 22 Sep 2007 01:22:09 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: News Feeds 20070922012209A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=18</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Forums have been moved
&lt;/h1&gt; &lt;br /&gt;Now you can send your forum posts to our official &lt;a href="http://blogml.org/forums/" class="externalLink"&gt; forums&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=News%20Feeds&amp;amp;referringTitle=Home"&gt;News Feeds&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;
Logo
&lt;/h2&gt;Thank to &lt;a href="http://www.windows-now.com/blogs/robert/" class="externalLink"&gt;Robert McLaws&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, now our project has a logo.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;About BlogML&lt;/b&gt;&lt;br /&gt;BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Community Server&lt;/li&gt;&lt;li&gt;Das Blog&lt;/li&gt;&lt;li&gt;Subtext&lt;/li&gt;&lt;li&gt;SingleUserBlog&lt;/li&gt;&lt;li&gt;Windows Live Spaces&lt;/li&gt;&lt;li&gt;WordPress&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;There are also implementations that exist for converting Blogger content to BlogML.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BlogML Tools&lt;/b&gt;&lt;br /&gt;The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.&lt;br /&gt; &lt;br /&gt;It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>Keyvan</author><pubDate>Sun, 09 Sep 2007 14:23:49 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070909022349P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=17</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=News%20Feeds&amp;amp;referringTitle=Home"&gt;News Feeds&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;
Logo
&lt;/h2&gt;Thank to &lt;a href="http://www.windows-now.com/blogs/robert/" class="externalLink"&gt;Robert McLaws&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, now our project has a logo.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;About BlogML&lt;/b&gt;&lt;br /&gt;BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Community Server&lt;/li&gt;&lt;li&gt;Das Blog&lt;/li&gt;&lt;li&gt;Subtext&lt;/li&gt;&lt;li&gt;SingleUserBlog&lt;/li&gt;&lt;li&gt;Windows Live Spaces&lt;/li&gt;&lt;li&gt;WordPress&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;There are also implementations that exist for converting Blogger content to BlogML.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BlogML Tools&lt;/b&gt;&lt;br /&gt;The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.&lt;br /&gt; &lt;br /&gt;It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>Keyvan</author><pubDate>Thu, 31 May 2007 09:56:27 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070531095627A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=16</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=News%20Feeds&amp;amp;referringTitle=Home"&gt;News Feeds&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;
Logo
&lt;/h2&gt;Thank to &lt;a href="http://www.windows-now.com/blogs/robert/" class="externalLink"&gt;Robert McLaws&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, now our project has a logo.&lt;br /&gt;&lt;span class="unresolved"&gt;Cannot resolve link: &lt;/span&gt;[image:http://www.codeplex.com/BlogML/Project/FileDownload.aspx?DownloadId=13272]&lt;br /&gt; &lt;br /&gt;&lt;b&gt;About BlogML&lt;/b&gt;&lt;br /&gt;BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Community Server&lt;/li&gt;&lt;li&gt;Das Blog&lt;/li&gt;&lt;li&gt;Subtext&lt;/li&gt;&lt;li&gt;SingleUserBlog&lt;/li&gt;&lt;li&gt;Windows Live Spaces&lt;/li&gt;&lt;li&gt;WordPress&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;There are also implementations that exist for converting Blogger content to BlogML.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BlogML Tools&lt;/b&gt;&lt;br /&gt;The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.&lt;br /&gt; &lt;br /&gt;It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>Keyvan</author><pubDate>Thu, 31 May 2007 09:54:03 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070531095403A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=15</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=News%20Feeds&amp;amp;referringTitle=Home"&gt;News Feeds&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;
Logo
&lt;/h2&gt;Thank to &lt;a href="http://www.windows-now.com/blogs/robert/" class="externalLink"&gt;Robert McLaws&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, now our project has a logo.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;About BlogML&lt;/b&gt;&lt;br /&gt;BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Community Server&lt;/li&gt;&lt;li&gt;Das Blog&lt;/li&gt;&lt;li&gt;Subtext&lt;/li&gt;&lt;li&gt;SingleUserBlog&lt;/li&gt;&lt;li&gt;Windows Live Spaces&lt;/li&gt;&lt;li&gt;WordPress&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;There are also implementations that exist for converting Blogger content to BlogML.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BlogML Tools&lt;/b&gt;&lt;br /&gt;The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.&lt;br /&gt; &lt;br /&gt;It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>Keyvan</author><pubDate>Thu, 31 May 2007 09:49:11 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070531094911A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=14</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=News%20Feeds&amp;amp;referringTitle=Home"&gt;News Feeds&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;
BlogML 2.0 is Released
&lt;/h2&gt;You can download BlogML 2.0 from &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=BlogML&amp;amp;ReleaseId=171" class="externalLink"&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and find more about it on these blog posts: &lt;a href="http://markitup.com/Posts/Post.aspx?postId=3d18797b-2c53-4aa3-88bc-ef1c97e84e5f" class="externalLink"&gt;1&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://nayyeri.net/archive/2006/09/06/BlogML-2.0-Released.aspx" class="externalLink"&gt;2&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;About BlogML&lt;/b&gt;&lt;br /&gt;BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Community Server&lt;/li&gt;&lt;li&gt;Das Blog&lt;/li&gt;&lt;li&gt;Subtext&lt;/li&gt;&lt;li&gt;SingleUserBlog&lt;/li&gt;&lt;li&gt;Windows Live Spaces&lt;/li&gt;&lt;li&gt;WordPress&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;There are also implementations that exist for converting Blogger content to BlogML.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BlogML Tools&lt;/b&gt;&lt;br /&gt;The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.&lt;br /&gt; &lt;br /&gt;It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>interscape</author><pubDate>Tue, 08 May 2007 04:48:51 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070508044851A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=13</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=News%20Feeds&amp;amp;referringTitle=Home"&gt;News Feeds&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;
BlogML 2.0 is Released
&lt;/h2&gt;You can download BlogML 2.0 from &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=BlogML&amp;amp;ReleaseId=171" class="externalLink"&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and find more about it on these blog posts: &lt;a href="http://markitup.com/Posts/Post.aspx?postId=3d18797b-2c53-4aa3-88bc-ef1c97e84e5f" class="externalLink"&gt;1&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://nayyeri.net/archive/2006/09/06/BlogML-2.0-Released.aspx" class="externalLink"&gt;2&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;About BlogML&lt;/b&gt;&lt;br /&gt;BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Community Server&lt;/li&gt;&lt;li&gt;Das Blog&lt;/li&gt;&lt;li&gt;Subtext&lt;/li&gt;&lt;li&gt;SingleUserBlog&lt;/li&gt;&lt;li&gt;WordPress&lt;/li&gt;&lt;li&gt;Windows Live Spaces&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;There are also implementations that exist for converting Blogger content to BlogML.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BlogML Tools&lt;/b&gt;&lt;br /&gt;The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.&lt;br /&gt; &lt;br /&gt;It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>digory</author><pubDate>Tue, 08 May 2007 04:12:02 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070508041202A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Home&amp;version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=News%20Feeds&amp;amp;referringTitle=Home"&gt;News Feeds&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;
BlogML 2.0 is Released
&lt;/h2&gt;You can download BlogML 2.0 from &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=BlogML&amp;amp;ReleaseId=171" class="externalLink"&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and find more about it on these blog posts: &lt;a href="http://markitup.com/Posts/Post.aspx?postId=3d18797b-2c53-4aa3-88bc-ef1c97e84e5f" class="externalLink"&gt;1&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://nayyeri.net/archive/2006/09/06/BlogML-2.0-Released.aspx" class="externalLink"&gt;2&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;About BlogML&lt;/b&gt;&lt;br /&gt;BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Community Server&lt;/li&gt;&lt;li&gt;Das Blog&lt;/li&gt;&lt;li&gt;Subtext&lt;/li&gt;&lt;li&gt;SingleUserBlog&lt;/li&gt;&lt;li&gt;WordPress&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;There are also implementations that exist for converting Blogger content to BlogML.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BlogML Tools&lt;/b&gt;&lt;br /&gt;The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.&lt;br /&gt; &lt;br /&gt;It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170" class="externalLink"&gt;This Thread&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br /&gt; &lt;br /&gt;Before getting involved you should read the &lt;a href="http://www.codeplex.com/BlogML/Wiki/View.aspx?title=Code%20Repository%20Layout&amp;amp;referringTitle=Home"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br /&gt;
&lt;/div&gt;</description><author>interscape</author><pubDate>Tue, 08 May 2007 00:07:47 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070508120747A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Home&amp;version=10</link><description>&lt;p&gt;
&lt;h2&gt;BlogML 2.0 is Released&lt;/h2&gt;
You can download BlogML 2.0 from &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=BlogML&amp;amp;ReleaseId=171"&gt;here&lt;/a&gt; and find more about it on these blog posts: &lt;a href="http://markitup.com/Posts/Post.aspx?postId=3d18797b-2c53-4aa3-88bc-ef1c97e84e5f"&gt;1&lt;/a&gt;, &lt;a href="http://nayyeri.net/archive/2006/09/06/BlogML-2.0-Released.aspx"&gt;2&lt;/a&gt;&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;About BlogML&lt;/b&gt;&lt;br/&gt;
BlogML is an XML format for storing the entire content of a blog.&amp;nbsp;&amp;nbsp;You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.&amp;nbsp;&amp;nbsp;There are currently several blogging engines that provide support for BlogML including:&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;&lt;li&gt;Community Server&lt;/li&gt;
&lt;li&gt;Das Blog&lt;/li&gt;
&lt;li&gt;Subtext&lt;/li&gt;
&lt;li&gt;SingleUserBlog&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;
There are also implementations that exist for converting Blogger content to BlogML.&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;BlogML Tools&lt;/b&gt;&lt;br/&gt;
The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.&amp;nbsp;&amp;nbsp;This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.&amp;nbsp;&amp;nbsp;Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br/&gt;
If you'd like to get involved in the BlogML project there's two things that you must do.&amp;nbsp;&amp;nbsp;First, you must create an account with the CodePlex website.&amp;nbsp;&amp;nbsp;Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to &lt;a href="http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;amp;ForumId=92&amp;amp;ThreadId=170"&gt;This Thread&lt;/a&gt;.&amp;nbsp;&amp;nbsp;After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
Before getting involved you should read the &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Code%20Repository%20Layout"&gt;Code Repository Layout&lt;/a&gt; guide to learn about how the code repository is structured.&lt;br/&gt;
&lt;br/&gt;
&lt;/p&gt;
</description><author>Keyvan</author><pubDate>Wed, 06 Sep 2006 06:09:50 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20060906060950A</guid></item><item><title>UPDATED WIKI: New Features</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=New Features&amp;version=1</link><description>&lt;p&gt;
These are new features that we added to BlogML Schema or .NET APIs for incoming version:&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Support for multi-author content:&lt;/b&gt; Blogs can have a list of authors in definition and individual posts can have an author from that list via an identifier reference.&amp;nbsp;&amp;nbsp;This new feature has been implemented both in Schema and .NET APIs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Support for post excerpt:&lt;/b&gt; Excerpt is a brief description about each post and some blogging tools support it.&amp;nbsp;&amp;nbsp;Now BlogML supports this feature and each post can have an excerpt as well.&amp;nbsp;&amp;nbsp;It has been implemented in Schema and .NET APIs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Support for extended blog properties:&lt;/b&gt; We had a discussion with Darren about this.&amp;nbsp;&amp;nbsp;We agreed to use two kinds of extended properties for Blog object: Well-known properties and user-defined properties.&amp;nbsp;&amp;nbsp;Some examples of extended properties can be blog comments moderation type, total blog posts, total blog comments, total blog trackbacks and similar properties.&amp;nbsp;&amp;nbsp;We'll define some common properties as well-known properties and will leave others for users to define them.&amp;nbsp;&amp;nbsp;This feature has been implemented in Schema and .NET APIs both but needs tests.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Support for reading post attachment MIME type in .NET APIs:&lt;/b&gt; Previously you could write MIME type of an attachment as an attribute into BlogML file but couldn't read it from .NET Reader APIs.&amp;nbsp;&amp;nbsp;Just for Phil :-P&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Support for special post types:&lt;/b&gt; One of common special post types in .NET blogging tools is Article.&amp;nbsp;&amp;nbsp;Now BlogML supports special post types (currently Normal or Article).&amp;nbsp;&amp;nbsp;This new feature has been applied to Schema and .NET APIs as well.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Support for post names:&lt;/b&gt; Now you can save and get post names in BlogML.&amp;nbsp;&amp;nbsp;This is a SEO friendly feature and can help users to avoid borken links on migrations easier.&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;
To let all members know what's going on.&amp;nbsp;&amp;nbsp;These features haven't tested completely but could pass initial tests.&lt;br/&gt;
&lt;br/&gt;
&lt;/p&gt;
</description><author>Keyvan</author><pubDate>Mon, 14 Aug 2006 06:44:39 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: New Features 20060814064439A</guid></item><item><title>UPDATED WIKI: Code Repository Layout</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Code Repository Layout&amp;version=4</link><description>&lt;p&gt;
&lt;b&gt;Code Repository Layout&lt;/b&gt;&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
This page described the layout of the code repository layout for the BlogML project.&amp;nbsp;&amp;nbsp;The following figure shows the folder structure of the repository:&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.codeplex.com/Project/FileDownload.aspx?ProjectName=BlogML&amp;CountDownload=False&amp;DownloadId=964" alt="BlogMLRepositoryStructure.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
Each versioned release of BlogML has a folder structure in the code repository that is comprised of the following sections:&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Code Folder&lt;/b&gt;: A top level folder that contains all of the code artifacts for working with tools.&amp;nbsp;&amp;nbsp;These include the BlogML API's, tools, test harness code, and existing blog engine implementations.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Specification Folder&lt;/b&gt;: A top level folder that contains the BlogML schema file, test XML data that conforms to the current schema, and XSLT transformation files that transform from one version of BlogML to another.&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;
The code folder contains sub-folders for each language that has BlogML tools.&amp;nbsp;&amp;nbsp;For example, the above figure shows the Code folder with a child folder named DotNet; the DotNet folder would contain API's, tools and existing blog engine implementations that are written in .NET code.&amp;nbsp;&amp;nbsp;If a Perl implementation of the API's, tools, and blog engine implementations were to be created then they would be stored in a separate folder named Perl which a child folder of the Code folder.&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;UPDATE 20060807&lt;/b&gt;&lt;br/&gt;
We are no longer going to use a named folder in the source repository to represent the version number (ie: 1.0.0 in the above image).&lt;br/&gt;
&lt;br/&gt;
&lt;/p&gt;
</description><author>digory</author><pubDate>Mon, 07 Aug 2006 06:22:59 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Code Repository Layout 20060807062259A</guid></item><item><title>UPDATED WIKI: Code Repository Layout</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Code Repository Layout&amp;version=3</link><description>&lt;p&gt;
&lt;b&gt;Code Repository Layout&lt;/b&gt;&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
This page described the layout of the code repository layout for the BlogML project.&amp;nbsp;&amp;nbsp;The following figure shows the folder structure of the repository:&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.codeplex.com/Project/FileDownload.aspx?ProjectName=BlogML&amp;CountDownload=False&amp;DownloadId=964" alt="BlogMLRepositoryStructure.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
Each versioned release of BlogML has a folder structure in the code repository that is comprised of the following sections:&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Code Folder&lt;/b&gt;: A top level folder that contains all of the code artifacts for working with tools.&amp;nbsp;&amp;nbsp;These include the BlogML API's, tools, test harness code, and existing blog engine implementations.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Specification Folder&lt;/b&gt;: A top level folder that contains the BlogML schema file, test XML data that conforms to the current schema, and XSLT transformation files that transform from one version of BlogML to another.&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;
The code folder contains sub-folders for each language that has BlogML tools.&amp;nbsp;&amp;nbsp;For example, the above figure shows the Code folder with a child folder named DotNet; the DotNet folder would contain API's, tools and existing blog engine implementations that are written in .NET code.&amp;nbsp;&amp;nbsp;If a Perl implementation of the API's, tools, and blog engine implementations were to be created then they would be stored in a separate folder named Perl which a child folder of the Code folder.&lt;br/&gt;
&lt;br/&gt;
&lt;/p&gt;
</description><author>digory</author><pubDate>Mon, 07 Aug 2006 06:21:07 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Code Repository Layout 20060807062107A</guid></item><item><title>UPDATED WIKI: Code Repository Layout</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Code Repository Layout&amp;version=2</link><description>*Code Repository Layout*

This page described the layout of the code repository layout for the BlogML project.  The following figure shows the folder structure of the repository:

[image:http://static.flickr.com/57/164355330_38a7dbdefc_o.png]

Each versioned release of BlogML has a folder structure in the code repository that is comprised of the following sections:

* *Code Folder*: A top level folder that contains all of the code artifacts for working with tools.  These include the BlogML API's, tools, test harness code, and existing blog engine implementations.
* *Specification Folder*: A top level folder that contains the BlogML schema file, test XML data that conforms to the current schema, and XSLT transformation files that transform from one version of BlogML to another.

The code folder contains sub-folders for each language that has BlogML tools.  For example, the above figure shows the Code folder with a child folder named DotNet; the DotNet folder would contain API's, tools and existing blog engine implementations that are written in .NET code.  If a Perl implementation of the API's, tools, and blog engine implementations were to be created then they would be stored in a separate folder named Perl which a child folder of the Code folder.</description><author>digory</author><pubDate>Mon, 12 Jun 2006 04:05:43 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Code Repository Layout 20060612040543A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Home&amp;version=9</link><description>*About BlogML*
BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:

* Community Server
* Das Blog
* Subtext
* SingleUserBlog

There are also implementations that exist for converting Blogger content to BlogML.

*BlogML Tools*
The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.

It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.


*Getting Involved*
If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer by replying to [url:This Thread|http://codeplex.com/Project/DisplayThread.aspx?ProjectName=BlogML&amp;ForumId=92&amp;ThreadId=170].  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.

Before getting involved you should read the [253] guide to learn about how the code repository is structured.</description><author>digory</author><pubDate>Sat, 10 Jun 2006 23:15:22 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20060610111522P</guid></item><item><title>UPDATED WIKI: Code Repository Layout</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Code Repository Layout&amp;version=1</link><description>*Code Repository Layout*

This page described the layout of the code repository layout for the BlogML project.  The following figure shows the folder structure of the repository:

[image:http://static.flickr.com/57/16435533038a7dbdefco.png]

Each versioned release of BlogML has a folder structure in the code repository that is comprised of the following sections:

* *Code Folder*: A top level folder that contains all of the code artifacts for working with tools.  These include the BlogML API's, tools, test harness code, and existing blog engine implementations.
* *Specification Folder*: A top level folder that contains the BlogML schema file, test XML data that conforms to the current schema, and XSLT transformation files that transform from one version of BlogML to another.

The code folder contains sub-folders for each language that has BlogML tools.  For example, the above figure shows the Code folder with a child folder named DotNet; the DotNet folder would contain API's, tools and existing blog engine implementations that are written in .NET code.  If a Perl implementation of the API's, tools, and blog engine implementations were to be created then they would be stored in a separate folder named Perl which a child folder of the Code folder.</description><author>digory</author><pubDate>Sat, 10 Jun 2006 22:30:04 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Code Repository Layout 20060610103004P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Home&amp;version=8</link><description>*About BlogML*
BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:

* Community Server
* Das Blog
* Subtext
* SingleUserBlog

There are also implementations that exist for converting Blogger content to BlogML.

*BlogML Tools*
The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.

It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.


*Getting Involved*
If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.

Before getting involved you should read the [253] guide to learn about how the code repository is structured.</description><author>digory</author><pubDate>Sat, 10 Jun 2006 20:03:34 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20060610080334P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/Wiki/View.aspx?ProjectName=BlogML&amp;title=Home&amp;version=7</link><description>*About BlogML*
BlogML is an XML format for storing the entire content of a blog.  You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another.  There are currently several blogging engines that provide support for BlogML including:

* Community Server
* Das Blog
* Subtext
* SingleUserBlog

There are also implementations that exist for converting Blogger content to BlogML.

[248]


*BlogML Tools*
The purpose of this project is to act as a central storage location for the BlogML schema and also to act as a source repository for tooling that makes it easier to work with BlogML.  This tooling includes a set of base classes for reading and writing BlogML and also a validator for easily validating XML source code against the BlogML schema.

It is also planned that this site will act as a repository for a set of tested blog engine specific BlogML providers - including tools that work against blog engines such as .Text.  Users can use these BlogML providers to export or import blog content from blog engines that do not provide out of the box support for BlogML.


*Getting Involved*
If you'd like to get involved in the BlogML project there's two things that you must do.  First, you must create an account with the CodePlex website.  Secondly, after you have created your CodePlex account you can be added to this project as a developer.  After you've been added as a developer you will be able to connect to the source code repository for BlogML and work on the code to make changes and add new items.

Before getting involved you should read the [253] guide to learn about how the code repository is structured.

[250]</description><author>digory</author><pubDate>Sat, 10 Jun 2006 20:03:13 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20060610080313P</guid></item></channel></rss>