<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>TeamSystemNotes</title>
	<atom:link href="http://blogs.teamsystemnotes.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.teamsystemnotes.com</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Mon, 22 Dec 2008 00:17:56 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Test Driven Development and Keybindings</title>
		<link>http://blogs.teamsystemnotes.com/2008/12/22/test-driven-development-and-keybindings/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/12/22/test-driven-development-and-keybindings/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 00:17:56 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Development Edition]]></category>

		<category><![CDATA[Testing]]></category>

		<category><![CDATA[Usage]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/12/22/test-driven-development-and-keybindings/</guid>
		<description><![CDATA[For those that practice Test Driven Development (TDD) here’s a quick reminder about keybindings in Visual Studio 2008 that will make your life easier:

Run all tests in the solution – Ctrl+R, A
Run tests in the current class – Ctrl+R, C
Run tests in the current context – Ctrl+R, T
Run tests in the current namespace – Ctrl+R, [...]]]></description>
			<content:encoded><![CDATA[<p>For those that practice Test Driven Development (TDD) here’s a quick reminder about keybindings in Visual Studio 2008 that will make your life easier:</p>
<ul>
<li>Run all tests in the solution – Ctrl+R, A</li>
<li>Run tests in the current class – Ctrl+R, C</li>
<li>Run tests in the current context – Ctrl+R, T</li>
<li>Run tests in the current namespace – Ctrl+R, N</li>
</ul>
<p>There is also a variant which debugs the tests, to use this variant hold down Ctrl when pressing the second key in the chord.</p>
<p>I also like to bind Ctrl+N, T to Project.AddNewTest and Ctrl+N, U to Project.AddUnitTest so I can quickly add tests to the current test project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/12/22/test-driven-development-and-keybindings/feed/</wfw:commentRss>
		</item>
		<item>
		<title>API Note #1: Getting Started</title>
		<link>http://blogs.teamsystemnotes.com/2008/12/09/api-note-1-getting-started/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/12/09/api-note-1-getting-started/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 09:58:05 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[APINotes]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/?p=63</guid>
		<description><![CDATA[Welcome to the first of many posts about the Team Foundation Server API. These posts will explore the various namespaces and classes available to programmatically integrate with the components of Team Foundation Server including build, source control, reporting, testing, and work item tracking.
Most examples in this series are written as C# console applications for simplicity [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to the first of many posts about the Team Foundation Server API. These posts will explore the various namespaces and classes available to programmatically integrate with the components of Team Foundation Server including build, source control, reporting, testing, and work item tracking.</p>
<p>Most examples in this series are written as C# console applications for simplicity but these concepts can be used in Windows Forms, WPF, WCF, ASP.NET, or any other technology or language that can use .NET assemblies.</p>
<p>The example projects will be attached to each post for you to download.</p>
<p><strong>Assumptions</strong></p>
<p>This series of posts assumes that you are familiar with both Visual Studio Team System 2008 and Team Foundation Server 2008 from a user’s and/or administrator’s perspective.</p>
<p><strong>Prerequisites</strong></p>
<p>The first step is to make sure you have all of the prerequisites to follow the examples we go through.</p>
<ul>
<li>Visual Studio 2008 Professional or Visual Studio Team System 2008
<ul>
<li>Some posts may require a specific edition, but I’ll point that out at the time.</li>
<li>You can download a <a href="https://www.microsoft.com/downloads/details.aspx?FamilyID=d95598d7-aa6e-4f24-82e3-81570c5384cb" target="_blank">90-day trial of Visual Studio Team System 2008 Team Suite</a>.</li>
</ul>
</li>
<li>Visual Studio 2008 Team Explorer
<ul>
<li>You can install this from the TFC directory of the Visual Studio Team System 2008 or Team Foundation Server 2008 installation media.</li>
<li>Alternatively, you can download <a href="https://www.microsoft.com/downloads/details.aspx?FamilyID=0ed12659-3d41-4420-bbb0-a46e51bfca86" target="_blank">Visual Studio 2008 Team Explorer</a> from Microsoft Downloads.</li>
</ul>
</li>
<li>Access to a <strong>non-production</strong> Team Foundation Server 2008
<ul>
<li>Some posts may demonstrate APIs which create, modify, or delete data so you should not use them against a production instance of Team Foundation Server without testing them first and fully understanding what they do.</li>
<li>You can download <a href="https://www.microsoft.com/downloads/details.aspx?FamilyID=72262ead-e49d-43d4-aa45-1da2a27d9a65" target="_blank">Visual Studio Team System 2008 Team Foundation Server VPC Image (Trial)</a> from Microsoft Downloads.</li>
<li>Alternatively, you can download <a href="https://www.microsoft.com/downloads/details.aspx?FamilyID=c7a809d8-8c9f-439f-8147-948bc6957812" target="_blank">Visual Studio Team System 2008 Team Foundation Server and Team Suite VPC Image (Trial)</a>which contains both Team Foundation Server 2008 and Visual Studio Team System 2008 Team Suite.</li>
</ul>
</li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=9E40A5B6-DA41-43A2-A06D-3CEE196BFE3D" target="_blank">Team Foundation Server 2008 Service Pack 1</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=FBEE1648-7106-44A7-9649-6D9F6D58056E" target="_blank">Visual Studio 2008 Service Pack 1</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59ec6ec3-4273-48a3-ba25-dc925a45584d" target="_blank">Visual Studio 2008 SDK</a></li>
</ul>
<p><strong>Registered Servers</strong></p>
<p>The first API we’re going to look at is Microsoft.TeamFoundation.Client.RegisteredServers which provides access to the list of Team Foundation Servers that are registered on the client machine. This is the API that is used to populate the Add/Remove Team Foundation Server dialog in Visual Studio:</p>
<p><a href="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/12/addremoveteamfoundationserver.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="AddRemoveTeamFoundationServer" src="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/12/addremoveteamfoundationserver-thumb.png" border="0" alt="AddRemoveTeamFoundationServer" width="555" height="353" /></a></p>
<p>Since this is our first time using the API we’ll go through this example in more detail than we will for later examples.</p>
<ol>
<li>Create a new C# Console Application.</li>
<li>Add a GAC reference to Microsoft.TeamFoundation.Client version 9.0.0.0.<a href="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/12/addreference.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="AddReference" src="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/12/addreference-thumb.png" border="0" alt="AddReference" width="467" height="383" /></a></li>
<li>Add a using statement to import the Microsoft.TeamFoundation.Client namespace:
<pre class="csharpcode"><span class="kwrd">using</span> Microsoft.TeamFoundation.Client;</pre>
</li>
<li>Add the following code, which will simply print the name of each registered server, to the Main method:
<pre class="csharpcode"><span class="kwrd">foreach</span> (<span class="kwrd">string</span> registeredServerName <span class="kwrd">in</span> <strong>RegisteredServers.GetServerNames()</strong>)
{
    Console.WriteLine(registeredServerName);
} 

Console.ReadLine();</pre>
<p><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></li>
</ol>
<p><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p>Rather than retrieving just the server name we can retrieve a TeamFoundationServer object (which we’ll discuss in more detail later in this post) representing the server by calling the GetServers method. This example produces the same output as the previous one:</p>
<pre class="csharpcode"><span class="kwrd">foreach</span> (TeamFoundationServer registeredServer <span class="kwrd">in</span> <strong>RegisteredServers.GetServers()</strong>)
{
    Console.WriteLine(registeredServer.Name);
}</pre>
<p>We can also use the RegisteredServers class to add servers to or remove servers from the list of registered servers as shown in this example:</p>
<pre class="csharpcode"><span class="kwrd">if</span> (args.Length != 1)
{
    Console.Error.WriteLine(<span class="str">"USAGE: AddRegisteredServer.exe &lt;teamFoundationServerUrl&gt;"</span>);
    <span class="kwrd">return</span>;
}

<span class="kwrd">string</span> teamFoundationServerUrl = args[0];
TeamFoundationServer teamFoundationServer = TeamFoundationServerFactory.GetServer(    teamFoundationServerUrl);
<strong>RegisteredServers.AddServer(teamFoundationServer);</strong></pre>
<p>The AddServer method only accepts a TeamFoundationServer object and not a string so we use the TeamFoundationServerFactory (which we’ll discuss in more detail later in this post) to retrieve one.</p>
<p><strong>TeamFoundationServer vs TeamFoundationServerFactory</strong></p>
<p>The TeamFoundationServer class is one of the most important in the API as it represents a connection to a Team Foundation Server. There are two ways of creating a TeamFoundationServer object:</p>
<ol>
<li>Directly creating an instance of the class passing the URL of the Team Foundation Server (or just the hostname) to the constructor:
<pre class="csharpcode">TeamFoundationServer teamFoundationServer;teamFoundationServer = <strong><span class="kwrd">new</span> TeamFoundationServer(<span class="str">"http://T1W102826-TFS2K8:8080"</span>);</strong></pre>
</li>
<li>Passing the URL or hostname to the static GetServer method on the TeamFoundationServerFactory class:
<pre class="csharpcode">TeamFoundationServer teamFoundationServer;teamFoundationServer = <strong>TeamFoundationServerFactory.GetServer(<span class="str">"http://T1W102826-TFS2K8:8080"</span>);</strong></pre>
</li>
</ol>
<p><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<ol><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></ol>
<p>So which should you use? The best practice is to use the TeamFoundationServerFactory because it caches the TeamFoundationServer objects based on their URI. This improves performance by reusing connections and avoiding having to re-authenticate (which is particularly important to avoid unnecessary authentication prompts if the user isn’t authenticated automatically). Regardless of whether you request the server by name or by URI, it will be cached based on the case-insensitive URI, but ideally you should use either the name or the URI consistently.</p>
<p><strong>Authenticating</strong></p>
<p>When you call an API that requires authentication it calls the EnsureAuthenticated method on the TeamFoundationServer object to check if the user is already authenticated and start the authentication process if they’re not.</p>
<p>Initially the API tries to authenticate the user using their Windows credentials and throws a TeamFoundationServerUnauthorizedException if this fails. There are three possible ways to avoid this:</p>
<ul>
<li>Pass a credential object to the TeamFoundationServer class constructor.</li>
<li>Pass a credential and credential provider object to the TeamFoundationServer class constructor.</li>
<li>Pass a credential provider object to the TeamFoundationServerFactor.GetServer method.</li>
</ul>
<p>If the TeamFoundationServer object has a credential object this will be used instead of the user’s Windows credentials to initially authenticate the user. But if this fails a TeamFoundationServerUnauthorizedException will still be thrown unless a credential provider object has been specified.</p>
<p>If a credential provider has been specified then its GetCredentials method will be called to provide the fallback credentials to use. If authentication using these fallback credentials succeeds then the API calls the credential provider’s NotifyCredentialsAuthenticated method. The API ships a single credential provider, UICredentialsProvider, that displays the standard login dialog and returns a credential based on what is entered:</p>
<p><a href="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/12/authenticationdialog.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="AuthenticationDialog" src="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/12/authenticationdialog-thumb.png" border="0" alt="AuthenticationDialog" width="326" height="254" /></a></p>
<p>This example passes a UICredentialsProvider to the TeamFoundationServerFactory.GetServer method. If authentication can be completed automatically using the user’s Windows credentials then it will be, otherwise the user will be prompted to enter their credentials:</p>
<pre class="csharpcode">TeamFoundationServer teamFoundationServer;
teamFoundationServer = TeamFoundationServerFactory.GetServer(
    <span class="str">"http://T1W102826-TFS2K8:8080"</span>,
    <strong><span class="kwrd">new</span> UICredentialsProvider()
</strong>);
teamFoundationServer.EnsureAuthenticated();</pre>
<p><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p>Once the user has been authenticated you can retrieve their details through the AuthenticatedUserName, AuthenticatedUserDisplayName, AuthenticatedUserIdentity, or Credentials properties on the TeamFoundationServer object:</p>
<pre class="csharpcode">Console.WriteLine(<span class="str">"{0} = {1}"</span>,     <span class="str">"AuthenticatedUserName"</span>, teamFoundationServer.AuthenticatedUserName);
Console.WriteLine(<span class="str">"{0} = {1}"</span>,     <span class="str">"AuthenticatedUserDisplayName"</span>, teamFoundationServer.AuthenticatedUserDisplayName);</pre>
<p><strong>Conclusion</strong></p>
<p>In this (lengthy) post we’ve looked at how to reference the Team Foundation Server API, work with registered servers, access TeamFoundationServer objects, and authenticate to Team Foundation Server. Stay tuned for the next post where we look at how to access the various components of Team Foundation Server.</p>
<p><a href="http://cid-df77fabf7bd79004.skydrive.live.com/self.aspx/Public/APINotes.zip">Download sample files for API Note #1: Getting Started</a>.</p>
<p><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/12/09/api-note-1-getting-started/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Inside the Microsoft&#174; Build Engine: Using MSBuild and Team Foundation Build</title>
		<link>http://blogs.teamsystemnotes.com/2008/12/01/inside-the-microsoft-build-engine-using-msbuild-and-team-foundation-build/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/12/01/inside-the-microsoft-build-engine-using-msbuild-and-team-foundation-build/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 12:30:54 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Administration]]></category>

		<category><![CDATA[Build Automation]]></category>

		<category><![CDATA[Customization]]></category>

		<category><![CDATA[Development Edition]]></category>

		<category><![CDATA[Installation]]></category>

		<category><![CDATA[Team Foundation Server]]></category>

		<category><![CDATA[Test Edition]]></category>

		<category><![CDATA[Testing]]></category>

		<category><![CDATA[Usage]]></category>

		<category><![CDATA[Version Control]]></category>

		<category><![CDATA[Work Item Tracking]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/12/01/inside-the-microsoft-build-engine-using-msbuild-and-team-foundation-build/</guid>
		<description><![CDATA[I’m proud to say that after many months of work Sayed Ibrahim Hashimi and I have completed work on Inside the Microsoft® Build Engine: Using MSBuild and Team Foundation Build (PRO-Developer). It is being published by Microsoft Press and is due out on 7th January 2009.
]]></description>
			<content:encoded><![CDATA[<p>I’m proud to say that after many months of work <a target="_blank" href="http://www.sedodream.com/">Sayed Ibrahim Hashimi</a> and I have completed work on <a href="http://www.amazon.com/gp/product/0735626286?ie=UTF8&amp;tag=willblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0735626286">Inside the Microsoft® Build Engine: Using MSBuild and Team Foundation Build (PRO-Developer)</a>. It is being published by Microsoft Press and is due out on 7th January 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/12/01/inside-the-microsoft-build-engine-using-msbuild-and-team-foundation-build/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Preserving Labels When Builds Are Deleted</title>
		<link>http://blogs.teamsystemnotes.com/2008/10/21/preserving-labels-when-builds-are-deleted/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/10/21/preserving-labels-when-builds-are-deleted/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 01:10:26 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Build Automation]]></category>

		<category><![CDATA[Team Foundation Server]]></category>

		<category><![CDATA[Usage]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/10/21/preserving-labels-when-builds-are-deleted/</guid>
		<description><![CDATA[When builds are deleted in TFS 2008, either manually or via retention policies, everything about the build is deleted, including the label. This completely removes the ability to reproduce the build in the future if the need arises.
In Service Pack 1 the capability was added to have labels preserved when the build is deleted and [...]]]></description>
			<content:encoded><![CDATA[<p>When builds are deleted in TFS 2008, either manually or via retention policies, everything about the build is deleted, including the label. This completely removes the ability to reproduce the build in the future if the need arises.</p>
<p>In Service Pack 1 the capability was added to have labels preserved when the build is deleted and <a target="_blank" href="http://blogs.msdn.com/buckh/archive/2008/10/20/tfs-2008-sp1-new-setting-to-delete-a-build-without-deleting-the-build-label.aspx">Buck explains how to enable this in his blog post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/10/21/preserving-labels-when-builds-are-deleted/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Team Foundation Build Load Balancer Released</title>
		<link>http://blogs.teamsystemnotes.com/2008/10/21/team-foundation-build-load-balancer-released/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/10/21/team-foundation-build-load-balancer-released/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 01:06:54 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Build Automation]]></category>

		<category><![CDATA[Team Foundation Server]]></category>

		<category><![CDATA[Usage]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/10/21/team-foundation-build-load-balancer-released/</guid>
		<description><![CDATA[I’ve released a new open-source project that we’ve been using internally for a number of months called the Team Foundation Build Load Balancer (http://www.codeplex.com/teambuildloadbalance/). It’s a very simple command-line application (which is designed to be run in a scheduled job) to balance queued builds between multiple build agents irrespective of which build agent it was [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve released a new open-source project that we’ve been using internally for a number of months called the Team Foundation Build Load Balancer (<a title="http://www.codeplex.com/teambuildloadbalance/" href="http://www.codeplex.com/teambuildloadbalance/">http://www.codeplex.com/teambuildloadbalance/</a>). It’s a very simple command-line application (which is designed to be run in a scheduled job) to balance queued builds between multiple build agents irrespective of which build agent it was queued on.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/10/21/team-foundation-build-load-balancer-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open-Source Project for Pre Check-In Validation</title>
		<link>http://blogs.teamsystemnotes.com/2008/10/10/open-source-project-for-pre-check-in-validation/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/10/10/open-source-project-for-pre-check-in-validation/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 23:32:23 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Build Automation]]></category>

		<category><![CDATA[Development Edition]]></category>

		<category><![CDATA[Usage]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/10/10/open-source-project-for-pre-check-in-validation/</guid>
		<description><![CDATA[A new open-source project has been released on CodePlex called the TFS Check-in Validation Tool. The main purpose of this project is to allow developers to run their changes through a full end-to-end build prior to checking them in.
It works basically like this:

Developer shelves their changes.
Developer starts a build using the BuddyBuild menu in Visual [...]]]></description>
			<content:encoded><![CDATA[<p>A new open-source project has been released on <a target="_blank" href="http://www.codeplex.com/">CodePlex</a> called the <a target="_blank" href="http://www.codeplex.com/BuddyBuild">TFS Check-in Validation Tool</a>. The main purpose of this project is to allow developers to run their changes through a full end-to-end build prior to checking them in.</p>
<p>It works basically like this:</p>
<ol>
<li>Developer shelves their changes.</li>
<li>Developer starts a build using the BuddyBuild menu in Visual Studio:     <br /><a href="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/10/image1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/10/image-thumb1.png" width="644" height="231" /></a></li>
<li>Developer selects the shelveset they want to build and clicks Queue Build.     <br />&#160;<a href="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/10/image2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/10/image-thumb2.png" width="467" height="484" /></a> </li>
<li>The TFS Check-In Validation Tool extends the default build process to get the shelveset after the normal get has been performed so that the developer’s changes are built as well. If the build succeeds then it can also (optionally) check-in the shelveset automatically.</li>
</ol>
<p>Leave your feedback on the Discussions tab or raise an bugs or issues on the Issues tab.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/10/10/open-source-project-for-pre-check-in-validation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Allowing Users To Edit Destination Email Address in Reporting Services</title>
		<link>http://blogs.teamsystemnotes.com/2008/10/07/allowing-users-to-edit-destination-email-address-in-reporting-services/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/10/07/allowing-users-to-edit-destination-email-address-in-reporting-services/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 22:02:07 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Build Automation]]></category>

		<category><![CDATA[Customization]]></category>

		<category><![CDATA[Team Foundation Server]]></category>

		<category><![CDATA[Testing]]></category>

		<category><![CDATA[Version Control]]></category>

		<category><![CDATA[Work Item Tracking]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/10/07/allowing-users-to-edit-destination-email-address-in-reporting-services/</guid>
		<description><![CDATA[When users subscribe to a report via email in Reporting Services the destination email address field defaults to their username and is read-only. If the SMTP server that you’re using won’t accept emails for plain usernames then you will have to allow users to enter their full email address when subscribing to a report.
To do [...]]]></description>
			<content:encoded><![CDATA[<p>When users subscribe to a report via email in Reporting Services the destination email address field defaults to their username and is read-only. If the SMTP server that you’re using won’t accept emails for plain usernames then you will have to allow users to enter their full email address when subscribing to a report.</p>
<p>To do this:</p>
<ol>
<li>
<div align="left">Edit %ProgramFiles%\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\rsreportserver.config.</div>
</li>
<li>Locate &lt;SendEmailToUserAlias&gt;True&lt;/SendEmailToUserAlias&gt; and change True to False.</li>
<li>Save the file and restart the ReportServer service.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/10/07/allowing-users-to-edit-destination-email-address-in-reporting-services/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Specifying What&#8217;s Included In A New Test Project</title>
		<link>http://blogs.teamsystemnotes.com/2008/10/05/specifying-whats-included-in-a-new-test-project/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/10/05/specifying-whats-included-in-a-new-test-project/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 06:14:23 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Development Edition]]></category>

		<category><![CDATA[Test Edition]]></category>

		<category><![CDATA[Testing]]></category>

		<category><![CDATA[Usage]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/10/05/specifying-whats-included-in-a-new-test-project/</guid>
		<description><![CDATA[When you create a new test project the following files are added to it by default:

AuthoringTests.txt
ManualTest1.mht
UnitTest1.vb (or UnitTest1.cs)

You can configure what files are added in Tools &#124; Options &#124; Test Tools &#124; Test Project as shown here:

]]></description>
			<content:encoded><![CDATA[<p>When you create a new test project the following files are added to it by default:</p>
<ul>
<li>AuthoringTests.txt</li>
<li>ManualTest1.mht</li>
<li>UnitTest1.vb (or UnitTest1.cs)</li>
</ul>
<p>You can configure what files are added in Tools | Options | Test Tools | Test Project as shown here:</p>
<p><a href="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/10/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.teamsystemnotes.com/wp-content/uploads/blogs.teamsystemnotes.com/2008/10/image-thumb.png" width="644" height="374" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/10/05/specifying-whats-included-in-a-new-test-project/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tracking Time Against TFS Work Items Using TFS Working On</title>
		<link>http://blogs.teamsystemnotes.com/2008/10/05/tracking-time-against-tfs-work-items/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/10/05/tracking-time-against-tfs-work-items/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 03:04:43 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Team Foundation Server]]></category>

		<category><![CDATA[Usage]]></category>

		<category><![CDATA[Work Item Tracking]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/10/05/tracking-time-against-tfs-work-items/</guid>
		<description><![CDATA[On Friday at the Queensland VSTS User Group Matthew Rowan mentioned an open-source system tray utility he’d written called TFS Working On. This utility allows developers to select the work item they are currently working on and it will record the time spent, add it to the work item’s history, as well as updating the [...]]]></description>
			<content:encoded><![CDATA[<p>On Friday at the <a target="_blank" href="http://qvstsug.org/">Queensland VSTS User Group</a> Matthew Rowan mentioned an open-source system tray utility he’d written called <a target="_blank" href="http://www.codeplex.com/TFSWorkingOn/">TFS Working On</a>. This utility allows developers to select the work item they are currently working on and it will record the time spent, add it to the work item’s history, as well as updating the work completed and work remaining fields appropriately.</p>
<p>Matthew will be presenting at the December user group meeting about this and how they leveraged the Team System OLAP cube for reporting time and doing evidence-based scheduling.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/10/05/tracking-time-against-tfs-work-items/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Biggest Yet Power Tools Release Coming Up</title>
		<link>http://blogs.teamsystemnotes.com/2008/10/02/biggest-yet-power-tools-release-coming-up/</link>
		<comments>http://blogs.teamsystemnotes.com/2008/10/02/biggest-yet-power-tools-release-coming-up/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 03:36:00 +0000</pubDate>
		<dc:creator>William Bartholomew</dc:creator>
		
		<category><![CDATA[2008 (Orcas)]]></category>

		<category><![CDATA[Build Automation]]></category>

		<category><![CDATA[Team Foundation Server]]></category>

		<category><![CDATA[Usage]]></category>

		<category><![CDATA[Version Control]]></category>

		<category><![CDATA[Work Item Tracking]]></category>

		<guid isPermaLink="false">http://blogs.teamsystemnotes.com/2008/10/02/biggest-yet-power-tools-release-coming-up/</guid>
		<description><![CDATA[Brian Harry has blogged about the upcoming power tools release and this is without a doubt the biggest yet, here’s a couple of the highlights to whet your appetite:

Team Members displayed in Team Explorer, so what? Well…

IM integration allows you to message team members from within Visual Studio
View their shelvesets
View their pending changes

Improved deployment for [...]]]></description>
			<content:encoded><![CDATA[<p>Brian Harry has blogged about the <a target="_blank" href="http://blogs.msdn.com/bharry/archive/2008/10/01/preview-of-the-next-tfs-power-tools-release.aspx">upcoming power tools release</a> and this is without a doubt the biggest yet, here’s a couple of the highlights to whet your appetite:</p>
<ul>
<li>Team Members displayed in Team Explorer, so what? Well…</li>
<ul>
<li>IM integration allows you to message team members from within Visual Studio</li>
<li>View their shelvesets</li>
<li>View their pending changes</li>
</ul>
<li>Improved deployment for check-in policies and custom work-item controls.</li>
<li>Integration into Windows Explorer and PowerShell.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.teamsystemnotes.com/2008/10/02/biggest-yet-power-tools-release-coming-up/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
