<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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>Colin Thomsen's Microsoft Blog : dev</title><link>http://blogs.msdn.com/colinth/archive/tags/dev/default.aspx</link><description>Tags: dev</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Tech-Ed 2008 Demos</title><link>http://blogs.msdn.com/colinth/archive/2008/06/02/tech-ed-2008-demos.aspx</link><pubDate>Tue, 03 Jun 2008 06:25:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8570835</guid><dc:creator>colinth</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/colinth/comments/8570835.aspx</comments><wfw:commentRss>http://blogs.msdn.com/colinth/commentrss.aspx?PostID=8570835</wfw:commentRss><description>&lt;p&gt;Last year my &lt;a href="http://blogs.msdn.com/colinth/archive/2007/06/03/tech-ed-2007.aspx"&gt;boss took a trip to sunny Orlando&lt;/a&gt; to present at Tech-Ed and to offer help and suggestions in the Technical Learning Center (TLC). This year I'm lucky enough to be attending with a couple of other folks (Habib and Tim) and since I'm not an official Speaker I'll be spending most of my time hanging out in the Application Lifecycle Management (ALM) demo station for Visual Studio 2008 Team System, Development Edition.&lt;/p&gt;  &lt;p&gt;We've prepared a few demos covering things like:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Profiling using Instrumentation Mode on a Virtual PC image.&lt;/li&gt;    &lt;li&gt;Collecting Allocation and Object Lifetime information.&lt;/li&gt;    &lt;li&gt;Analyzing Performance Reports.&lt;/li&gt;    &lt;li&gt;Using Code Analysis to improve your code.&lt;/li&gt;    &lt;li&gt;Enabling Code Analysis Check-In Policies.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We're also looking forward to discussing your specific scenarios so if you're at Tech-Ed and interested in diagnostic tools and solving performance problems we'd love to chat with you.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8570835" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/colinth/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/colinth/archive/tags/dev/default.aspx">dev</category></item><item><title>Sysinternals is Live</title><link>http://blogs.msdn.com/colinth/archive/2008/05/30/sysinternals-is-live.aspx</link><pubDate>Fri, 30 May 2008 19:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8563618</guid><dc:creator>colinth</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/colinth/comments/8563618.aspx</comments><wfw:commentRss>http://blogs.msdn.com/colinth/commentrss.aspx?PostID=8563618</wfw:commentRss><description>&lt;P&gt;I use a bunch of &lt;A href="http://blogs.msdn.com/colinth/archive/2007/08/15/tools-of-the-trade.aspx" mce_href="http://blogs.msdn.com/colinth/archive/2007/08/15/tools-of-the-trade.aspx"&gt;Sysinternals tools&lt;/A&gt; for diagnosing problems while developing. My two favorites are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx"&gt;Process Explorer&lt;/A&gt;, a more fully-featured version of Task Manager that can report environment variables for running processes, show loaded DLLs and even display callstacks. It can also tell you which process is currently accessing a certain file or DLL, which is useful if you're trying to delete a file and getting a 'file is in use and cannot be deleted' error.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/processmonitor.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/processmonitor.mspx"&gt;Process Monitor&lt;/A&gt;, which can record all accesses to files, disks and the registry. Very useful for diagnosing complicated scenarios with multi-process development.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Recently the Sysinternals tools have been hosted on a new live site that can be accessed via the &lt;A href="http://live.sysinternals.com/" mce_href="http://live.sysinternals.com/"&gt;web&lt;/A&gt;, or as a file share. Now I can easily run a Sysinternals tool and be sure that it is the newest version:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/Sysinternalsislive_8550/dbgview_2.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/Sysinternalsislive_8550/dbgview_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" border=0 alt=dbgview src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/Sysinternalsislive_8550/dbgview_thumb.png" width=602 height=413 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/Sysinternalsislive_8550/dbgview_thumb.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=left&gt;I can also update my own local cache of useful tools by periodically copying from the file share.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8563618" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/colinth/archive/tags/dev/default.aspx">dev</category></item><item><title>Performance: Inserting Marks Using Code</title><link>http://blogs.msdn.com/colinth/archive/2008/05/01/inserting-marks-using-code.aspx</link><pubDate>Thu, 01 May 2008 17:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8569496</guid><dc:creator>colinth</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/colinth/comments/8569496.aspx</comments><wfw:commentRss>http://blogs.msdn.com/colinth/commentrss.aspx?PostID=8569496</wfw:commentRss><description>&lt;P&gt;Ian previously covered &lt;A href="http://blogs.msdn.com/ianhu/archive/2007/07/17/the-visual-studio-profiler-data-collection-control-part-1-excluding-application-startup-time.aspx" mce_href="http://blogs.msdn.com/ianhu/archive/2007/07/17/the-visual-studio-profiler-data-collection-control-part-1-excluding-application-startup-time.aspx"&gt;using the VS 2008 Data Collection Control to choose when to collect data&lt;/A&gt;. The Data Collection Control can also be used to insert marks into the performance report, but sometimes it is convenient to modify the source code to do this automatically.&lt;/P&gt;
&lt;P&gt;Consider a typical application (&lt;A href="http://msdn.microsoft.com/en-us/library/ms182399.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms182399.aspx"&gt;PeopleTrax&lt;/A&gt;) where I am interested in gathering profiler data only between when a button is clicked and when data is displayed. The application is shown below.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/pre_click.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/pre_click.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=420 alt=pre_click src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/pre_click_thumb.png" width=480 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/pre_click_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;After the 'Get People' button is clicked, data is displayed after just over 6 seconds. This seems a little excessive so I want to focus my performance investigation in this area.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/post_click.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/post_click.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=420 alt=post_click src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/post_click_thumb.png" width=480 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/post_click_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;To filter the data so that it only shows information collected between those two points, I could use the Data Collection Control, but maybe I'm planning to run a complicated scenario and don't want to have to remember to insert the marks manually. Instead, it is possible to modify the original code to request the profiler insert marks in the required locations.&lt;/P&gt;
&lt;P&gt;The Profiler API is available for managed code in an assembly that can be added directly to the project from \Program Files\Microsoft Visual Studio 9.0\Team Tools\Performance Tools.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/add_ref_zoom_border_2.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/add_ref_zoom_border_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=423 alt=add_ref_zoom_border src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/add_ref_zoom_border_thumb.png" width=480 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/add_ref_zoom_border_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;After adding the reference it shows up in the 'References' list for the PeopleTrax project.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/add_ref_done_zoom_border_2.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/add_ref_done_zoom_border_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=277 alt=add_ref_done_zoom_border src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/add_ref_done_zoom_border_thumb.png" width=222 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/add_ref_done_zoom_border_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;I can then use functions in the Profiler API to control the profiler. This might include starting or stopping data collection or in this case, inserting marks into the datastream. This is easily achieved as shown below.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/mark_in_code_2.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/mark_in_code_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=262 alt=mark_in_code src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/mark_in_code_thumb.png" width=640 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/mark_in_code_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;I can then profile the application and when I open the Performance Report and switch to Marks View I see that the marks have been correctly inserted. We can also see that the time elapsed between the marks is about 6.5 seconds, which corresponds with the measurement that is already displayed in the PeopleTrax UI.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/marks_view_zoom_border_2.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/marks_view_zoom_border_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=205 alt=marks_view_zoom_border src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/marks_view_zoom_border_thumb.png" width=519 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/marks_view_zoom_border_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;I can use the marks to filter the report to only show profiling data for the time between the two inserted marks and then start my performance investigation.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/filter_on_marks_border_4.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/filter_on_marks_border_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=296 alt=filter_on_marks_border src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/filter_on_marks_border_thumb_1.png" width=495 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/InsertingMarksUsingCode_10AFE/filter_on_marks_border_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8569496" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/colinth/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://blogs.msdn.com/colinth/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/colinth/archive/tags/dev/default.aspx">dev</category></item><item><title>Scripting for C#</title><link>http://blogs.msdn.com/colinth/archive/2007/12/31/scripting-for-c.aspx</link><pubDate>Tue, 01 Jan 2008 02:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6926195</guid><dc:creator>colinth</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/colinth/comments/6926195.aspx</comments><wfw:commentRss>http://blogs.msdn.com/colinth/commentrss.aspx?PostID=6926195</wfw:commentRss><description>&lt;P&gt;Have you ever wanted to quickly run a C# application without having to setup a new project in Visual Studio and configure all the settings? A fellow developer here at Microsoft has written a tool called &lt;A href="http://www.codeplex.com/CodeRunner" mce_href="http://www.codeplex.com/CodeRunner"&gt;Code Runner .NET&lt;/A&gt; that allows just that. It isn't scripting exactly because the code is still compiled before being run instead of being interpreted, but you don't have to maintain project or solution files or worry about binaries.&amp;nbsp; 
&lt;P&gt;To try it out I downloaded the tool and installed it to c:\temp\csr. I created a file test.csr after referring to the Getting Started Guide: 
&lt;DIV&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; System;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; Microsoft.Tools.CodeRunner;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; Program&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; Main(&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;[] args)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   8:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (args.Length == 0)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   9:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  10:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #008000"&gt;// TODO: Fill out usage information&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  11:&lt;/SPAN&gt;             Console.WriteLine(&lt;SPAN style="COLOR: #006080"&gt;"Usage: {0}"&lt;/SPAN&gt;, ScriptEnvironment.ScriptPath.FileAndExtension);&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  12:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; 0;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  13:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  14:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  15:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #008000"&gt;// TODO: Script code goes here...&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  16:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  17:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; 0;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  18:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  19:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;My directory was completely empty aside from this file:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;C:\temp\cr\mytest&amp;gt;dir /b&lt;BR&gt;test.csr&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I could then run the file as follows: 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;C:\temp\cr\mytest&amp;gt;..\csr test.csr&lt;BR&gt;Usage: test.csr&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;That's it. The directory was still clean after the run:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;C:\temp\cr\mytest&amp;gt;dir /b&lt;BR&gt;test.csr&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You can also debug your code in Visual Studio using a a nifty tool called scaffold which makes the requisite csproj and sln files and conveniently cleans up after we're done: 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;C:\temp\cr\mytest&amp;gt;..\Scaffold.exe test.csr&lt;BR&gt;Response file 'C:\temp\cr\csc.rsp' processed&lt;BR&gt;File 'C:\temp\cr\mytest\Scaffold_78D592CA\test.csproj' created&lt;BR&gt;File 'C:\temp\cr\mytest\Scaffold_78D592CA\test.csproj.user' created&lt;BR&gt;File 'C:\temp\cr\mytest\Scaffold_78D592CA\test.sln' created&lt;BR&gt;Starting Visual Studio&lt;BR&gt;Waiting for Visual Studio to exit&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We can now debug as usual: 
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ScriptingforC_D2DF/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ScriptingforC_D2DF/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=418 alt=image src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ScriptingforC_D2DF/image_thumb.png" width=644 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ScriptingforC_D2DF/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;When Visual Studio closes:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P align=left&gt;&lt;FONT face="Courier New" size=2&gt;Sub-directory 'C:\temp\cr\mytest\Scaffold_78D592CA\' was deleted&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P align=left&gt;Code Runner .NET has already been updated to support Visual Studio 2008 so &lt;A href="http://www.codeplex.com/CodeRunner" mce_href="http://www.codeplex.com/CodeRunner"&gt;download it from CodePlex now&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6926195" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/colinth/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/colinth/archive/tags/dev/default.aspx">dev</category></item><item><title>Visual Studio Team System Chat – December 5th</title><link>http://blogs.msdn.com/colinth/archive/2007/11/21/visual-studio-team-system-chat-december-5th.aspx</link><pubDate>Wed, 21 Nov 2007 22:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6458339</guid><dc:creator>colinth</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/colinth/comments/6458339.aspx</comments><wfw:commentRss>http://blogs.msdn.com/colinth/commentrss.aspx?PostID=6458339</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Join members of the Visual Studio Team System product group to discuss features available in Team Foundation Server, Team Suite, Architecture Edition, Development Edition, Database Edition, and Test Edition. In addition, discuss what's new for these editions for Visual Studio 2008.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;We will be holding two sessions:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Join the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/chats" mce_href="http://msdn.microsoft.com/chats"&gt;&lt;FONT face="Times New Roman" size=3&gt;chat&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; on Wednesday, December 5th, 2007 from 10:00am - 11:00am Pacific Time. &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/communities/chats/vcs/07_1205_msdn_VSTS10.ics" mce_href="http://www.microsoft.com/communities/chats/vcs/07_1205_msdn_VSTS10.ics"&gt;&lt;FONT face="Times New Roman" size=3&gt;Add to Calendar&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; | &lt;/FONT&gt;&lt;A href="http://www.timeanddate.com/worldclock/fixedtime.html?month=12&amp;amp;day=5&amp;amp;year=2007&amp;amp;hour=10&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=234" mce_href="http://www.timeanddate.com/worldclock/fixedtime.html?month=12&amp;amp;day=5&amp;amp;year=2007&amp;amp;hour=10&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=234"&gt;&lt;FONT face="Times New Roman" size=3&gt;Additional Time Zones&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;BR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-tab-count: 1"&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&gt;-and-&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Join the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/chats" mce_href="http://msdn.microsoft.com/chats"&gt;&lt;FONT face="Times New Roman" size=3&gt;chat&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; on Wednesday, December 5th, 2007 from 4:00pm - 5:00pm Pacific Time. &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/communities/chats/vcs/07_1205_msdn_VSTS4.ics" mce_href="http://www.microsoft.com/communities/chats/vcs/07_1205_msdn_VSTS4.ics"&gt;&lt;FONT face="Times New Roman" size=3&gt;Add to Calendar&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; | &lt;/FONT&gt;&lt;A href="http://www.timeanddate.com/worldclock/fixedtime.html?month=12&amp;amp;day=5&amp;amp;year=2007&amp;amp;hour=16&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=234" mce_href="http://www.timeanddate.com/worldclock/fixedtime.html?month=12&amp;amp;day=5&amp;amp;year=2007&amp;amp;hour=16&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=234"&gt;&lt;FONT face="Times New Roman" size=3&gt;Additional Time Zones&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;---&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;I'll be in the Wed 4 pm - 5 pm chat to answer any questions related to profiling. Another member of the profiler team will be online for the earlier chat.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;---&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6458339" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/colinth/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/colinth/archive/tags/dev/default.aspx">dev</category></item><item><title>Microsoft Blogs I Read</title><link>http://blogs.msdn.com/colinth/archive/2007/10/16/microsoft-blogs-i-read.aspx</link><pubDate>Tue, 16 Oct 2007 21:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5407961</guid><dc:creator>colinth</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/colinth/comments/5407961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/colinth/commentrss.aspx?PostID=5407961</wfw:commentRss><description>&lt;P&gt;There are a lot of Microsoft bloggers, literally thousands of them. When I first joined Microsoft I wasn't sure who to read. I've gradually built up a list based on interesting product and feature announcements and people I've met. Here they are:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Profiling&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/profiler" mce_href="http://blogs.msdn.com/profiler"&gt;Our Team Blog&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/ianhu" mce_href="http://blogs.msdn.com/ianhu"&gt;IanWho's Blog&lt;/A&gt;. Written by a fellow dev on the profiler team, Ian has probably written the most about profiling across the team.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/ms_joc/" mce_href="http://blogs.msdn.com/ms_joc/"&gt;joc's bLog&lt;/A&gt;. Written by my bosses' boss.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/mgoldin/" mce_href="http://blogs.msdn.com/mgoldin/"&gt;mgoldin's blog&lt;/A&gt;. Written by a senior dev on my team. Find out about the difference between different types of samples etc.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/chrissc/" mce_href="http://blogs.msdn.com/chrissc/"&gt;My Code Does What?!&lt;/A&gt;. A relatively new blog about profiling by another fellow dev.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/scarroll" mce_href="http://blogs.msdn.com/scarroll"&gt;scarroll's Blog&lt;/A&gt;. Written by my boss.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Technical&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/bharry/default.aspx" mce_href="http://blogs.msdn.com/bharry/default.aspx"&gt;bharry's WebLog&lt;/A&gt;. Written by a Technical Fellow (&lt;A class="" href="http://blogs.msdn.com/anutthara/archive/2007/08/17/brian-harry-is-now-technical-fellow.aspx" mce_href="http://blogs.msdn.com/anutthara/archive/2007/08/17/brian-harry-is-now-technical-fellow.aspx"&gt;read more about this&lt;/A&gt;) with a huge amount of experience who has a big focus on TFS.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/greggm" mce_href="http://blogs.msdn.com/greggm"&gt;Greggm's Weblog&lt;/A&gt;. Written by a senior dev on the Debugger team. Has many advanced debugger tips.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.technet.com/markrussinovich/" mce_href="http://blogs.technet.com/markrussinovich/"&gt;Mark Russinovich&lt;/A&gt;. Mark wrote some cool &lt;A class="" href="http://www.microsoft.com/technet/sysinternals/default.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/default.mspx"&gt;Sysinternals tools&lt;/A&gt; and now blogs some fascinating posts about his investigation into problems he finds everyday just using his PC.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/ricom" mce_href="http://blogs.msdn.com/ricom"&gt;Rico Mariani's Performance Tidbits&lt;/A&gt;. Written by a senior Microsoftie who has been here for a long time. Gives tips for analyzing performance and provides guidelines to use in writing .NET code.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://weblogs.asp.net/scottgu" mce_href="http://weblogs.asp.net/scottgu"&gt;ScottGu's Blog&lt;/A&gt;. Find out about LINQ, ASP.NET AJAX etc. etc. This blog has many examples including screenshots and source code.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/somasegar/default.aspx" mce_href="http://blogs.msdn.com/somasegar/default.aspx"&gt;Somasegar's WebLog&lt;/A&gt;.&amp;nbsp;As the corporate VP of DevDiv, Soma covers a lot of Visual Studio features and other developer tools.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Other&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://internationaltechjobs.spaces.live.com/" mce_href="http://internationaltechjobs.spaces.live.com"&gt;Microsoft International Tech Jobs&lt;/A&gt;. I keep an eye on&amp;nbsp;Microsoft's international opportunities here.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jobsblog" mce_href="http://blogs.msdn.com/jobsblog"&gt;Microsoft's JobsBlog&lt;/A&gt;. Discusses many aspects of Microsoft's recruiting. Covers the Vancouver office developments and has tips for prospective Microsofties.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;That's just some of the Microsoft blogs I read. Are there other 'must-reads' that I'm missing?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5407961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/colinth/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/colinth/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/colinth/archive/tags/dev/default.aspx">dev</category></item><item><title>Tools of the Trade</title><link>http://blogs.msdn.com/colinth/archive/2007/08/15/tools-of-the-trade.aspx</link><pubDate>Thu, 16 Aug 2007 03:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4407580</guid><dc:creator>colinth</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/colinth/comments/4407580.aspx</comments><wfw:commentRss>http://blogs.msdn.com/colinth/commentrss.aspx?PostID=4407580</wfw:commentRss><description>&lt;P&gt;I've been thinking about what some of the most important tools are for me while coding. Here's a few:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Good IDE - syntax highlighting, integrated builds, source control integration, search facility, debugger and profiler built-in. I use &lt;A href="http://msdn2.microsoft.com/en-us/teamsystem/default.aspx" mce_href="http://msdn2.microsoft.com/en-us/teamsystem/default.aspx"&gt;VSTS&lt;/A&gt;.&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_1.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_1.png" atomicselection="true"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=490 alt=image src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_1.png" width=722 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_1.png"&gt;&lt;/A&gt; 
&lt;LI&gt;Source control/bug tracking system. I use &lt;A href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx" mce_href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx"&gt;TFS&lt;/A&gt; (typically a &lt;A href="http://blogs.msdn.com/colinth/archive/2007/06/07/developer-dogfooding-at-microsoft.aspx" mce_href="http://blogs.msdn.com/colinth/archive/2007/06/07/developer-dogfooding-at-microsoft.aspx"&gt;dogfood&lt;/A&gt; version of TFS).&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_2.png" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=304 alt=image src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_2.png" width=489 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_2.png"&gt;&lt;/A&gt; 
&lt;LI&gt;Windows Task Manager.&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_3.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_3.png" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=314 alt=image src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_3.png" width=274 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_3.png"&gt;&lt;/A&gt; &lt;BR&gt;I use task manager to:&lt;BR&gt;- View CPU usage&lt;BR&gt;- Kill processes&lt;BR&gt;- Start a new explorer.exe if I ever kill explorer.exe. Do this from the Applications tab. 
&lt;LI&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx"&gt;Process Explorer&lt;/A&gt;.&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_4.png" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=356 alt=image src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_4.png" width=423 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_4.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;BR&gt;I use Process Explorer like task manager, but it can also:&lt;BR&gt;- Find what process has a handle (e.g. a file) open. This can be handy if you want to delete a file but a process has it locked.&lt;BR&gt;-&amp;nbsp;Find out what DLLs a process has loaded&lt;BR&gt;- List the environment variables for a running process 
&lt;LI&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/processmonitor.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/processmonitor.mspx"&gt;Process Monitor&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_5.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_5.png" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=243 alt=image src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_5.png" width=425 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_5.png"&gt;&lt;/A&gt; &lt;BR&gt;I use Process Monitor to record file, registry and process activity. This is very useful when debugging issues in complex programs like VSTS which have a lot of registry interactions. 
&lt;LI&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx"&gt;DebugView&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_6.png" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=232 alt=image src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_6.png" width=431 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_6.png"&gt;&lt;/A&gt; &lt;BR&gt;Display debugging output from programs without having to attach a debugger. This is very useful if you want to run your program outside a debugger and still want to see all those debug prints. 
&lt;LI&gt;Media Player. I like to listen to music while I code.&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_7.png" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=29 alt=image src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_7.png" width=175 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/ToolsoftheTrade_CABC/image_thumb_7.png"&gt;&lt;/A&gt; 
&lt;LI&gt;Outlook. It is somewhat sad that I spend a fair percentage of my day reading emails, scheduling or checking up on meetings and writing notes in an Outlook journal, but I do and so I have Outlook open all the time. 
&lt;LI&gt;Internet Explorer. I need to use MSDN a lot and do web searches. I also read RSS feeds of relevant blogs with IE. 
&lt;LI&gt;Regedit. 
&lt;LI&gt;Remote Desktop. I work on different machines pretty regularly and Remote Desktop makes switching between machines easy.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4407580" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/colinth/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://blogs.msdn.com/colinth/archive/tags/dev/default.aspx">dev</category></item></channel></rss>