<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Serge van den Oever [Macaw] : .NET</title><link>http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx</link><description>Tags: .NET</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Visual Studio: alway run as administrator</title><link>http://weblogs.asp.net/soever/archive/2009/10/07/visual-studio-alway-run-as-administrator.aspx</link><pubDate>Wed, 07 Oct 2009 10:07:59 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7224682</guid><dc:creator>svdoever</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=7224682</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2009/10/07/visual-studio-alway-run-as-administrator.aspx#comments</comments><description>&lt;p&gt;I’m currently developing on a 64 bit Windows Server 2008 R2 that is domain joined, so I log in with my domain account and user access control is enabled. I need to run my Visual Studio as an administrator, because otherwise I get all kind of errors. I can do this by right-clicking on the Visual Studio Icon and select “Run as administrator”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/image_7C53D8F9.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/image_thumb_224C1A01.png" width="413" height="531" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The problem is: I forget to do this all the time, and I ALWAYS want to run Visual Studio as an administrator.&lt;/p&gt;  &lt;p&gt;You can enable this as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Right-click the Visual Studio icon and select properties &lt;/li&gt;    &lt;li&gt;On the &lt;strong&gt;Shortcut&lt;/strong&gt; tab (the default tab) select Advanced       &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/image_53DA1847.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/image_thumb_70E2C70F.png" width="381" height="537" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Select &lt;strong&gt;Run as administrator        &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/image_606A5614.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/image_thumb_0908C21C.png" width="398" height="304" /&gt;&lt;/a&gt;&amp;#160;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Click OK &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This will work on any program, and on any OS with user access control (Vista, Windows 7, …).&lt;/p&gt;  &lt;p&gt;In order to be able to do this you must be added to the Administrators group on the local machine. If you don’t have the permissions to do this, login with an account that has enough permissions, or login with the local administrator account.&lt;/p&gt;  &lt;p&gt;You can do this in the &lt;strong&gt;Edit local users and groups&lt;/strong&gt; program (Start –&amp;gt; Search programs and files… type &lt;strong&gt;users&lt;/strong&gt;):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/image_267DA3D9.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/image_thumb_17D81956.png" width="636" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;When you start up Visual Studio you will always get a warning from User Access Control with the question if you want to allow the program to make changes to your computer. Don’t know if you can prevent this popup.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7224682" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Microsoft Virtual labs - getting the lab notes directly</title><link>http://weblogs.asp.net/soever/archive/2009/07/03/microsoft-virtual-labs-getting-the-lab-notes-directly.aspx</link><pubDate>Fri, 03 Jul 2009 21:46:14 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7139572</guid><dc:creator>svdoever</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=7139572</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2009/07/03/microsoft-virtual-labs-getting-the-lab-notes-directly.aspx#comments</comments><description>&lt;p&gt;Microsoft has great &lt;a href="http://www.microsoft.com/events/vlabs/default.mspx" target="_blank"&gt;virtual labs&lt;/a&gt; available, but it takes some time to get in there. If you just want the lab notes, type the following in Google: &lt;strong&gt;site:download.microsoftvirtuallabs.com filetype:pdf&lt;/strong&gt; or just follow &lt;a href="http://www.google.nl/search?q=site:download.microsoftvirtuallabs.com+filetype:pdf&amp;amp;hl=nl&amp;amp;rlz=1W1SUNA_en&amp;amp;as_qdr=all&amp;amp;num=100&amp;amp;start=100&amp;amp;sa=N" target="_blank"&gt;this link&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7139572" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Debugging SharePoint/ASP.NET code? Smart key-codes + disable timeout!</title><link>http://weblogs.asp.net/soever/archive/2009/06/18/debugging-sharepoint-asp-net-code-smart-key-codes-disable-timeout.aspx</link><pubDate>Thu, 18 Jun 2009 15:39:02 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7129051</guid><dc:creator>svdoever</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=7129051</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2009/06/18/debugging-sharepoint-asp-net-code-smart-key-codes-disable-timeout.aspx#comments</comments><description>&lt;p&gt;I'm currently running around in the Visual Studio debugger to debug some complex SharePoint code. There are two things really annoy me: all the mouse-clicks needed to attach to the Internet Information Server process and the time-out you get when you are exploring complex data-structures for too long.&lt;/p&gt;  &lt;p&gt;First my favorite key-sequence for the last week: &amp;lt;ALT-D&amp;gt;PW3&amp;lt;ENTER&amp;gt;&amp;lt;ENTER&amp;gt;. I will explain it:&lt;/p&gt;  &lt;p&gt;&amp;lt;Alt-D&amp;gt; brings up the debugging menu in Visual Studio:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_thumb.png" width="351" height="556" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;With P the action &amp;quot;Attach to Process...&amp;quot; is executed, which brings you to the following window:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_4.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_thumb_1.png" width="644" height="475" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The list of available processes is already active. We nog need to select the Internet Information Server worker process. Each application pool has it's own worker process. These worker processes are named: w3wp.exe.&lt;/p&gt;  &lt;p&gt;By typing W3 the first (and often only) w3wp.exe process is selected:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_6.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_thumb_2.png" width="644" height="475" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If there are multiple w3wp.exe processes you could select them all (SHIFT+ARROWDOWN). Now press the first time &amp;lt;ENTER&amp;gt;, which selects the w3wp.exe process(es). This results in the following window:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_8.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_thumb_3.png" width="446" height="277" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The &amp;quot;Attach&amp;quot; button is selected by default. This brings us to the latest &amp;lt;ENTER&amp;gt; to accept the default selection.&lt;/p&gt;  &lt;p&gt;We are now attached to the correct Internet Information Server working process(es) and can start debugging.&lt;/p&gt;  &lt;p&gt;Just try it a few times: &amp;lt;ALT-D&amp;gt;PW3&amp;lt;ENTER&amp;gt;&amp;lt;ENTER&amp;gt;, it will become second nature in no time. Happy debugging....&lt;/p&gt;  &lt;p&gt;... until you get the following popup window:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_10.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_thumb_4.png" width="575" height="240" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You have got a &amp;quot;ping&amp;quot; timeout. If you read the box well, it tells you exactly what happened, and it tells you to press the &amp;quot;Help&amp;quot; button for further details.&lt;/p&gt;  &lt;p&gt;Most people don't read the box, and start over again. But it worth the effort to follow the described steps from the Microsoft documentation, they are a bit hard to follow:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;To continue to debug, you must configure IIS to allow the worker process to continue.&lt;/font&gt;&lt;/p&gt;  &lt;h5&gt;&lt;font color="#0000ff"&gt;To enable Terminal Services &lt;/font&gt;&lt;font color="#ff0000"&gt;(?? Terminal Services ??)&lt;/font&gt;&lt;/h5&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;Open the Administrative Tools window.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;Click Start, and then choose Control Panel.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;In Control Panel, choose Switch to Classic View, if necessary, and then double-click Administrative Tools.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;In the Administrative Tools window, double-click Internet Information Services (IIS) Manager.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;In the Internet Information Services (IIS) Manager window, expand the &amp;lt;computer name&amp;gt; node.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;Under the &amp;lt;computer name&amp;gt; node, right-click Application Pools.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;In the Application Pools list, right-click the name of the pool your application runs in, and then click Advanced Settings.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;In the Advanced Settings dialog box, locate the Process Model section and choose one of the following actions:&lt;/font&gt;&lt;/p&gt;      &lt;ol&gt;       &lt;li&gt;         &lt;p&gt;&lt;font color="#0000ff"&gt;Set Ping Enabled to False.&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font color="#0000ff"&gt;-or-&lt;/font&gt;&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p&gt;&lt;font color="#0000ff"&gt;Set Ping Maximum Response Time to a value greater than 90 seconds.&lt;/font&gt;&lt;/p&gt;       &lt;/li&gt;     &lt;/ol&gt;      &lt;p&gt;&lt;font color="#0000ff"&gt;Setting Ping Enabled to False stops IIS from checking whether the worker process is still running and keeps the worker process alive until you stop your debugged process. Setting Ping Maximum Response Time to a large value allows IIS to continue monitoring the worker process.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;Click OK.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;Under Services and Applications, click Services. &lt;/font&gt;&lt;font color="#ff0000"&gt;-- Don't know what the rest of the steps if for... you are done!&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;font color="#0000ff"&gt;A list of services appears in the right-side pane.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;In the Services list, right-click Terminal Services, and then click Properties.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;In the Terminal Services Properties window, locate the General tab and set Startup type to Manual.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;Click OK to close the Advanced Settings dialog box.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;Close the Internet Information Services (IIS) Manager window and the Administrative Tools window.&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I'm running on Windows Server 2008, and below are the steps that I follow:&lt;/p&gt;  &lt;p&gt;Just type iis in the Start Search box, this shows me two applications:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_14.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_thumb_6.png" width="525" height="126" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I take the top one (I'm not running under IIS 6) and get the following screen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_12.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_thumb_5.png" width="923" height="739" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Right-click your application pool, advanced settings... and you get the following screen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_16.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/Debug.NETcodeSmartkeycodesdisabletimeout_E709/image_thumb_7.png" width="790" height="631" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Set &amp;quot;Ping Enabled&amp;quot; to False, press OK, and you can drill through your data-structures in the debugger for as long as you want!&lt;/p&gt;  &lt;p&gt;Again: &amp;quot;Happy debugging!&amp;quot;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7129051" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>LiveWriter finally working again with my weblogs.asp.net blog!</title><link>http://weblogs.asp.net/soever/archive/2009/05/05/livewriter-finally-working-again-with-my-weblogs-asp-net-blog.aspx</link><pubDate>Mon, 04 May 2009 23:34:28 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7072629</guid><dc:creator>svdoever</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=7072629</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2009/05/05/livewriter-finally-working-again-with-my-weblogs-asp-net-blog.aspx#comments</comments><description>&lt;p&gt;Thanks to Joe Cheng who was so kind to respond to my &lt;a href="http://weblogs.asp.net/soever/archive/2009/04/10/help-windows-livewriter-not-working-anymore-against-http-weblogs-asp-net.aspx" target="_blank"&gt;previous post&lt;/a&gt; on the topic I finally have LiveWriter working again against my blog.&lt;/p&gt;  &lt;p&gt;The metablog handler needs to be: &lt;a href="http://weblogs.asp.net/metablog.ashx"&gt;http://weblogs.asp.net/metablog.ashx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the past this was: &lt;a href="http://weblogs.asp.net/blogs/metablog.ashx"&gt;http://weblogs.asp.net/blogs/metablog.ashx&lt;/a&gt;, and it was changed without notification! At least I didn’t receive one!&lt;/p&gt;  &lt;p&gt;Joe, thanks again! Time to get blogging again!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7072629" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Help: Windows LiveWriter not working anymore against http://weblogs.asp.net?</title><link>http://weblogs.asp.net/soever/archive/2009/04/10/help-windows-livewriter-not-working-anymore-against-http-weblogs-asp-net.aspx</link><pubDate>Fri, 10 Apr 2009 15:17:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7040341</guid><dc:creator>svdoever</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=7040341</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2009/04/10/help-windows-livewriter-not-working-anymore-against-http-weblogs-asp-net.aspx#comments</comments><description>&lt;P&gt;I almost stopped blogging because Windows Livewriter stopped working against my &lt;A href="http://weblogs.asp.net/"&gt;&lt;FONT color=#669966&gt;http://weblogs.asp.net&lt;/FONT&gt;&lt;/A&gt; account on three different platforms.&lt;/P&gt;
&lt;P&gt;I get the following error when trying to post with LiveWriter: &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;The response to the metaWeblog.newPost method received from the weblog server was invalid: &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Invalid response document returned from XmlRpc server&lt;/FONT&gt; 
&lt;P&gt;or when I am logged in on the administration part of the web site and try to post using LiveWriter: 
&lt;P&gt;&lt;FONT color=#0000ff&gt;An unexpected error has occurred while attempting to log in: &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Invalid Server Response - The response to the blogger.getUsersBlogs method received from the weblog server was invalid: &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Invalid response document returned from XmlRpc server&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Do others experience problems as well? Does anyone know a solution?&lt;/P&gt;
&lt;P&gt;Regards, Serge&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7040341" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category></item><item><title>PowerShell: Return values from a function through reference parameters</title><link>http://weblogs.asp.net/soever/archive/2009/03/26/powershell-return-values-from-a-function-through-reference-parameters.aspx</link><pubDate>Thu, 26 Mar 2009 09:41:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7003526</guid><dc:creator>svdoever</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=7003526</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2009/03/26/powershell-return-values-from-a-function-through-reference-parameters.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;PowerShell has a special [ref] keyword to specify which parameters are used in a fuction to return values. It's usage is not directly clear however. &lt;/P&gt;
&lt;P mce_keep="true"&gt;If the&amp;nbsp;type of the variable to update is a value type, use the [ref] keyword in the declaration of the function parameter, this specifies that a "pointer" to the variable will be passed.&lt;/P&gt;
&lt;P mce_keep="true"&gt;To pass the "pointer" to the variable, use ([ref]$variable) to create the pointer, and pass this as parameter. To set the value of the value variable pointed to by the "pointer", use the .Value field.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Simple example to show what [ref] does:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT face="Courier New" size=2&gt;C:\Program Files\PowerGUI&amp;gt; $zz = "hoi"&lt;BR&gt;C:\Program Files\PowerGUI&amp;gt; $xz = [ref]$zz&lt;BR&gt;C:\Program Files\PowerGUI&amp;gt; $xz&lt;BR&gt;Value &lt;BR&gt;----- &lt;BR&gt;hoi &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;P&gt;C:\Program Files\PowerGUI&amp;gt; $xz.Value = "dag"&lt;BR&gt;C:\Program Files\PowerGUI&amp;gt; $zz&lt;BR&gt;dag&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;
&lt;P mce_keep="true"&gt;This is only required for value types, not is the type is a referece type like for example Hashtable.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Some sample code:&lt;/P&gt;
&lt;P mce_keep="true"&gt;function fn&lt;BR&gt;{&lt;BR&gt;param&lt;BR&gt;(&lt;BR&gt;[ref]$arg1,&lt;BR&gt;[ref]$arg2,&lt;BR&gt;$arg3&lt;BR&gt;)&lt;BR&gt;&lt;BR&gt;$arg1.Value = 1&lt;BR&gt;$arg2.Value = "overwrite"&lt;BR&gt;$arg3.key = "overwrite hash value" &lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;$x = 0&lt;BR&gt;$y = "original"&lt;BR&gt;$z = @{"key" = "original hashvalue"}&lt;BR&gt;$x&lt;BR&gt;$y&lt;BR&gt;$z.key&lt;BR&gt;fn -arg1 ([ref]$x) -arg2 ([ref]$y) -arg3 $z&lt;BR&gt;$x &lt;BR&gt;$y&lt;BR&gt;$z.key&lt;BR&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7003526" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Microsoft Tag, funny idea, will it take off?</title><link>http://weblogs.asp.net/soever/archive/2009/01/12/microsoft-tag-funny-idea-a-pity-that-it-doesn-t-work.aspx</link><pubDate>Mon, 12 Jan 2009 09:25:52 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6830580</guid><dc:creator>svdoever</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=6830580</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2009/01/12/microsoft-tag-funny-idea-a-pity-that-it-doesn-t-work.aspx#comments</comments><description>&lt;p&gt;Microsoft came up with a simple but funny and possibly really effective idea: Microsoft Tag. You can create a nice visual tag consisting of colorful triangles, and when you scan this tag with the camera of your Internet enabled cell phone you get connected to a web page, vcard, a text note or a dialar (audio) advertisement. I just tried it out, I created a tag to this web log:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I logged in into &lt;a href="http://www.microsoft.com/tag"&gt;http://www.microsoft.com/tag&lt;/a&gt; with my live ID account&lt;/li&gt;    &lt;li&gt;Created a new tag to my weblog:     &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/MicrosoftTagfunnyideaapitythatitdoesntw_9286/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="696" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/MicrosoftTagfunnyideaapitythatitdoesntw_9286/image_thumb.png" width="755" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;This results in my first tag on my personal tags site:     &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/MicrosoftTagfunnyideaapitythatitdoesntw_9286/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="264" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/MicrosoftTagfunnyideaapitythatitdoesntw_9286/image_thumb_1.png" width="755" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;I rendered the tag to a PDF by clicking on the Tag icon:     &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/MicrosoftTagfunnyideaapitythatitdoesntw_9286/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="239" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/MicrosoftTagfunnyideaapitythatitdoesntw_9286/image_thumb_2.png" width="755" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;I downloaded the Tag Reader application for my iPhone from the AppStire (the link &lt;a href="http://gettag.mobi"&gt;http://gettag.mobi&lt;/a&gt; just says that, it provides no download link)&lt;/li&gt;    &lt;li&gt;I snapped a photo from the on screen PDF file, allowing the iPhone to access my location information (smart),&amp;#160; and..... nothing. I got an error.&lt;/li&gt;    &lt;li&gt;I was a bit disappointed so i fired up the introductory movie on &lt;a href="http://www.microsoft.com/tag"&gt;http://www.microsoft.com/tag&lt;/a&gt;, snapped a really bad photo from a tag in this movie and guess what! It worked! It brought me to a Vista advertisement.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I think the idea is good. This can be used very well for print on posters, advertisement, the price and information cards next to a TV in a shop etc. etc. The introductory movie gives some good examples like an advertisement for a concert with a Tag that brings you to the booking page, or at a bus station where the Tag brings you to an online schedule of the bus. Wondering if this will take of.&lt;/p&gt;  &lt;p&gt;On the site you can get a report on snaps of your Tags:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/MicrosoftTagfunnyideaapitythatitdoesntw_9286/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="711" alt="image" src="http://weblogs.asp.net/blogs/soever/WindowsLiveWriter/MicrosoftTagfunnyideaapitythatitdoesntw_9286/image_thumb_3.png" width="755" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And hey, I got three hits!! So the Tag was recognized, just the linking failed!&lt;/p&gt;  &lt;p&gt;The Tag picture above should point to my weblog, maybe it will start working in a while. Try it all out, and I will let you know about the results in a later blog post.&lt;/p&gt;  &lt;p&gt;It would be really interesting if the report would also use the location information that can be provided by the Tag Reader application (the iPhone version does if you allow this), so you know where your Tag was snapped.&lt;/p&gt;  &lt;p&gt;Time to print a T-Shirt with my personal Tag...   &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6830580" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category></item><item><title>C:\Program Files\Reference Assemblies for assemblies to reference in your code</title><link>http://weblogs.asp.net/soever/archive/2008/07/20/c-program-files-reference-assemblies-for-assemblies-to-reference-in-your-code.aspx</link><pubDate>Sun, 20 Jul 2008 20:35:01 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6424839</guid><dc:creator>svdoever</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=6424839</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2008/07/20/c-program-files-reference-assemblies-for-assemblies-to-reference-in-your-code.aspx#comments</comments><description>&lt;p&gt;I just stumbles across a &amp;quot;new&amp;quot; concept of Microsoft. In the &lt;strong&gt;C:\Program Files\Reference Assemblies&lt;/strong&gt; folder Microsoft installs assemblies for products that can be referenced from your code. Instead of referencing assemblies directly from the GAC or copying an assembly from an installation folder or the GAC to your project for reference, you can now reference the assemblies in this folder.&lt;/p&gt;  &lt;p&gt;We have a similar approach in our Macaw Solutions Factory where we have a _SharedAssemblies folder to keep track of all external assemblies to reference. We prefer to keep the assemblies with the source that is checked into source control, because otherwise it is possible that a build server does not contain the expected assemblies when compiling a checked-out solution and can't successfully compile the solution.&lt;/p&gt;  &lt;p&gt;On the MsBuild team blog you can read more about this feature that happened to be with us since the .Net 3.0 framework:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/msbuild/archive/2007/04/12/new-reference-assemblies-location.aspx" href="http://blogs.msdn.com/msbuild/archive/2007/04/12/new-reference-assemblies-location.aspx"&gt;http://blogs.msdn.com/msbuild/archive/2007/04/12/new-reference-assemblies-location.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also other applications like PowerShell keep their assemblies to reference in this location.&amp;#160; &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6424839" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>SharePoint stsadm.exe and the infamous "Command line error"</title><link>http://weblogs.asp.net/soever/archive/2007/12/22/sharepoint-stsadm-exe-and-the-infamous-quot-command-line-error-quot.aspx</link><pubDate>Sat, 22 Dec 2007 00:11:30 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5485210</guid><dc:creator>svdoever</dc:creator><slash:comments>17</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=5485210</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2007/12/22/sharepoint-stsadm-exe-and-the-infamous-quot-command-line-error-quot.aspx#comments</comments><description>&lt;p&gt;The SharePoint command-line utility stsadm.exe was driving me crazy for the last two days. I'm automating all kind of this from PowerShell scripts, but I got the error "Command line error" while I was absolutely sure that what I was doing was correct. I did &lt;strong&gt;stsadm.exe -o deletesolution foobar.wsp&lt;/strong&gt;. And the problem was: character encoding...&lt;/p&gt; &lt;p&gt;First I thought it was a problem with the way I executed this command from PowerShell. When I copied over the command to a different script it worked. What!!!??? Then I copied it over to the cmd.exe shell on the command line and I got the same error.&lt;/p&gt; &lt;p&gt;I started searching on Google and came accross &lt;a href="http://sharepointxperience.blogspot.com/2007/07/stsadm-command-line-error.html" target="_blank"&gt;this&lt;/a&gt; blogpost. It said it had something to do with &lt;strong&gt;encoding&lt;/strong&gt;. The blog post also pointed to &lt;a href="http://blogs.msdn.com/sharepoint/archive/2007/02/24/updated-installation-guide-for-the-20-server-admin-application-templates-for-wss-3-0.aspx" target="_blank"&gt;this&lt;/a&gt; blog post where people responded in the contents with the most hillarious solutions like:&lt;/p&gt; &lt;p&gt;If I type STSADM.EXE it works, while STSADM.exe does not work, or that a solution file must be in the same folder as stsadm.exe. Read the comments, it is fun how far off people can get.&lt;/p&gt; &lt;p&gt;Another post mentioning the problem is &lt;a href="http://www.tech-archive.net/Archive/SharePoint/microsoft.public.sharepoint.portalserver/2006-08/msg00651.html" target="_blank"&gt;this discussion thread&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The problem happened to be in the encoding. One way or the other it is possible to get different encodings while typing in the same command multiple times in the same cmd.exe shell. Don't ask me how.&lt;/p&gt; &lt;p&gt;If you have problems, type your text in an editor like &lt;a href="http://notepad-plus.sourceforge.net/"&gt;Notepad++&lt;/a&gt;, and switch between "Encode in ANSI" and "Encode in UTF-8" (it is under the Format menu in Notepad++). You see (sometimes)the dash(-) in &lt;em&gt;stsadm &lt;strong&gt;-&lt;/strong&gt;o command...&lt;/em&gt; change from '-' to a strange little block... There is the problem. The dash is not always a dash, it is a hyphen... And stsadm then thinks that no command is specified. Remove the strange block, type a hyphen while is&amp;nbsp;UTF-8 encoding, copy that and bingo!! It works.&lt;/p&gt; &lt;p&gt;Ok, how to repeat this:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Start Notepad++, set encoding to ANSI&lt;/li&gt; &lt;li&gt;Make sure the path to stsadm.exe is in your path environment variable (or use full path)&lt;/li&gt; &lt;li&gt;Type &lt;strong&gt;stsadm -o deletesolution foobar.wsp&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;Start cmd.exe&lt;/li&gt; &lt;li&gt;Copy the text over and press enter: voila, Command line error.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The strange thing is that even if you remove the dash (-), and type it again, it still gives errors. I have no clue why.&lt;/p&gt; &lt;p&gt;This dash/hypen thing is a common problem if you search Google, for more info see for example:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.celestialsoftware.net/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic;f=1;t=000048" target="_blank"&gt;Topic: Issue with UTF8 and the encoding...&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.cs.tut.fi/~jkorpela/dashes.html" target="_blank"&gt;A whole article of hyphens and dashes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5485210" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Visual Studio SDK 4.0, Vista and symbolic links...</title><link>http://weblogs.asp.net/soever/archive/2007/09/22/visual-studio-sdk-4-0-vista-and-symbolic-links.aspx</link><pubDate>Sat, 22 Sep 2007 21:55:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:4050244</guid><dc:creator>svdoever</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=4050244</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2007/09/22/visual-studio-sdk-4-0-vista-and-symbolic-links.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;When you install Visual Studio SDK on Vista, it doesn't install by default on X:\Program Files, but on X:\Program Files (x86).&lt;/P&gt;
&lt;P mce_keep="true"&gt;When I tried to recompile the &lt;A class="" href="http://www.codeplex.com/vsipfactory" target=_blank mce_href="http://www.codeplex.com/vsipfactory"&gt;VSIP Software Factory&lt;/A&gt; from &lt;A class="" href="http://www.codeplex.com/" target=_blank mce_href="http://www.codeplex.com"&gt;Codeplex&lt;/A&gt;, it had links to the Visual Studio SDK in c:\program files.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Instead of moving things around I created a symbolic directory link:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;mklink&amp;nbsp; /D "Visual Studio 2005 SDK" "c:\Program Files (x86)\Visual Studio 2005 SDK"&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Works like a breeze!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4050244" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Generate a list of GUID's</title><link>http://weblogs.asp.net/soever/archive/2007/05/31/generate-a-list-of-guid-s.aspx</link><pubDate>Wed, 30 May 2007 23:07:36 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:2694224</guid><dc:creator>svdoever</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=2694224</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2007/05/31/generate-a-list-of-guid-s.aspx#comments</comments><description>&lt;p&gt;Sometimes you just need a lot of GUID's while programming.&amp;nbsp; Ofcourse you could use the Visual Studio GUID tool, bu that is a lot of work.&lt;/p&gt; &lt;p&gt;Open a PowerShell console, and paste in the following line to get a list of 100 guid's:&lt;/p&gt; &lt;p&gt;$i=100; while ($i-- -gt 0) { Write-Host ([System.Guid]::NewGuid()) }&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=2694224" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Factories @ Macaw - the DotNed presentation of april 26, 2007</title><link>http://weblogs.asp.net/soever/archive/2007/05/04/factories-macaw-the-dotned-presentation-of-april-26-2007.aspx</link><pubDate>Thu, 03 May 2007 22:08:12 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:2489207</guid><dc:creator>svdoever</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=2489207</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2007/05/04/factories-macaw-the-dotned-presentation-of-april-26-2007.aspx#comments</comments><description>&lt;p&gt;On april 26, 2007 I gave a presentation at the Macaw headquarters in Schiphol-Rijk, The Netherlands on what we are doing with Software Factories at Macaw.&lt;/p&gt; &lt;p&gt;I promised the audience to publish some links to tools and information mentioned in the presentation. I can't upload the presentation itself because it was a real "look into the kitchen of..." session with information that we can't give away (yet). I promise to blog more on this in the future however.&lt;/p&gt; &lt;p&gt;Some initial posts on what we are working on:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Blog post by &lt;a href="http://www.macaw.nl/WebLogs/VincentH/xp/default.aspx" target="_blank"&gt;Vincent Hoogendoorn&lt;/a&gt;: &lt;a href="http://blogs.macaw.nl/blogs/general_development_solutions/archive/2006/04/14/Realizing_the_Software_Factories_Vision_for_a_Microsoft_Systems_Integrator.aspx" target="_blank"&gt;Realizing the Software Factories Vision for a Microsoft Systems Integrator&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Blog post by Maarten Sikkema: &lt;a href="http://blogs.macaw.nl/blogs/corporate_marketing_directie_hr/archive/2007/01/17/660.aspx" target="_blank"&gt;De race naar Software Factories&lt;/a&gt; (in Dutch)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Tools we are using to realize our software factory vision:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=51a5c65b-c020-4e08-8ac0-3eb9c06996f4&amp;amp;DisplayLang=en" target="_blank"&gt;Visual studio SDK 4.0&lt;/a&gt; - Contains the DSL tools and everything to create visual studio extensions&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c0a394c0-5eeb-47c4-9f7b-71e51866a7ed&amp;amp;DisplayLang=en" target="_blank"&gt;Guidance Automation Extensions&lt;/a&gt; - Runtime needed to run GAT guidance packages&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e3d101db-6ee1-4ec5-884e-97b27e49eaae&amp;amp;DisplayLang=en" target="_blank"&gt;Guidance Automation Toolkit&lt;/a&gt; - Visual studio extension for development of guidance packages&lt;/li&gt; &lt;li&gt;&lt;a href="http://softwarefactoriestoolkit.net/" target="_blank"&gt;Clarius Software Factory Toolkit&lt;/a&gt;&amp;nbsp;- Additional tooling for developing GAT packages&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank"&gt;PowerShell&lt;/a&gt;&amp;nbsp;- The glue language we use extensively in our Solutions Factory. I have written thousands of lines of code in PowerShell, it rocks!&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I hope you all had an informative session and got some "food for thought" ob what you could do within your organization. If you would like to leave a comment on what your impression of the presentation, please do so as a comment to this blog post, or send me a direct e-mail at &lt;a href="mailto:serge@macaw.nl"&gt;serge@macaw.nl&lt;/a&gt;!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=2489207" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/soever/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://weblogs.asp.net/soever/archive/tags/SoftwareFactories/default.aspx">SoftwareFactories</category></item><item><title>MsBuild: sort your Content item file names</title><link>http://weblogs.asp.net/soever/archive/2007/05/03/msbuild-sort-your-content-item-file-names.aspx</link><pubDate>Thu, 03 May 2007 21:10:19 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:2488845</guid><dc:creator>svdoever</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=2488845</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2007/05/03/msbuild-sort-your-content-item-file-names.aspx#comments</comments><description>&lt;p&gt;I have been playing a bit with MsBuild to process a set of Content items sorted by file name. Content items are the items included in the project, and their &lt;strong&gt;Build Action&lt;/strong&gt; set to &lt;strong&gt;Content&lt;/strong&gt;. Below some sample code on how to achive this, just paste the code in a file &lt;strong&gt;sorttest.msbuild&lt;/strong&gt;, and run as &lt;strong&gt;msbuild.exe sorttest.msbuild&lt;/strong&gt;. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;xml&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;version&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;1.0&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;encoding&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;utf-8&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Project&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;SortTest&lt;/span&gt;"
&lt;span style="color: rgb(0,0,255)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;xmlns&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &amp;gt;

  &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;SortCommand&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;$(WinDir)\System32\sort.exe&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;SortCommand&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentItemsSortInFile&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;$(TEMP)\sortfileIn.tmp&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentItemsSortInFile&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentItemsSortOutFile&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;$(TEMP)\sortfileOut.tmp&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentItemsSortOutFile&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;

  &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Content&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Include&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;SampleNorthwind\0002_content.testdata.sql&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; /&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Content&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Include&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;SampleNorthwind\0001_initial.schema.sql&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; /&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Content&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Include&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;SampleNorthwind\0004_employee-mobilephone.schema.sql&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; /&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Content&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Include&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;SampleNorthwind\0003_constraints.schema.sql&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; /&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;

  &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Target&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;SortTest&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;WriteLinesToFile
&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;              &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;File&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;$(ContentItemsSortInFile)&lt;/span&gt;"
&lt;span style="color: rgb(0,0,255)"&gt;              &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Lines&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;@(Content)&lt;/span&gt;"
&lt;span style="color: rgb(0,0,255)"&gt;              &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Overwrite&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Exec&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Command&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;$(SortCommand) $(ContentItemsSortInFile) &amp;gt; $(ContentItemsSortOutFile)&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ReadLinesFromFile&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;File&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;$(ContentItemsSortOutFile)&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Output&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Lines&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;ItemName&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;SortedContent&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ReadLinesFromFile&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;!--&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; CLEAN UP TEMPORARY FILES &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;--&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Delete&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Files&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;$(ContentItemsSortInFile)&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Delete&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Files&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;$(ContentItemsSortOutFile)&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;

    &amp;lt;!--&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; DO YOUR ACTION WITH SortedContent, FOR NOW, JUST WRITE IT OUT, ',' SEPARATED &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;--&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Message&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;@(SortedContent,',')&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Target&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Project&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;

&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;UPDATED:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;My collegue Dion&amp;nbsp;Olsthoorn came with the following solution that is smarter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get the files from filesystem, is sorted by default&lt;/li&gt;
&lt;li&gt;Determine all files NOT in project&lt;/li&gt;
&lt;li&gt;Get again files from filesystem, exclude files NOT in project&lt;/li&gt;
&lt;li&gt;Result is a set of sorted items as included in the project (as Content items)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Nifty nifty!&lt;/p&gt;
&lt;p&gt;Replace this target in the code above:&lt;/p&gt;
&lt;p&gt;&amp;lt;Target Name="SortTest" Outputs="%(Content.RelativeDir)"&amp;gt;&lt;/p&gt;
&lt;p&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;lt;CreateItem Include="%(Content.RelativeDir)*" Exclude="@(Content)"&amp;gt; 
&lt;p&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Output TaskParameter="Include" ItemName="ExcludedSortedContent"/&amp;gt;
&lt;p&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;lt;/CreateItem&amp;gt;
&lt;p&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;lt;CreateItem Include="%(Content.RelativeDir)*" Exclude="@(ExcludedSortedContent)"&amp;gt; 
&lt;p&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Output TaskParameter="Include" ItemName="SortedContent"/&amp;gt;
&lt;p&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;lt;/CreateItem&amp;gt;
&lt;p&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;lt;Message Text="@(SortedContent,',')" /&amp;gt;
&lt;p&gt;&amp;lt;/Target&amp;gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=2488845" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Enumerating projects in a Visual Studio solution</title><link>http://weblogs.asp.net/soever/archive/2007/02/20/enumerating-projects-in-a-visual-studio-solution.aspx</link><pubDate>Tue, 20 Feb 2007 19:14:15 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:1733607</guid><dc:creator>svdoever</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=1733607</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2007/02/20/enumerating-projects-in-a-visual-studio-solution.aspx#comments</comments><description>&lt;p&gt;People writing add-ins for Visual studio probably have come across the nightmare of the Visual studio object model to go through the projects within a solution. I had to get&amp;nbsp;the list of projects in a solution, and for each solution its output path in the current configuration. Although I need the code in C# later on, the best way to check out how to program against the Visual Studio object model is within the Macro IDE of Visual Studio (Tools-&amp;gt;Macros-&amp;gt;Macros IDE).&lt;/p&gt; &lt;p&gt;Although the question seems quite straightforward, the trouble begins when you have Solution Folders containing projects. The &lt;strong&gt;Solution&lt;/strong&gt; object has a property called &lt;strong&gt;Projects&lt;/strong&gt;, but Solution Folders are also seen as &lt;strong&gt;Projects&lt;/strong&gt;. A project has project items. A project item can be a folder, a file, or... a project. You have to see it to believe the mess.&lt;/p&gt; &lt;p&gt;After a lot of trial and error I got to a solution where I check if a project item has its ConfigurationManager property set, if this is the case, it must be a project. Not sure if this is the best approach, but it works for me. For example for the following project structure using Solution Folders:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.xs4all.nl/~svdoever/blog/EnumeratingprojectsinaVisualStudiosoluti_11C90/image01.png" atomicselection="true"&gt;&lt;/a&gt;&lt;a href="http://www.xs4all.nl/~svdoever/blog/EnumeratingprojectsinaVisualStudiosoluti_11C90/image04.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="420" src="http://www.xs4all.nl/~svdoever/blog/EnumeratingprojectsinaVisualStudiosoluti_11C90/image0_thumb.png" width="373" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I get the following output:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.xs4all.nl/~svdoever/blog/EnumeratingprojectsinaVisualStudiosoluti_11C90/image07.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="335" src="http://www.xs4all.nl/~svdoever/blog/EnumeratingprojectsinaVisualStudiosoluti_11C90/image0_thumb1.png" width="566" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And the code to accomplish this (paste in &amp;nbsp;Macros IDE):&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; SolutionProjects()
        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; project &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; EnvDTE.Project
        Write(&lt;span style="color: rgb(163,21,21)"&gt;"--------- DUMP OF ALL PROJECTS IN CURRENT SOLUTION -------------"&lt;/span&gt;)
        &lt;span style="color: rgb(0,0,255)"&gt;Try
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;If&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Not&lt;/span&gt; DTE.Solution.IsOpen &lt;span style="color: rgb(0,0,255)"&gt;Then
&lt;/span&gt;                Write(&lt;span style="color: rgb(163,21,21)"&gt;"There is no solution open."&lt;/span&gt;)
            &lt;span style="color: rgb(0,0,255)"&gt;Else
&lt;/span&gt;                &lt;span style="color: rgb(0,0,255)"&gt;For&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Each&lt;/span&gt; project &lt;span style="color: rgb(0,0,255)"&gt;In&lt;/span&gt; DTE.Solution.Projects
                    NavProj(project)
                &lt;span style="color: rgb(0,0,255)"&gt;Next
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;If
&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;Catch&lt;/span&gt; ex &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; System.Exception
            Write(ex.ToString)
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Try
&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub
&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; NavProj(&lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; proj &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; Project)
        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; outputPathProperty &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; EnvDTE.Property
        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; outputPath &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String

&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;If&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Not&lt;/span&gt; (proj.ConfigurationManager &lt;span style="color: rgb(0,0,255)"&gt;Is&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Nothing&lt;/span&gt;) &lt;span style="color: rgb(0,0,255)"&gt;Then
&lt;/span&gt;            &lt;span style="color: rgb(0,128,0)"&gt;' It's a project!
&lt;/span&gt;            outputPathProperty = _
            proj.ConfigurationManager.ActiveConfiguration.Properties.Item(&lt;span style="color: rgb(163,21,21)"&gt;"OutputPath"&lt;/span&gt;)
            &lt;span style="color: rgb(0,0,255)"&gt;If&lt;/span&gt; outputPathProperty &lt;span style="color: rgb(0,0,255)"&gt;Is&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Nothing&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Then
&lt;/span&gt;                outputPath = &lt;span style="color: rgb(163,21,21)"&gt;"&amp;lt;no output path set&amp;gt;"
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;Else
&lt;/span&gt;                outputPath = outputPathProperty.Value
            &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;If
&lt;/span&gt;            Write(&lt;span style="color: rgb(163,21,21)"&gt;"### Project: "&lt;/span&gt; + proj.Name + &lt;span style="color: rgb(163,21,21)"&gt;", OutputPath: "&lt;/span&gt; + outputPath)
        &lt;span style="color: rgb(0,0,255)"&gt;Else
&lt;/span&gt;            NavProjItems(proj.ProjectItems)
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;If
&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub
&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; NavProjItems(&lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; projItems &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; ProjectItems)
        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; projectItem &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; EnvDTE.ProjectItem

        &lt;span style="color: rgb(0,0,255)"&gt;If&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Not&lt;/span&gt; (projItems &lt;span style="color: rgb(0,0,255)"&gt;Is&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Nothing&lt;/span&gt;) &lt;span style="color: rgb(0,0,255)"&gt;Then
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;For&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Each&lt;/span&gt; projectItem &lt;span style="color: rgb(0,0,255)"&gt;In&lt;/span&gt; projItems
                &lt;span style="color: rgb(0,0,255)"&gt;If&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Not&lt;/span&gt; (projectItem.SubProject &lt;span style="color: rgb(0,0,255)"&gt;Is&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Nothing&lt;/span&gt;) &lt;span style="color: rgb(0,0,255)"&gt;Then
&lt;/span&gt;                    &lt;span style="color: rgb(0,128,0)"&gt;' Recurse, can be an Enterprise project in 
&lt;/span&gt;                    &lt;span style="color: rgb(0,128,0)"&gt;' Visual Studio .NET 2002/2003 or a solution folder in VS 2005
&lt;/span&gt;                    NavProj(projectItem.SubProject)
                &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;If
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;Next
&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;If
&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub

&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; Write(&lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; s &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String&lt;/span&gt;)
        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; out &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; OutputWindowPane = GetOutputWindowPane(&lt;span style="color: rgb(163,21,21)"&gt;"MACRO OUTPUT"&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;True&lt;/span&gt;)
        out.OutputString(s)
        out.OutputString(vbCrLf)
    &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;br&gt;
&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;    Function&lt;/span&gt; GetOutputWindowPane(&lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; Name &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;Optional&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; show &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Boolean&lt;/span&gt; = &lt;span style="color: rgb(0,0,255)"&gt;True&lt;/span&gt;) &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; OutputWindowPane
        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; win &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
        &lt;span style="color: rgb(0,0,255)"&gt;If&lt;/span&gt; show &lt;span style="color: rgb(0,0,255)"&gt;Then&lt;/span&gt; win.Visible = &lt;span style="color: rgb(0,0,255)"&gt;True
&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; ow &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; OutputWindow = win.Object
        &lt;span style="color: rgb(0,0,255)"&gt;Dim&lt;/span&gt; owpane &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; OutputWindowPane
        &lt;span style="color: rgb(0,0,255)"&gt;Try
&lt;/span&gt;            owpane = ow.OutputWindowPanes.Item(Name)
        &lt;span style="color: rgb(0,0,255)"&gt;Catch&lt;/span&gt; e &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; System.Exception
            owpane = ow.OutputWindowPanes.Add(Name)
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Try
&lt;/span&gt;        owpane.Activate()
        &lt;span style="color: rgb(0,0,255)"&gt;Return&lt;/span&gt; owpane
    &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Function&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=1733607" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Great list of links to info on Visual Studio extensibility</title><link>http://weblogs.asp.net/soever/archive/2007/02/20/great-list-of-links-to-info-on-visual-studio-extensibility.aspx</link><pubDate>Tue, 20 Feb 2007 09:09:57 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:1727129</guid><dc:creator>svdoever</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/soever/rsscomments.aspx?PostID=1727129</wfw:commentRss><comments>http://weblogs.asp.net/soever/archive/2007/02/20/great-list-of-links-to-info-on-visual-studio-extensibility.aspx#comments</comments><description>&lt;p&gt;Writing add-ins and packages for Visual Studio is a whole different kind of sport. I stumbled across a great list of resources that can get you started: &lt;a title="http://www.mztools.com/resources_vsnet_addins.htm" href="http://www.mztools.com/resources_vsnet_addins.htm"&gt;http://www.mztools.com/resources_vsnet_addins.htm&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=1727129" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/soever/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/soever/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item></channel></rss>