<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Madhuri Gummalla&amp;#39;s Blog</title><subtitle type="html">Microsoft Team Foundation Server Build</subtitle><id>http://blogs.msdn.com/b/madhurig/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/madhurig/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/madhurig/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2009-11-25T16:20:43Z</updated><entry><title>Why did we not fix that bug?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/madhurig/archive/2010/06/25/why-did-we-not-fix-that-bug.aspx" /><id>http://blogs.msdn.com/b/madhurig/archive/2010/06/25/why-did-we-not-fix-that-bug.aspx</id><published>2010-06-25T19:42:00Z</published><updated>2010-06-25T19:42:00Z</updated><content type="html">&lt;p&gt;Sometimes when customers report issues that we knew about but decided not to fix, we end up thinking &amp;ldquo;Why did we just not fix that bug?&amp;rdquo;. I came across one such bug in TeamBuild a few days back. I took this as an opportunity to think about why some small but nice to have fixes don&amp;rsquo;t tend to make it into the product.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bug:&lt;/strong&gt; The customer was getting an error during build - &lt;strong&gt;&amp;ldquo;&lt;/strong&gt;&lt;em&gt;&lt;strong&gt;The working folder C:\Builds\somepath\Sources is already in use by the workspace WSName;DomainUser on computerName&amp;rdquo;.&lt;/strong&gt; &lt;/em&gt;The error message gave him enough information to figure out that he needed to delete the workspace though it wasn&amp;rsquo;t clear why he had to do that. Also figuring out how to delete the workspace especially when the owner is a non-domain account like &amp;ldquo;Network Service&amp;rdquo; is painful.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Repro scenario:&lt;/strong&gt; This issue commonly happens when the TFS build service account is changed. It is also possible that someone manually creates a workspace to map the same folder as used by TeamBuild for the build directory but this is definitely rare.&lt;/p&gt;
&lt;p&gt;TeamBuild creates a version control workspace on the build agent to sync the sources to a local build directory before doing the build. As part of the build process, TeamBuild checks to see if the workspace already exists, and deletes or reuses it if it does. But TeamBuild only checks for workspaces for the current build service account. That is why if a user changes the build service account after a build is run, we see this error. &lt;/p&gt;
&lt;p&gt;This has been the behavior since the first version of TeamBuild and in the last 2 releases this behavior has not been updated. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So why did this bug not meet the FIX criteria?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Generally at the beginning of each product cycle, the team comes up with new set of features we want to include in the next release based on user input, market research, overall product goals etc. This bug doesn&amp;rsquo;t qualify as a feature, so it would go on a backlog or wish list of small changes we would like to make. The team then goes heads down into development and fixing bugs in the new features.&lt;/p&gt;
&lt;p&gt;As we get towards shipping the product, a set of criteria are used to figure out if a bug should be fixed or not, some of which are:&lt;/p&gt;
&lt;p&gt;1. Does it block a high priority user scenario?&lt;/p&gt;
&lt;p&gt;2. Is it is regression from a previous release?&lt;/p&gt;
&lt;p&gt;3. Is there a reasonable workaround that is easy to apply?&lt;/p&gt;
&lt;p&gt;4. What is the cost/risk of fixing the issue?&lt;/p&gt;
&lt;p&gt;5. Would it cause customers lot of pain? &lt;/p&gt;
&lt;p&gt;This particular bug would have been low risk and easy to fix but not many customers are complaining about it and there is a simple workaround available. So it never made it above the cut line in the wish list.&lt;/p&gt;
&lt;p&gt;If there are other issues like this which you would love to see fixed, please do let us know what they are!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10030325" width="1" height="1"&gt;</content><author><name>Madhuri Gummalla</name><uri>http://blogs.msdn.com/Madhuri-Gummalla/ProfileUrlRedirect.ashx</uri></author><category term="TeamBuild" scheme="http://blogs.msdn.com/b/madhurig/archive/tags/TeamBuild/" /></entry><entry><title>Building VS2008 projects with TFS Build 2010</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/madhurig/archive/2009/11/25/building-vs2008-projects-with-tfs-build-2010.aspx" /><id>http://blogs.msdn.com/b/madhurig/archive/2009/11/25/building-vs2008-projects-with-tfs-build-2010.aspx</id><published>2009-11-25T16:20:43Z</published><updated>2009-11-25T16:20:43Z</updated><content type="html">&lt;p&gt;TFS Build 2010 uses MSBuild 4.0 to compile the solutions/projects and MSBuild 4.0 is capable of handling the backward compatibility with .NET 3.5 projects. So you will be able to build VS2008 projects in TFS Build without having to upgrade them to 2010 provided required tools are installed on the build machine. &lt;/p&gt;  &lt;p&gt;MSBuild 4.0 comes in 32bit and 64bit versions and TFS Build provides a way to be able to choose one over the other. In the build process, TFS Build exposes a property called “MSBuild Platform” that can have 3 values – “Auto”, “x86” and “x64”. The default is “&lt;strong&gt;Auto&lt;/strong&gt;” which uses the 64bit version of MSBuild on 64 bit machines and 32 bit version on 32 bit build machines.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/madhurig/WindowsLiveWriter/BuildingVS2008projectswithTFSBuild2010_FCF7/MSBuildPlatform_6.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MSBuildPlatform" border="0" alt="MSBuildPlatform" src="http://blogs.msdn.com/blogfiles/madhurig/WindowsLiveWriter/BuildingVS2008projectswithTFSBuild2010_FCF7/MSBuildPlatform_thumb_2.jpg" width="429" height="363" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are some additional requirements/workarounds needed for some project types to work with MSBuild 4.0.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VC++ 2008 projects:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you are building VC++ 2008 projects, you will need to install VS2008 or the Windows SDK (v6.1) to lay down vcbuild.exe and its dependencies. If your build machine is 64 bit, you will also need to include the path to vcbuild.exe in the &lt;strong&gt;PATH&lt;/strong&gt; environment variable and restart the &lt;strong&gt;&lt;em&gt;TFSBuildServiceHost&lt;/em&gt;&lt;/strong&gt; service. &lt;/p&gt;  &lt;p&gt;If the build machine is 64 bit but you are specifically targeting “MSBuild Platform = x86”, you might see errors similar to:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;“C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets (1682): Use of Tracker.exe is required to correctly incrementally generate resources in some circumstances, such as when building on a 64-bit OS using 32-bit MSBuild.&amp;#160; A build that falls into this category was attempted, but Tracker.exe could not be found.&amp;#160; Please verify that it exists in the appropriate .NET Framework directory or turn off incremental building of GenerateResource via setting the &amp;quot;TrackFileAccess&amp;quot; property to &amp;quot;false&amp;quot;.”&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;To workaround this install VS2010 (to install the Windows SDK (v7.0A)) to lay down Tracker.exe and its dependencies.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;.NET Compact Framework projects:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Update msbuild.exe.config file on the build machine as suggested in &lt;a href="http://blogs.msdn.com/jimlamb/archive/2009/11/13/how-build-compact-framework-projects-with-tfs-2010.aspx"&gt;Jim Lamb’s post&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Test projects:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If your build machine is 64 bit, you might see errors similar to “&lt;em&gt;ResGen: Could not load referenced assembly &amp;quot;C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.QualityTools.UnitTestFramework\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll&amp;quot;.&amp;#160; Caught a BadImageFormatException saying &amp;quot;Could not load file or assembly 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.QualityTools.UnitTestFramework\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.&amp;quot;.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This is an issue with MSBuild 4.0 x64 when targeting 3.5 projects. To workaround this you can try one of the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Use the 32 bit version of msbuild by setting “MSBuild Platform”=x86 &lt;/li&gt;    &lt;li&gt;Modify the project to include the full fusion name for the 9.0 version of the Microsoft.VisualStudio.QualityTools.UnitTestFramework &lt;/li&gt;    &lt;li&gt;Register the same assemblyfolderEx locations under the 64 bit hive as were registered under the 32 bit hive. This key tells MSBuild to look in the IDE\PublicAssemblies folder where the unit test assembly is- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Public Assemblies 9. Create the same key in the non WOW registry hive as well - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Public Assemblies 9 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;[Update]&lt;strong&gt; &lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If you are using private accessors in your unit tests, you will see errors when running tests. Adam Root wrote a &lt;a href="http://blogs.msdn.com/adamroot/archive/2009/12/10/building-vs-2008-unit-test-projects-in-msbuild-4-0-beta-2.aspx"&gt;blog&lt;/a&gt; describing the problem and a workaround. We are trying to get this issue fixed for RTM.&lt;/p&gt;  &lt;p&gt;Publishing VS2008 test results will fail with a 404 error if you don’t have VS2008 SP1 and the Forward Compat GDR for TFS 2010 installed.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Can I specify TFS Build to use MSBuild 3.5 instead?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is not possible out of the box. The loggers used by TFS Build are compiled against .NET framework 4.0 and MSBuild 3.5 will fail to load them. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9928630" width="1" height="1"&gt;</content><author><name>Madhuri Gummalla</name><uri>http://blogs.msdn.com/Madhuri-Gummalla/ProfileUrlRedirect.ashx</uri></author><category term="TeamBuild2010" scheme="http://blogs.msdn.com/b/madhurig/archive/tags/TeamBuild2010/" /></entry></feed>