<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-37804916</id><updated>2011-12-06T21:12:05.864-08:00</updated><category term='Orcas'/><category term='Teamprise'/><category term='TEE'/><category term='Team Build'/><category term='Work Item Tracking'/><category term='Alerts'/><category term='TSWA'/><category term='Test Edition'/><category term='errors'/><category term='Team Explorer'/><category term='2010'/><category term='Reporting Services'/><category term='J2EE'/><title type='text'>Team Foundation Server</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default?start-index=101&amp;max-results=100'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>151</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-37804916.post-801863175617646068</id><published>2011-03-18T22:13:00.000-07:00</published><updated>2011-03-25T07:48:17.380-07:00</updated><title type='text'>TFS 2010 SP1 Upgrade</title><content type='html'>It took 8 hours, but we’ve finally got our TFS system upgraded to TFS 2010 SP1 from TFS 2008 SP1.  I've been critical of them in the past, but with 2010, I would say MS greatly improved the upgrade process.  I really like how they separated installing the bits from doing the migration.  And when we did run into an issue, we were amazed that when we re-ran the install (after correcting our issue), the upgrade wizard started off where we ran into issues.  &lt;br /&gt;&lt;br /&gt;This all being said, as much as this experience was better than our TFS 2005, TFS 2008 and TFS 2008 SP1 upgrades we did run into issues - primarily ours.  Here they are.&lt;br /&gt;&lt;br /&gt;1) We had to install VS 2010 Ultimate on each build machine.  I didn’t dig into this much, but apparently our testers use “Web Tests” during the smoke test phase of our builds.  These “Web Tests” apparently require the VS 2010 Ultimate install.  Again, this is not really my area of expertise so we went ahead with the request and dumped Ultimate on 30 build hosts.&lt;br /&gt;&lt;br /&gt;2) We ran into an issue where our drive for logs (100gig) filled up.  This did not happen the first two times we did test upgrades, but as luck would happen, when we tried to go live, this issue popped up.  We paged the DBA to have our log files truncated.  We were really nervous that we’d have to go through the entire migration again.  However, much to our surprise, the upgrade started right where it left off.  A wonderful surprise!!!  Thanks Microsoft!!!&lt;br /&gt;&lt;br /&gt;3) We had some problems with the encryption of our Reporting Services View State.  A colleague of mine came across this &lt;a href="http://msdn.microsoft.com/en-us/library/ff649308.aspx"&gt;link&lt;/a&gt; which states – “If your application is installed http://www.blogger.com/img/blank.gifin a Web farm, you need to change the validationKey from AutoGenerate,IsolateApps to a specific manually generated key value”.  After making this change, our encryption problems were solved.&lt;br /&gt;&lt;br /&gt;4) We had some sporadic issues getting people re-connected (mainly use error), but nothing significant.&lt;br /&gt;&lt;br /&gt;5) Make sure your users get &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5"&gt;Visual Studio 2010 SP1&lt;/a&gt;.  Some power users who branch from labels, found that the ability to branch on a label from a folder that was already branched, was removed. (Say that 10 times fast!)  VS 2010 SP1 adds that ability back into the client.&lt;br /&gt;&lt;br /&gt;6) Make sure any VS 2008 users get this.  This is so they can log into the 2010 server from a 2008 client.  &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=CF13EA45-D17B-4EDC-8E6C-6C5B208EC54D"&gt;Visual Studio Team System 2008 SP1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Again, over all this experience was pretty damn good.  I give MS an A- for this upgrade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-801863175617646068?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/801863175617646068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=801863175617646068' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/801863175617646068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/801863175617646068'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2011/03/tfs-2010-upgrade.html' title='TFS 2010 SP1 Upgrade'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4188862133833869562</id><published>2011-02-28T08:46:00.000-08:00</published><updated>2011-02-28T08:48:34.976-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TEE'/><title type='text'>Groovy Nature Locks Jar Files in Eclipse Project</title><content type='html'>For the past few months many of us have been struggling with an issue where we can’t Get Latest on Jar files stored in TFS when using TEE (or Teamprise).  The issue is that TEE can’t overwrite the local file because the file is locked by Eclipse.  (non-Windows users would not see this as Mac and Linux platforms use a more passive file locking strategy.)  On the surface, this issue seemly looks like an issue with the TEE plug-in.  However, in these file locking cases, we’ve found that other plug-ins are actually the culprit.&lt;br /&gt;&lt;br /&gt;While we’ve been able to reproduce the issue commonly, we’ve finally got some conformation from &lt;a href="http://codehaus.org"&gt;codehaus.org&lt;/a&gt; that the Groovy plug-in many of you use will cause this issue.  The root case is that they use the URLClassLoader from Sun/Oracle which won’t release locks on jar files when loaded to the classpath.  Or something like that.&lt;br /&gt;&lt;br /&gt;Here is a &lt;a href="http://jira.codehaus.org/browse/GRECLIPSE-994?focusedCommentId=257991#action_257991"&gt;link to the issue we submitted&lt;/a&gt;.  You can follow that for updates to the plug-in.  Hopefully they have this fixed in an upcoming release.  Until this time, the best way to work around the issue is to temporarily remove the Groovy Project Nature from your project, do Get Latest, then add the Groovy Project Nature back in. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Remove Groovy Nature = Right Click on Project | Groovy | Remove Groovy Nature&lt;br /&gt;&lt;br /&gt;Add Groovy Nature = Right Click on Project | Configure | Convert to Groovy Project&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4188862133833869562?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4188862133833869562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4188862133833869562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4188862133833869562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4188862133833869562'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2011/02/groovy-nature-locks-jar-files-in.html' title='Groovy Nature Locks Jar Files in Eclipse Project'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-3156662946771296403</id><published>2011-02-22T13:40:00.000-08:00</published><updated>2011-02-22T13:41:24.151-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><title type='text'>Custom Response Header For Our TFS 2010 App Tier Farm</title><content type='html'>I’m curious to see if people think this is a good idea or not.  In our TFS 2010 farm we have four application servers.  In the process of testing load balancing and fail over, I was having trouble trying to figure out which box my requests were going to.  Our load balancer sets a cookie so we persist to the same App Tier machine, but it’s an obfuscated value that no one seems to be able to provide any insight into how to un-obfuscate it.  (And I’m not sure if devenv.exe is passing that cookie as we seem to be bouncing across all four App Tiers when doing things like “Get.”  Not a big deal, but it would be nice if there was a way to persist.)&lt;br /&gt;&lt;br /&gt;To help me out, I set a custom response header called “x-tfs-machine” that resolves the name of the App Tier machine.  Via Fiddler or Wireshark, I know can inspect what App Tier I’m hitting.   It seems to be working quite well for me.&lt;br /&gt;&lt;br /&gt;While I’m just using this for testing, I’m thinking about leaving it on when we go live so we can see what server a user is hitting if they are running into issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-3156662946771296403?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/3156662946771296403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=3156662946771296403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3156662946771296403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3156662946771296403'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2011/02/custom-response-header-for-our-tfs-2010.html' title='Custom Response Header For Our TFS 2010 App Tier Farm'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-602621200180554736</id><published>2011-02-15T07:47:00.000-08:00</published><updated>2011-02-15T07:49:29.648-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><category scheme='http://www.blogger.com/atom/ns#' term='TEE'/><title type='text'>Team Explorer Everywhere Options for Users Wanting a Standalone Client</title><content type='html'>We’ve had some users who have shied away from using Eclipse plug-ins and have become comfortable with Teamprise Explorer (aka Fat Client). When Team Explorer Everywhere (TEE) was launched, Microsoft discontinued delivering the Fat Client. Thus, those users have continued to use Teamprise. We’d like to get those users cut over so Brian has showed a pretty good work around that should work for these users. Here is what we sent to our teams:&lt;br /&gt;&lt;br /&gt;If you’re used to using the Teamprise Explorer for development, here are some options you have when migrated to Team explorer Everywhere (TEE).&lt;br /&gt;&lt;br /&gt;1) Switch to using the TEE plug-in in Eclipse.&lt;br /&gt;2) Use the free Team Explorer plug-in to the free Visual Studio 2010 shell. (This only works for Windows users)&lt;br /&gt;3) Per &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/02/09/team-explorer-everywhere-2010-sp1-is-available.aspx"&gt;Brian Harry’s post&lt;/a&gt;, use the &lt;a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/index.php#PlatformRuntime"&gt;Eclipse Platform Runtime Binary&lt;/a&gt; standalone client.&lt;br /&gt;&lt;br /&gt;If you decide to go with the last option, here are some general instructions for using the Eclipse Platform Runtime Binaries.&lt;br /&gt;&lt;br /&gt;1) Download and install &lt;a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/index.php#PlatformRuntime"&gt;Eclipse Platform Runtime Binary&lt;/a&gt;- Install TEE&lt;br /&gt;2) Window Show View Other Team Foundation Server Team Explorer&lt;br /&gt;3) In the Team Explorer panal, select the Add Existing Team Project dialog button&lt;br /&gt;4) Add your server and connection information&lt;br /&gt;5) Select Team Projects you’re involved with&lt;br /&gt;6) Double click on Source Control to get the friendly Source Control tree view&lt;br /&gt;7) Get yourself a cup of hot coffee&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-602621200180554736?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/602621200180554736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=602621200180554736' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/602621200180554736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/602621200180554736'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2011/02/team-explorer-everywhere-options-for.html' title='Team Explorer Everywhere Options for Users Wanting a Standalone Client'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2154004875351365125</id><published>2010-12-17T08:57:00.000-08:00</published><updated>2010-12-17T09:00:47.113-08:00</updated><title type='text'>Windows Process Activation Service – Error 183</title><content type='html'>This is not related to TFS, but I need a place to write this down. On one of our runtime machines, we had an issue where II 7 stopped running. It turns out that the Windows Process Activation Service (WAS) was down. When trying to restart WAS, we got an Error 183 – Unable to create file (or something like that). When trying to open Event Viewer or any other snap-ins to MMC, we got a “could not load snap-in error.”&lt;br /&gt;&lt;br /&gt;Through hair pulling and swearing, we finally tracked down a machine.config change that one of my colleagues made. In the process of doing some tuning, the I haven’t reviewed the schema, but I’m guessing this is not valid as it does not make sense.&lt;br /&gt;&lt;br /&gt;After removing the autoConfig, we were back up and running. Thanks to Carlo for pointing us in the right direction.&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:78%;" &gt;&lt;br /&gt;&amp;lt;processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" memoryLimit="90"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;httpRuntime minFreeThreads="12"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;processModel autoConfig="true"/&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2154004875351365125?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2154004875351365125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2154004875351365125' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2154004875351365125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2154004875351365125'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/12/windows-process-activation-service.html' title='Windows Process Activation Service – Error 183'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2021349480691947203</id><published>2010-12-13T19:33:00.000-08:00</published><updated>2010-12-13T19:39:31.145-08:00</updated><title type='text'>Windows "Loopback bug" when using a FQDN</title><content type='html'>We just got our new TFS 2010 hardware!  Unfortunately, my smile was quickly brought to its knees by the "loopback bug" where you can access a IIS site (in our case it's a Share Point site running under IIS 7.5) via  fully qualified domain name (FQDN) from a client machine, but can't use the FQDN on the server looping back to the server.  When trying to use the FQDN locally on the server, we continually get the username/password prompt.&lt;br /&gt;&lt;br /&gt;Here is the &lt;a href="http://support.microsoft.com/kb/896861"&gt;work around&lt;/a&gt; if you loose a day on this like I did.  Option #1 worked for us.  Thanks for the post at &lt;a href="http://serverfault.com/questions/32345/ie-8-authentication-denied-on-local-sharepoint-site"&gt;Server Fault&lt;/a&gt; for reminding me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2021349480691947203?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2021349480691947203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2021349480691947203' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2021349480691947203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2021349480691947203'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/12/windows-loopback-bug-when-using-fqdn.html' title='Windows &quot;Loopback bug&quot; when using a FQDN'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5288216971377022243</id><published>2010-10-04T08:13:00.000-07:00</published><updated>2010-10-04T08:20:46.068-07:00</updated><title type='text'>Spring: Ambiguous constructor argument types</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman","serif";} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;This is not TFS related, but build related and this is my only public blog where I document build-like stuff for future reference if I was to ever need it.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In Spring for Java, if you’re going to use “names” for wiring up things like constructor arguments, the class files have to be built with javac –g, which is an entry-level debug mode for javac.  This will compile the classes, &lt;b&gt;&lt;i&gt;keeping such things as variable names&lt;/i&gt;&lt;/b&gt;.  If you don’t use javac –g, then Java takes the liberty to modify variable names.  I’m guessing they do this for, among other things, keep the class sizes down.&lt;/p&gt;Below is a poorly formatted, convoluted series of knowns and tests to come up with a hypothesis and eventual solution to Spring issue we were running into.    &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;u&gt;Knowns&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraph" style="text-indent: -0.25in;"&gt; &lt;span style=""&gt;&lt;span style=""&gt;1)&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The Spring configuration is using variable &lt;b&gt;name&lt;/b&gt; for mapping constructer arguments in the spring configuration to the set of constructor parameters.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;       &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;bean&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;id&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;SetManager&lt;/span&gt;" &lt;span style="color: red;"&gt;class&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;com.mycompany.manager.SetManager&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;lazy-init&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;false&lt;/span&gt;"&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;name&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;courtSetCSV&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;name&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;pubSetCSV&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;name&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;jurSetCSV&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;       &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;bean&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoListParagraph" style="text-indent: -0.25in;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;2)&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;When deploying the application out, the error we’re getting is this.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; color: red;"&gt;SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; color: red;"&gt;org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'SetManager' defined in class path resource [spring-manager.xml]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.core.io.Resource]: Ambiguous constructor argument types - did you specify the correct bean references as constructor arguments?&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; color: red;"&gt;        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:684)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; color: red;"&gt;        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; color: red;"&gt;        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; color: red;"&gt;        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; color: red;"&gt;        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; color: red;"&gt;        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;span style=""&gt;&lt;span style=""&gt;3)&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;When creating a WAR via Eclipse’s Export feature, the bindings are wired up fine.  When creating the WAR via Ant (or using javac from the command line, which is what Ant is doing), we get the error.  When diff-ing the WAR files, they are the same with one exception: The class files created via Eclipse are larger.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;u&gt;Hypothesis&lt;/u&gt;&lt;/b&gt;  Given all of this, our hypothesis is that running the build via Ant, the method names are getting truncated (or modified) such that using the &lt;b&gt;name&lt;/b&gt; attribute in Spring won’t work.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;u&gt;Tests&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="MsoListParagraph" style="text-indent: -0.25in;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;1)&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;To test the use of indexes, instead of names we used something like this: “&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;index&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;0&lt;/span&gt;"&lt;/span&gt;”.  Using this got us around the initial issue, but ran us into a very similar problem loading another bean.  At this point, we knew we were on to something.  Or on something.  Here are the Spring configuration snippets of using names verses indexes.&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;Names&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;       &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;bean&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;id&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;SetManager&lt;/span&gt;" &lt;span style="color: red;"&gt;class&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;span style="color: blue;"&gt;com.mycompany.manager.SetManager&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;lazy-init&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;false&lt;/span&gt;"&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;name&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;courtSetCSV&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;name&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;pubSetCSV&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;name&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;jurSetCSV&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;       &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;bean&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;Indexes&lt;/span&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;bean&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;id&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;SetManager&lt;/span&gt;" &lt;span style="color: red;"&gt;class&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;span style="color: blue;"&gt;com.mycompany.manager.SetManager&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;lazy-init&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;false&lt;/span&gt;"&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;index&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;0&lt;/span&gt;" &lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;index&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;1&lt;/span&gt;" &lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;              &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;constructor-arg&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: red;"&gt;index&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;=&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;"&lt;span style="color: blue;"&gt;2&lt;/span&gt;" &lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;org.springframework.core.io.Resource&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;classpath:...&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue;"&gt;       &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;bean&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraph" style="text-indent: -0.25in;"&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt; &lt;/span&gt;We used JAD to decompile both classes.  Bingo, the issue is highlighted!  When using javac, the default settings truncate the variable names.  If Spring is to use variable names for wiring up arguments or properties, this won’t work very well ;)&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;Ant&lt;/span&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;    public SetManager(Resource &lt;span style="color: rgb(0, 112, 192);"&gt;resource&lt;/span&gt;, Resource &lt;span style="color: rgb(0, 112, 192);"&gt;resource1&lt;/span&gt;, Resource &lt;span style="color: rgb(0, 112, 192);"&gt;resource2&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;    {&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;        loadCourtSetMaps(resource);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;        loadPub(resource1);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;        loadJur(resource2);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;    }&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;Eclipse&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;    public CustomDigestCollectionSetManager(Resource &lt;span style="color: rgb(0, 112, 192);"&gt;courtSetCSV&lt;/span&gt;, Resource &lt;span style="color: rgb(0, 112, 192);"&gt;pubSetCSV&lt;/span&gt;, Resource &lt;span style="color: rgb(0, 112, 192);"&gt;jurnSetCSV&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;    {&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;        loadCourtlineCollectionSetMaps(courtSetCSV);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;        loadPublicationCollectionSetMap(pubSetCSV);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;        loadJurisdictionCollectionSetMap(jurSetCSV);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas;"&gt;    }&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;u&gt;Solution&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="MsoListParagraph" style="text-indent: -0.25in;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;1)&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;What parameter change in Ant’s javac Task could we change to get the accurate parameter names?&lt;/p&gt;  &lt;p class="MsoListParagraph" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;a.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Set debug = true.  Turning debug on will make sure the class files are compiled with the same variable names (and other things) as what is in the source code.  This will increase the class file size, but from what we’ve noticed so far, does not cause great performance degradation.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.75in;"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5288216971377022243?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5288216971377022243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5288216971377022243' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5288216971377022243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5288216971377022243'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/10/spring-ambiguous-constructor-argument.html' title='Spring: Ambiguous constructor argument types'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-830616574998777137</id><published>2010-07-30T08:44:00.001-07:00</published><updated>2010-07-30T08:44:56.621-07:00</updated><title type='text'>Why a Web.config change does not result in a new process id</title><content type='html'>A colleague asked me why he sees Application_Start events after modifying his Web.config but does not get a new process id for the worker process.  While this &lt;a href="http://msdn.microsoft.com/en-us/library/ms178473.aspx"&gt;article&lt;/a&gt; is addressed to IIS 5 and 6, I think the same principle must apply for IIS 7.  &lt;br /&gt;&lt;br /&gt;From what I can tell, a change to the Web.config will result in tear down of the Application Domain, but not the Application Manager.  The Application Manager is what controls the worker process. &lt;br /&gt;&lt;br /&gt;If anyone disagrees with this, let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-830616574998777137?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/830616574998777137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=830616574998777137' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/830616574998777137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/830616574998777137'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/07/why-webconfig-change-does-not-result-in.html' title='Why a Web.config change does not result in a new process id'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-9118742622931526050</id><published>2010-07-22T08:35:00.000-07:00</published><updated>2010-07-22T08:40:17.543-07:00</updated><title type='text'>“The Network Path Was Not Found” When Installing our .NET Node Agent</title><content type='html'>We ran into a problem installing some custom software we call the .NET Node Agent on machines that were in a new &lt;span style="font-weight: bold;"&gt;COMPANYQA &lt;/span&gt;Windows domain.  After some troubleshooting, we found the issue to be related to how we figure out what domain the machine is in.   We do this logic so we can insert the correct .NET Node Agent service account (&lt;span style="font-weight: bold;"&gt;COMPANYMGMT|COMPANY\svcNodeAgnet&lt;/span&gt;) into the machine’s local Administrators group.  If a machine is in &lt;span style="font-weight: bold;"&gt;COMPANYMGMT&lt;/span&gt;, we need to add &lt;span style="font-weight: bold;"&gt;COMPANYMGMT\svcNodeAgnet&lt;/span&gt;.  If the machine is in &lt;span style="font-weight: bold;"&gt;COMPANY&lt;/span&gt;, or now &lt;span style="font-weight: bold;"&gt;COMPANYQA&lt;/span&gt;, then we need to insert &lt;span style="font-weight: bold;"&gt;COMPANY\svcNodeAgnet&lt;/span&gt;.  (We could have asked a human to make this distinction during install time, but asking a human to do anything around here causes more trouble than it’s worth.)&lt;br /&gt;&lt;br /&gt;We use .NET’s &lt;span style="font-style: italic;"&gt;System.DirectoryServices&lt;/span&gt; namespace to surf Active Directory (AD).  We use the machine’s parent to grab Properties.  When trying to get Properties from the parent (DirectoryEntry.Parent.Properties) we continually got the message “&lt;span style="font-style: italic;"&gt;The Network Path Was Not Found.&lt;/span&gt;”  After some in-depth troubleshooting, we found that we had to add &lt;span style="font-style: italic; font-weight: bold;"&gt;company&lt;span style="color: rgb(255, 0, 0);"&gt;qa&lt;/span&gt;.mycompany.com&lt;/span&gt; to the DNS suffix list.  The only values were &lt;span style="font-style: italic; font-weight: bold;"&gt;company&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;.mycompany.com&lt;/span&gt; and so we couldn’t find the &lt;span style="font-style: italic; font-weight: bold;"&gt;LDAP.company&lt;span style="color: rgb(255, 0, 0);"&gt;qa&lt;/span&gt;.mycompany.com&lt;/span&gt; AD server.&lt;br /&gt;&lt;br /&gt;In Windows 2008 Server, this setting is under Control Panel - Network Connections - Local Area Connections – Internet Protocol Version 4 (TCP/IPv4)  - Properties – DNS – Append These DNS Suffixes.  After we added &lt;span style="font-style: italic; font-weight: bold;"&gt;company&lt;span style="color: rgb(255, 0, 0);"&gt;qa&lt;/span&gt;.mycompany.com&lt;/span&gt; we were on our way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-9118742622931526050?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/9118742622931526050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=9118742622931526050' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/9118742622931526050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/9118742622931526050'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/07/network-path-was-not-found-when.html' title='“The Network Path Was Not Found” When Installing our .NET Node Agent'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2279858047078570783</id><published>2010-07-16T14:10:00.001-07:00</published><updated>2010-07-16T14:14:34.118-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><title type='text'>Our TFS 2010 Topology</title><content type='html'>Grant Holiday (a &lt;a href="http://blogs.msdn.com/b/granth/"&gt;blog&lt;/a&gt; I highly recommend) posted &lt;a href="http://blogs.msdn.com/b/granth/archive/2010/04/15/tfs2010-devdiv-tfs-server-upgraded.aspx"&gt;DevDiv’s 2010 hardware topology&lt;/a&gt;.  Oddly enough, our proposed solution looks much the same.&lt;br /&gt;&lt;br /&gt;With TFS 2008, we’re currently making use of F5’s Big/Ip for controlling access to our primary and standby server.  We switch between the two during failover situations.  With 2010 we’ll be enabling Round Robin and opening up load balancing between 4 VMs running the TFS 2010 App Tier on 2008 Server R2.&lt;br /&gt;&lt;br /&gt;Moreover, like DevDiv, we’re taking the opportunity to break out our Warehouse and Analysis Services to a separate server.  Our plan is to run an Active/Active cluster.  Active Node 1 will run things like TFS_Configuration while Active Node 2 will run the Tfs_Warehouse and Reporting Services databases.  If we have hardware failure, we’ll have a single Node running both while the failed node is repaired.  We were thinking of doing a 3-node Active/Active/Passive cluster, but the data center didn’t feel comfortable with that because they don’t currently support that configuration.&lt;br /&gt;&lt;br /&gt;Let me know what you think of our solution.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_kySaPV2TsZk/TEDLlvXIZzI/AAAAAAAAADw/SK0kE87QN_g/s1600/TFS_2010_Topology_shared.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 299px;" src="http://1.bp.blogspot.com/_kySaPV2TsZk/TEDLlvXIZzI/AAAAAAAAADw/SK0kE87QN_g/s400/TFS_2010_Topology_shared.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5494615394621089586" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2279858047078570783?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2279858047078570783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2279858047078570783' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2279858047078570783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2279858047078570783'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/07/our-tfs-2010-topology.html' title='Our TFS 2010 Topology'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_kySaPV2TsZk/TEDLlvXIZzI/AAAAAAAAADw/SK0kE87QN_g/s72-c/TFS_2010_Topology_shared.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8489315295186603352</id><published>2010-06-09T14:36:00.000-07:00</published><updated>2010-06-09T15:10:07.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><title type='text'>Contents of a Changeset when Accessing via a Work Item Link</title><content type='html'>&lt;span style="font-weight:bold;"&gt;UPDATE:  I'm smoking crack.  There is a slight change to the use case below.  I left the original use case in there for an example of what works fine.  The behavior I was seeing works the same in both VS 2008 and VS 2010.  Sorry for the trouble of this post.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Using Visual Studio 2010 connecting to a TFS 2008 Server I can’t seem to get the nice dialog box to look at the contents of a Changeset that is linked to a Work Item.  When I double click on it, I get a IE window that shows the contents in an HTML page, but I don’t have a dialog open up where I can do things like Right Click and compare to Previous Version.  This is annoying as I use this feature all the time for code reviews and bug fix approvals.&lt;br /&gt;&lt;br /&gt;I tried putting on TFS 2010 Power Tools, but this too did not give me the option.  Tomorrow I’ll try to connect to a TFS 2010 Server instance to see if that changes the behavior.  We have a number of people that use this procedure for code reviews and I can see some upset faces if we don’t have a better solution.  Here is the exact use case again:&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;1) Open a Work Item &lt;br /&gt;2) Click on Links&lt;br /&gt;3) Double Click on Changeset.&lt;br /&gt;4) This opens IE with the contents instead of a dialog box.&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;br /&gt;1) View History on a file in Source Control&lt;br /&gt;2) Double Click on Changeset&lt;br /&gt;3) Click on Work Item&lt;br /&gt;4) Click on Links&lt;br /&gt;5) Double Click on Changeset&lt;br /&gt;6) Here is where I get IE popping up.&lt;br /&gt;&lt;br /&gt;Oddly, I get the Changeset dialog box fine when I go directly to a Work Item to the linked Changeset.  It's when I got to a Changeset to a Work Item to its linked Changesets that I get IE popping up.&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;Again, in VS 2008 this would give you a dialog box where you can do things like compare to previous version.  In VS 2010, this seems to give me only a popup to IE.  &lt;/strike&gt;&lt;br /&gt;&lt;br /&gt;Maybe I’m missing something?  &lt;span style="font-weight:bold;"&gt;Yes you are Mac.  This works the same in VS 2008 and VS 2010.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8489315295186603352?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8489315295186603352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8489315295186603352' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8489315295186603352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8489315295186603352'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/06/contents-of-changeset-when-accessing.html' title='Contents of a Changeset when Accessing via a Work Item Link'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7633040845052474447</id><published>2010-05-26T12:47:00.000-07:00</published><updated>2010-05-26T12:52:39.597-07:00</updated><title type='text'>Browser Cache - Your Friend and Foe</title><content type='html'>Because we use a ton of Static Content (e.g. Java Script, CSS, HTML) in our new application, the last few years I've been involved in dealing with Internet Browser Caches.  We cache our Static Content locally so the users don't have to download it every time they hit our site.  While this made us very fast, we were having perpetual problems with invalidating browser cache when Static Content files change.&lt;br /&gt;&lt;br /&gt;We had a number of architectural meetings about it with a number of suggestions on how to deal with it.  URL re-writing, ETAGs, unique file names were all brought up.  What we ended with was a directory versioning scheme where we inject a unique number into the base URI path and then update an authority file that orchestrates the pages, injecting the unique number.  During deployment the files are staged under the unique number on the web server file system.&lt;br /&gt;&lt;br /&gt;If you look a look at Google's home page, you can see they do something similar.  Here is a Java Script file they are including on their home page.  Looks like they took the idea and put it on steroids to me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;http://www.google.com/extern_js/f/&lt;span style="color: rgb(255, 0, 0);"&gt;CgJlbhICdXMrMAo4aEAILCswDjgPLCswFjgWLCswFzgHLCswGDgFLCswGTggLCswHTgyLCswJTjKiAEsKzAmOAssKzAnOAQsKzAqOAQsKzArOAwsKzA8OAIsKzBAOBAsKzBBOAUsKzBFOAEsKzBOOAUsKzBROAIsgAIT&lt;/span&gt;/0_HiDVMVc9k.js&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bing did something similar, but is more similar to what we do.  Bing's number kind of looks like a TFS changeset number ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;http://www.bing.com/fd/sa/&lt;span style="color: rgb(255, 0, 0);"&gt;0311190804&lt;/span&gt;/Shared.js&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since I've spent most of my life on the server side, I never realized how many gains you get from using Browser Cache effectively.  Here are a couple of stats I took off our site while looking at the caching.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;With the browser cache empty.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;One 18.1 KB File = 172 MS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;With the browser cache populated with the file.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;One 18.1 KB File = 31 MS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I guess the lesson learned is using Browser Cache is great if you know enough on how to invalidate the cache when you need to push a new version of the code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7633040845052474447?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7633040845052474447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7633040845052474447' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7633040845052474447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7633040845052474447'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/05/browser-cache-your-friend-and-foe.html' title='Browser Cache - Your Friend and Foe'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8485279890344175169</id><published>2010-03-30T09:15:00.000-07:00</published><updated>2010-03-30T09:17:10.623-07:00</updated><title type='text'>Enabling the “Send Selection in Mail”</title><content type='html'>After installing VS 2008 and Team Explorer, a colleague of mine asked why she couldn’t see the “Send Selection in Mail” feature as the rest of us could.  Here is why.&lt;br /&gt;&lt;br /&gt;1) First, you need &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;displaylang=en"&gt;VS 2008 SP1&lt;/a&gt;.  SP1 is key here.&lt;br /&gt;2) Second, you need &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBD14EEA-781F-45A1-8C46-9F6BA2F68BF0&amp;displaylang=en"&gt;Power Tools&lt;/a&gt;.&lt;br /&gt;3) Third, you need to make sure “&lt;a href="http://social.msdn.microsoft.com/Forums/en/tfsworkitemtracking/thread/5f25beb3-e21e-483e-a549-43dfc6887ed2"&gt;.NET Programmability Support&lt;/a&gt;” is configured.&lt;br /&gt;&lt;br /&gt;If you do 1-2, but not three, you’ll get an error that says “TF242403:  To send a query or work items, you must install Outlook 2002 or later” even if you’re running Outlook 2003 or Outlook 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8485279890344175169?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8485279890344175169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8485279890344175169' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8485279890344175169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8485279890344175169'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/03/enabling-send-selection-in-mail.html' title='Enabling the “Send Selection in Mail”'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7025321495844613824</id><published>2010-03-23T14:25:00.000-07:00</published><updated>2010-03-23T14:26:14.402-07:00</updated><title type='text'>“A version of Microsoft Visual Studio that is incompatible with this one”</title><content type='html'>A trusted colleague of mine recently tried to open a VS 2008 solution on his machine.  When going to File – Source Control – Open from Source Control and double clicking on the Solution File, he got the message &lt;span style="font-style:italic;"&gt;"the project [solution name] cannot be opened from source control because it was created by a version of Microsoft Visual Studio that is incompatible with this one."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We first though it was that he didn’t have VS 2008 SP1 installed.  (I have SP1 installed and it worked fine for me.)  However, even after installing VS 2008 SP1 he continued to have the problem.&lt;br /&gt;&lt;br /&gt;We’re not sure what was corrupted, but after deleting his workspace and recreating it, the error went away.  So it must have been a corrupted workspace, or something along those lines, that caused the issue.&lt;br /&gt;&lt;br /&gt;It’s funny in technology how often, &lt;span style="font-style:italic;"&gt;when in doubt, nuke and pave&lt;/span&gt; works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7025321495844613824?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7025321495844613824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7025321495844613824' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7025321495844613824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7025321495844613824'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/03/version-of-microsoft-visual-studio-that.html' title='“A version of Microsoft Visual Studio that is incompatible with this one”'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-373930245856478606</id><published>2010-03-17T10:00:00.000-07:00</published><updated>2010-03-17T10:02:23.194-07:00</updated><title type='text'>Visual Studio 2008 SP1 with Team Explorer Hanging</title><content type='html'>I’m not sure when it started, but my Visual Studio 2008 SP1 has been hanging on my lately.  Looking in Task Manager, I see &lt;span style="font-style: italic;"&gt;devenv.exe*32&lt;/span&gt; is consuming 99% of my CPU.  My life has been within Java lately (via Teamprise’s Eclipse Plug-in) so I haven’t opened VS much, however, winds are changing a bit and so I have it open more often now than before.  And the hanging has been getting on my nerves.&lt;br /&gt;&lt;br /&gt;I’m not 100% sure of the cause, by I think it might be the Team Members (working….) that I see sporadically on a few of the ~24 Team Projects I have on my list.  My guess is that is causing some issues.&lt;br /&gt;&lt;br /&gt;I don’t use the Team Members feature of TFS so I’ve disabled it following &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2009/01/09/q-how-do-i-disable-the-team-members-feature-of-tfpt.aspx"&gt;these instructions&lt;/a&gt;.  I just did the first step and it seems to have stopped the hanging for now.&lt;br /&gt;&lt;br /&gt;So far so good, so hopefully I’m not speaking too soon ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-373930245856478606?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/373930245856478606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=373930245856478606' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/373930245856478606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/373930245856478606'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/03/visual-studio-2008-sp1-with-team.html' title='Visual Studio 2008 SP1 with Team Explorer Hanging'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8599690667556285492</id><published>2010-03-16T08:37:00.001-07:00</published><updated>2010-03-16T08:43:19.278-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><title type='text'>Connecting Visual Studio 2008 SP1 to TFS 2010 RC</title><content type='html'>After my colleague installed TFS 2010 RC to our DEV system, I mustered up the courage to try and connect via Visual Studio 2008 SP1. Not much luck starting out.&lt;br /&gt;&lt;br /&gt;I don’t remember the exact error, but it was something in regards to "Unable To Connect." Thanks for letting me know.&lt;br /&gt;&lt;br /&gt;After reading through a few blogs and discussion boards (most of them referenced the need for Visual Studio 2008 SP1 which I already had), I came across this &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfsprerelease/thread/dc63adc3-75a7-4cfc-9943-242a80229ebe"&gt;one&lt;/a&gt; which at the bottom shows you a registry edit you can make to add the TFS 2010 to your VS 2008 SP1 server list. After trying this, I got a bit farther and finally a meaningfully error message.&lt;br /&gt;&lt;br /&gt;When trying to connect, we got "You Must Update Your Client with the Forward Compatibility Update.." I couldn't copy/paste the link in the dialog window (sigh), so I got out my pencil and paper to write it down. &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d"&gt;Here&lt;/a&gt; it is for you so you don't have to repeat the same archaic steps.&lt;br /&gt;&lt;br /&gt;After installing this package, I was able to connect by putting in http://$server-name:8080/tfs/$collection-name&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8599690667556285492?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8599690667556285492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8599690667556285492' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8599690667556285492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8599690667556285492'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/03/connecting-visual-studio-2008-sp1-to.html' title='Connecting Visual Studio 2008 SP1 to TFS 2010 RC'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7710706997905755124</id><published>2010-03-12T09:46:00.000-08:00</published><updated>2010-03-15T07:30:56.186-07:00</updated><title type='text'>Out of Memory Exceptions in Ant</title><content type='html'>While trying to get some new build machines cooking, a colleague of mind forced me to notice that Java 1.6 on Windows must default it’s heap size to 64 megs.  When running an Ant job, he was getting and Out of Memory Exception when trying to compile JUnit reports via the JUnitReport Task.&lt;br /&gt;&lt;br /&gt;I figured out the default heap size by opening JConsol and checking Max setting on the Memory Tab.  Sure enough, without any Max Setting it was 64m.&lt;br /&gt;&lt;br /&gt;What got this whole thing confused was that we were setting a larger heap (1.6gig) on the JUnit execution.  That is, when JUnit forked out for its own VM to run on, it used 1.6 gigs which turns out to be more than enough.  However, the Ant process was running at 64m (the default remember) and giving us fits when Ant’s JUnitReport, which does not fork itself, was trying to compile the HTML reports.&lt;br /&gt;&lt;br /&gt;To fix this, we simply upped Ant’s Max Heap Size to something larger (e.g. –Xmx512m) by setting ANT_OPTS=–Xmx512m as an Environment variable on the server.  (As a side note, remember you need to refresh the environment of any tooling needing to use this new variable.  Examples are recycling a process like Team Build or closing and restarting your command prompt).  Once we did this all was better.&lt;br /&gt;&lt;br /&gt;Free coffee is coming my way!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7710706997905755124?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7710706997905755124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7710706997905755124' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7710706997905755124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7710706997905755124'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2010/03/out-of-memory-exceptions-in-ant.html' title='Out of Memory Exceptions in Ant'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6083392981080760582</id><published>2009-11-09T09:06:00.000-08:00</published><updated>2009-11-09T09:08:03.656-08:00</updated><title type='text'>Thoughts on Microsoft's purchase of Teamprise</title><content type='html'>Since I was the first to bring TFS/Teamprise into my company, I've been asked to comment on the Microsoft/Teamprise deal.  Though Teamprise and Microsoft have seemed to have a tight relationship all along (and users have benefited from this), I believe combining them makes good business sense.  Why?  Let me explain.&lt;br /&gt;&lt;br /&gt;Large companies, like the one I work for and partially own (tongue and cheek here as I own a small portion of stock), want vendors who have consolidated tool sets that fit their development ecosystems.  I've only worked for one company, but I'm guessing that most organizations have two large pillars: Java and .NET.  What we don't want to do is buy one tool for our .NET folks and another for our Java folks.  Often, a single person works in both technologies so buying two licenses doesn't make economic sense.&lt;br /&gt;&lt;br /&gt;TFS along with Teamprise has allowed us to satisfy the needs of developers working in .NET and those working in Java on Linux desktops.  One sticking point however has been that we have two vendor relationships to manage.  While this has never bothered me much, our procurement department has mentioned that they like to limit the touch points.  And since they deal with the myriad of legal contracts and license management (a significant pain point for large organizations), I can understand their concerns.&lt;br /&gt;&lt;br /&gt;Buying Teamprise makes TFS a more attractive solution for companies with multiple development ecosystems.  Three years ago when I approached our vice president with the TFS proposal, he questioned why Rational could give us everything we needed while TFS required us to buy an additional product.  This concern was allayed by other factors (ease of use, migration path, price, etc.,) but it would have been an easier sell if Microsoft had a cross-platform solution back then.  I can only imagine this purchase makes TFS more attractive to those on the fence about what product to go with.&lt;br /&gt;&lt;br /&gt;Lastly, a note to Microsoft's leadership:  In my 12 year career, Teamprise from top to bottom has been the easiest company to work with.  Everything from support (Tonya Nunn is great) to development leadership (Martin and Edward Thomson of course), we've had nothing but positive experiences with them.  I hope you leverage their close, personal approach to working with customers.  They are every bit as important (if not more) to Teamprise's success as the software itself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6083392981080760582?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6083392981080760582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6083392981080760582' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6083392981080760582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6083392981080760582'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/11/thoughts-on-microsofts-purchase-of.html' title='Thoughts on Microsoft&apos;s purchase of Teamprise'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2506235449715310131</id><published>2009-11-04T11:14:00.000-08:00</published><updated>2009-11-04T11:15:30.937-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Explorer'/><title type='text'>"You are not logged into Windows Live Messenger"</title><content type='html'>After a user (a business representative user) installed the October Power Tools, they started getting a message saying &lt;span style="font-weight:bold;"&gt;"Team Foundation Error: You are not logged into Windows Live Messenger"&lt;/span&gt; when opening VS.NET 2008 Team Explorer.&lt;br /&gt;&lt;br /&gt;I didn't look into it much (too many other things going on), but I guess these steps fixed it (or disabled whatever was causing the issue).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;1. Open VS 2008 and wait until Team Members is not "working..."&lt;br /&gt;2. Right-click on it and select Personal Settings&lt;br /&gt;3. Under Collaboration, click Change&lt;br /&gt;4. On the opened dialog select None and click OK&lt;br /&gt;5. Click OK once again&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I got them from this &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfspowertools/thread/e80f0333-9ef6-48a0-a409-1a693d5afcc6/"&gt;forum page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2506235449715310131?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2506235449715310131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2506235449715310131' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2506235449715310131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2506235449715310131'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/11/you-are-not-logged-into-windows-live.html' title='&quot;You are not logged into Windows Live Messenger&quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2233403966816390410</id><published>2009-07-15T13:04:00.000-07:00</published><updated>2009-07-15T13:05:27.491-07:00</updated><title type='text'>"TF84037: There was a problem initializing the Microsoft Excel Team Foundation AddIn"</title><content type='html'>We seem to have a number of people who get the error&lt;span style="font-style:italic;"&gt; "TF84037: There was a problem initializing the Microsoft Excel Team Foundation AddIn.  Re-installing the Team Foundation Client may be required."&lt;/span&gt; Which usually boils down to the user not having .NET Programmability Support enabled on their Office installation.  Here are some plagiarized instructions I stole from someone else who I can't remember who.  Thanks to whoever I took these from.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;It looks like Office 2007 .Net programmability support is not installed.  You need to modify your installed version of Office and install this option.  I thought we had a better error message for this...&lt;br /&gt;1.  In Add/Remove programs, locate your Office application and select it.&lt;br /&gt;2.  Click on the 'Change' button&lt;br /&gt;3.  Select 'Add or Remove features' and click 'next'&lt;br /&gt;4.  Select 'Choose advanced customization of applications' and click 'next' OR select something like 'Add .Net programmability support'.&lt;br /&gt;5.  In the tree view, expand 'Microsoft Office Excel' and make sure the .NET Programmability Support option is set to 'run from my computer'.&lt;br /&gt;6.  Click 'update'.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2233403966816390410?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2233403966816390410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2233403966816390410' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2233403966816390410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2233403966816390410'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/07/tf84037-there-was-problem-initializing.html' title='&quot;TF84037: There was a problem initializing the Microsoft Excel Team Foundation AddIn&quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-3425090652244491535</id><published>2009-07-07T13:56:00.000-07:00</published><updated>2009-07-07T13:58:18.598-07:00</updated><title type='text'>Slow "Get" issue resolved</title><content type='html'>Three or four months back we decided to move our build systems from a dedicated virtual machine (VM) farm to the company supported VM farm in the data center.  The data center infrastructure had all the bells and whistles (support, backups, redundancy, etc.,).&lt;br /&gt;&lt;br /&gt;Everything worked well with the exception of the Gets.  Our Gets were taking between 5-10 times longer than in our dedicated farm.  We thought it might be a hardware issue, but the new VMs had more memory, more processors, sat physically closer to our TFS server, etc.  What the heck?&lt;br /&gt;&lt;br /&gt;I spent a good 2-3 days running tests and engaging experts including Teamprise and Microsoft.  (I also gained some gray hair.)  No such luck getting it figured out.&lt;br /&gt;&lt;br /&gt;Turns out my colleague ran into a guy who was having similar issues after migrating to the data center VM farm.  Turns out, the data center VM farm was running a new version of our virus scanning software.  The real-time scanning must have been checking every file.  Once we turned that off, our Gets were significantly faster in the data center VM farm.&lt;br /&gt;&lt;br /&gt;What I still don't understand is that the Gets were taking abnormally longer on JAR files (e.g. mac.jar) compared to other binary files (e.g. mac.msi).  I'm thinking that since a Jar file could be setup as an executable (I think that is possible in Windows), the virus scanner was spending extra time on those.  This is just a hunch.&lt;br /&gt;&lt;br /&gt;So if you're running into performance issues with your TFS Gets, try disabling your virus scanner (just for testing of course) and see if that is the cause.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-3425090652244491535?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/3425090652244491535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=3425090652244491535' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3425090652244491535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3425090652244491535'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/07/slow-get-issue-resolved.html' title='Slow &quot;Get&quot; issue resolved'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5003474491617078501</id><published>2009-05-14T08:39:00.001-07:00</published><updated>2009-05-14T08:39:43.253-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><title type='text'>"Updating Work Item Data has encountered a problem"</title><content type='html'>If you get an error in Teamprise like &lt;span style="font-style:italic;"&gt;"Updating Work Item Data has encountered a problem.  Java.sql.SQLException: File input/output error: Unexpected Token:"&lt;/span&gt;, just clean your local cache.  It's probably some kind of synchronization issue with the local cache and TFS server.&lt;br /&gt;&lt;br /&gt;On XP the Teamprise local cache data are stored under C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Teamprise\2.0.  For this error you just need to delete the ./db directory.  You will have to close Eclipse or Teamprise before doing so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5003474491617078501?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5003474491617078501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5003474491617078501' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5003474491617078501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5003474491617078501'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/05/updating-work-item-data-has-encountered.html' title='&quot;Updating Work Item Data has encountered a problem&quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-1998348028644172786</id><published>2009-04-21T07:46:00.001-07:00</published><updated>2009-04-21T07:46:42.768-07:00</updated><title type='text'>Finding the process locking files or folders on Windows 2008 Server.</title><content type='html'>If you ever need to find what process has a file/folder locked in a 64-bit Windows 2008 Server machine, check out &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx"&gt;Handle&lt;/a&gt;.  I usually use WhoLockMe, but it didn't work on my 64-bit machine running Windows 2008 Server.&lt;br /&gt;&lt;br /&gt;Unzip handle.exe on your machine and issue "handle c:\myFolderName".  It will list out the process ids that have the file or folder locked.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx"&gt;Sysinternals&lt;/a&gt; has a ton of other tools that I've found very helpful in administering servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-1998348028644172786?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/1998348028644172786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=1998348028644172786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1998348028644172786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1998348028644172786'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/04/finding-process-locking-files-or.html' title='Finding the process locking files or folders on Windows 2008 Server.'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7550104168222882406</id><published>2009-04-01T08:43:00.000-07:00</published><updated>2009-04-01T08:44:20.571-07:00</updated><title type='text'>Disabling an ASP.NET Web Project from building in a Solution</title><content type='html'>We ran into a problem recently where we wanted to add an ASP.NET Web Project to our Solution but to not be built during the Team Build.  Why?  It's a long-story, but it seems to be working well for the group.  We had this setup before and working fine, but then someone broke it and we just got around to fixing it again.&lt;br /&gt;&lt;br /&gt;Unfortunately when adding the ASP.NET Web Project this time, we were getting errors in Team Build because Team Build couldn't find the project to build  Hum?  In the Solution's Configuration Manger we had unselected the "Build" check mark for the ASP.NET Web Project.  Yet the build continued to run.&lt;br /&gt;&lt;br /&gt;After scratching our heads, my colleague (my much smarter colleague) noticed that the Solution File had this in it.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;{95153BD9-7C07-4754-8DB2-37512B95B43C}.Release|Any CPU.Build.0 = Debug|Any CPU&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My understanding of this is that when we run the build via Team Build, we say "Release|Any CPU" in the TFSBuild.proj file.  It's the default.  When Team Build (actually MSBuild) sees this line, it assumes that we intend to build the ASP.NET Web Project.  However, we don't and what I'm still missing is why unselecting the "Build" check mark didn't remove this line.&lt;br /&gt;&lt;br /&gt;To remove the solution setting, my colleague Right Clicked on the ASP.NET Web Project, Selected Property Pages, Selected Build and under "Before running startup page," she changed it from Build Website to No Build.  The check box Build Web Site as part of Solution was already unchecked though if it was checked, we would have unchecked it as well.  Now the Solution build works fine as it does not build the ASP.NET Web Project (which we intentionally don't want to build).&lt;br /&gt;&lt;br /&gt;In summary, do get the ASP.NET Web Project to not build, we 1) unchecked the "Build" check box in the Solution's Configuration Manager, 2)  Changed the ASP.NET Web Project's "Before running startup page" to No Build and 3) made sure check box Build Web Site as part of Solution was unchecked.&lt;br /&gt;&lt;br /&gt;Some combination of these removed the line &lt;span style="color: rgb(51, 51, 255);"&gt;{95153BD9-7C07-4754-8DB2-37512B95B43C}.Release|Any CPU.Build.0 = Debug|Any CPU &lt;/span&gt;from our solution file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7550104168222882406?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7550104168222882406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7550104168222882406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7550104168222882406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7550104168222882406'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/04/disabling-aspnet-web-project-from.html' title='Disabling an ASP.NET Web Project from building in a Solution'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6500495063272381614</id><published>2009-03-26T21:05:00.000-07:00</published><updated>2009-03-27T07:38:57.042-07:00</updated><title type='text'>TFS 2008 SP1 upgrade nightmare</title><content type='html'>I'm typically very pro-TFS on this blog, but I have to share some negative news.  Mainly because it cost me, and my colleagues, an entire evening away from our families while we upgraded.  Here are the issues and resolutions from our nightmare.  It took us six hours in total.  We're done now and I'm off to my home where I can lie awake all night and stew.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue #1:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Issue: .NET Framework 3.5 SP1 install failed when installing Visual Studio 2008 SP1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Resolution: Installed framework separately.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue #2:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Connecting to SQL Server Reporting Services. Please wait...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Invalid namespace&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Value cannot be null.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Parameter name: uriString&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Configuring SQL Server Reporting Services failed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Resolution: Removed the Standby Key from the database.&lt;br /&gt;C:\Program Files\Microsoft SQL Server\90\Tools\binn\rskeymgmt -l&lt;br /&gt;C:\Program Files\Microsoft SQL Server\90\Tools\binn\rskeymgmt -r asdfasfasdf-8968686-asfa-asdfdsf-9as7dfasfasd&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue #3:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Issue: Restart attempt failed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;IIS Admin Service or a service dependent on IIS Admin is not active.  It most likely failed to start, which may mean that it's disabled.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;03/26/09 19:55:52 DDSet_Status: Process returned 1062&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;03/26/09 19:55:52 DDSet_Error: The Commandline '"C:\WINDOWS\system32\iisreset.exe" /Restart' returned non-zero value: 1062.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;MSI (s) (AC!14) [19:55:52:046]: Product: Microsoft Visual Studio 2008 Team Foundation Server - ENU -- Error 32000.The Commandline '"C:\WINDOWS\system32\iisreset.exe" /Restart' returned non-zero value: 1062.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Error 32000.The Commandline '"C:\WINDOWS\system32\iisreset.exe" /Restart' returned non-zero value: 1062.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;03/26/09 19:55:52 DDSet_CARetVal: 32000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Resolution:  The install person watched the IIS Admin service and 'W3SVC' service.  When they went down, he manually brought them back up.  We tried this five times manually and never got it right.   We finally reverted to issuing the command "iisreset &amp; issreset &amp; issrest …" continually.  Eventually we got the timing right and it went through.  This is the one that really gets me upset.  I've never seen such a thing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue #4:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Issue: Team System Web Access 2008 uninstalls, but you have to delete the IIS Website and App Pool manually through the IIS Manager.  You also have to purge d:\Program Files\Team System Web Access 2008 as the uninstall does not delete that either.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Resolution: Delete the IIS data and installed files manually.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue #5:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Issue: We ran into the issue with .NET 3.5 SP1 and Fully Qualified Domain Names.  Here are some of the error messages we found in the Event Viewer.&lt;br /&gt;&lt;br /&gt;Exception Message: TF30063: You are not authorized to access tfs.mycompany.com&lt;br /&gt;&lt;br /&gt;TF53002: Unable to obtain registration data for application Build.&lt;br /&gt;&lt;br /&gt;Detailed Message: TF53005: Unable to retrieve the Team Foundation Server installed UI culture.&lt;br /&gt;&lt;br /&gt;Detailed Message: TF53002: Unable to obtain registration data for application VersionControl.&lt;br /&gt;&lt;br /&gt;Detailed Message: TF30040: The database is not correctly configured. Contact your Team Foundation Server administrator.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Resolution: See here for resolution steps.  The first one (i.e. recommended) didn't work for us.  We had to do the second one, which worked.  &lt;a href="http://support.microsoft.com/kb/926642"&gt;http://support.microsoft.com/kb/926642&lt;/a&gt;.  A special thanks to Brian and &lt;a href="http://blogs.msdn.com/buckh/archive/2007/03/31/configuring-team-foundation-server-to-use-fully-qualified-domain-names.aspx"&gt;Buck&lt;/a&gt; for posting this on their blogs.  &lt;br /&gt;&lt;br /&gt;Honestly, if it wasn't for what people post on blogs, we would have had to rolled back.  A special thanks to everyone in the community who shares their experiences.  Hopefully some of the issues and solutions I've given here help others.&lt;br /&gt;&lt;br /&gt;UPDATE (3/37/09):  One thing to remember is if you use a FQDN (e.g. tfs.mycompany.com) is you have to run ActivateAT [MachineName] (e.g. activateat MyTFSAppTier) on the primary app tier before running the install.  We knew about this as someone else at the company told us so it wasn't an issue that we ran into, but could be one that you do if you fail to do this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6500495063272381614?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6500495063272381614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6500495063272381614' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6500495063272381614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6500495063272381614'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/03/tfs-2008-sp1-upgrade-nightmare.html' title='TFS 2008 SP1 upgrade nightmare'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5400638371391921032</id><published>2009-03-20T07:53:00.000-07:00</published><updated>2009-03-20T07:58:14.113-07:00</updated><title type='text'>Cross Platform Builds with Team Build</title><content type='html'>For some reason I seem to constantly find myself working with cross platform solutions (e.g. .NET, J2EE, C).  Recently I've been assigned to figure out how we can compile custom Apache HTTPd modules without re-inventing our current build solution (which uses Team Build).  I've created a diagram that describes the proposed solution.&lt;br /&gt;&lt;br /&gt;The basic idea is we use Team Build for all the peripheral build tasks, outside of compile.  Compile has to be done on platform specific machines (e.g. Linux 64).  So to compile, we simply use Ant's SSH tasks to 1) transfer code to the platform machines, 2) compile via make and then 3) transfer binaries back to the Team Build server from the platform machines so the build can continue.  We use &lt;a href="http://teamprise.com/products/download/"&gt;Teamprise's Build Extensions&lt;/a&gt; to call Ant.  In addition, in previous lives, we've used Teamprise for #1 and we'll probably look at doing the same in the near future.  Here is the diagram.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_kySaPV2TsZk/ScOuq-gd93I/AAAAAAAAACU/jGtrv1WnAdo/s1600-h/cross_platform_builds2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 366px;" src="http://2.bp.blogspot.com/_kySaPV2TsZk/ScOuq-gd93I/AAAAAAAAACU/jGtrv1WnAdo/s400/cross_platform_builds2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5315284038584235890" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5400638371391921032?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5400638371391921032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5400638371391921032' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5400638371391921032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5400638371391921032'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/03/cross-platform-builds-with-team-build.html' title='Cross Platform Builds with Team Build'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_kySaPV2TsZk/ScOuq-gd93I/AAAAAAAAACU/jGtrv1WnAdo/s72-c/cross_platform_builds2.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7579551366770167997</id><published>2009-02-18T08:29:00.000-08:00</published><updated>2009-02-18T08:30:26.783-08:00</updated><title type='text'>Teamprise’s “Show the New Project ….” Feature</title><content type='html'>If a user Imports a folder from Source Control via Teamprise’s Eclipse plug-in, the plug-in will look for a server copy or local copy of the .project file.  If that file is found, it’s used for the project creation &lt;span style="font-weight:bold;"&gt;EVEN &lt;/span&gt;if you select the “Show the New Project ….” select button.   This becomes troublesome when a user walks through the import wizard, completes the import, then realizes they wanted to use the “Show New Project ….” feature in Teamprise.  If they delete the Project from Eclipse, but don’t delete the local .project file (created during the first import), subsequent imports will always default to the local .project file, &lt;span style="font-weight:bold;"&gt;EVEN &lt;/span&gt;if the user selects the “Show the New Project ….”.&lt;br /&gt;&lt;br /&gt;I can see both sides of almost everything, however, I think the “Show the New Project ….” select option should override the fact that a local or server .project file is found.  Or at a minimum, a warning should be tossed to the user.  I think this would have saved my good friends downstairs a headache or two!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7579551366770167997?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7579551366770167997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7579551366770167997' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7579551366770167997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7579551366770167997'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2009/02/teamprises-show-new-project-feature.html' title='Teamprise’s “Show the New Project ….” Feature'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5330148363466349665</id><published>2008-12-08T13:09:00.000-08:00</published><updated>2008-12-08T13:10:20.889-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alerts'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>Excluding Built Types from Alerts</title><content type='html'>Friday I got a question from one of my colleagues asking how to exclude a particular Build Type from their Alerts.  I knew it could be done, but wasn't sure exactly what the proper filter would be.  Thanks to &lt;a href="http://blogs.msdn.com/jpricket/archive/2006/09/05/useful-buildcompletionevent-filters.aspx"&gt;Jason Prickett's blog post&lt;/a&gt; for some general guidance, I think we figured it out.&lt;br /&gt;&lt;br /&gt;The easiest way to do this is to use Power Tools "Alert" interface which shows up under a Team Project in Visual Studio's Team Explorer.  Simply add a &lt;span style="font-style:italic;"&gt;'DefinitionPath = '\TeamProject\TeamBuildType'&lt;/span&gt; clause.  Add Or clauses if you have more than one Build Type in a Team Project you want to grab.&lt;br /&gt;&lt;br /&gt;For those of you using Teamprise, you can install the free Visual Studio Team Explorer and use the command line tool called BisSubscribe.  You can use BisSubscribe from the command line to run something similar to this:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;bissubscribe.exe /eventType BuildCompletionEvent2 /server http://tfs.mycompany.com:8080 /address firstname.lastname@mycompany.com /deliveryType EmailHtml /filter "\"TeamProject\" = 'TeamProject' AND "DefinitionPath" = '\TeamProject\TeamBuildType'"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5330148363466349665?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5330148363466349665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5330148363466349665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5330148363466349665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5330148363466349665'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/12/excluding-built-types-from-alerts.html' title='Excluding Built Types from Alerts'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7877120238833571035</id><published>2008-12-02T13:51:00.000-08:00</published><updated>2008-12-02T13:52:15.343-08:00</updated><title type='text'>Using Command Line to search for Changeset comments.</title><content type='html'>Question:  &lt;span style="font-style: italic;"&gt;Mac, how can we search Changeset comments, recursively, for comments matching a certain string (e.g. "refactoring").&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;My Answer:  &lt;span style="font-style: italic;"&gt;I would just use the command line client and pipe the output to a string searcher.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Windows: &lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;tf history /server:http://tfs.mycompany.com:8080 "$/Team Project/Development" /noprompt /recursive | findstr refactoring&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Linux: &lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;tf history /server:http://tfs.mycompany.com:8080 "$/Team Project/Development" /recursive | grep refactoring&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*Linux is using Teamprise's Command Line Client software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7877120238833571035?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7877120238833571035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7877120238833571035' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7877120238833571035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7877120238833571035'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/12/using-command-line-to-search-for.html' title='Using Command Line to search for Changeset comments.'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5701238949639198119</id><published>2008-12-02T08:33:00.000-08:00</published><updated>2008-12-02T08:33:00.125-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>TF214007: No build was found with the URI</title><content type='html'>After making some changes to our build machine, we started getting the following error.  I got asked to look into the issue and became immediately confused.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Exception Message: TF214007: No build was found with the URI vstfs:///Build/Build/14365. Either the URI does not exist, or TLR\svcTFSService does not have permission to access it. (type BuildNotFoundForUriException)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was able to log onto the build machine and hit the PROD URL for build 14365 just fine.  So I knew it couldn't be permissions.  What was it? I said while scratching my head.&lt;br /&gt;&lt;br /&gt;Six months back we migrated our TFS instance from DEV hardware to PROD data center hardware.  As part of that process, we updated the DEV's Instance IDs so we didn't run into conflicts when trying to hit either site (we continue to use DEV for testing).&lt;br /&gt;&lt;br /&gt;While any new connection to DEV would get the new Instance IDs, the legacy connections on our build servers still had the cached version of DEV's Instance IDs, which just so happen to be our PROD Instance IDs (as expected since we migrated from DEV to PROD).&lt;br /&gt;&lt;br /&gt;So what was happing was, when someone was making changes to the build machine, they opened Visual Studio and got connected to DEV by mistake.   DEV, using the cached Instance IDs (again which were PROD's), became the active TFS server somehow.  So when team Build was firing off, it was actually hitting DEV, which obviously didn’t have a build URI 14365.  Thus the error.&lt;br /&gt;&lt;br /&gt;To fix this, we deleted the TFS cache on the build server.  Then to test it, we purposely logged into DEV and checked our local cache.  Sure enough, the new DEV entry in the cache had the new Instance IDs.  All was well after that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5701238949639198119?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5701238949639198119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5701238949639198119' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5701238949639198119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5701238949639198119'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/12/tf214007-no-build-was-found-with-uri.html' title='TF214007: No build was found with the URI'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4160364602504083471</id><published>2008-11-26T07:46:00.000-08:00</published><updated>2008-11-26T07:48:50.934-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>Check in comment to dynamically enable or disable CI builds.</title><content type='html'>I just got done adding in some custom MSBuild changes to automatically check in a Jar file to another build type (i.e. MainBuild in this example) after the Jar file build type (i.e. CommonBuild in this example) is finished.&lt;br /&gt;&lt;br /&gt;Buck showed me a &lt;a href="http://blogs.msdn.com/buckh/archive/2007/07/27/tfs-2008-how-to-check-in-without-triggering-a-build-when-using-continuous-integration.aspx"&gt;really cool way&lt;/a&gt; to "enable" or "disable" continuous integration (CI), which is turned on for us, in the MainBuild.  That is, when CommonBuild checks in the Jar file to MainBuild, we can control whether we want to fire off a MainBuild.&lt;br /&gt;&lt;br /&gt;First we set a Property called &lt;span style="font-weight:bold;"&gt;ExecuteMainBuildCIBuild&lt;/span&gt; to &lt;span style="font-style:italic;"&gt;true&lt;/span&gt;|&lt;span style="font-style:italic;"&gt;false&lt;/span&gt;.  If true, we set the check in comment equal to &lt;span style="font-style:italic;"&gt;/comment:"AUTO CHECKIN FROM TFS FOR COMMON JAR BUILT IN $(BuildNumber)"&lt;/span&gt;.  If false, we set the check in comment to &lt;span style="font-style:italic;"&gt;/comment:"$(NoCICheckinComment)"&lt;/span&gt;.  &lt;span style="font-weight:bold;"&gt;$(NoCICheckinComment)&lt;/span&gt; resolves to the string &lt;span style="font-style:italic;"&gt;***NO_CI***&lt;/span&gt; which tells Team Build to not fire a CI build.&lt;br /&gt;&lt;br /&gt;End users can also use &lt;span style="font-style:italic;"&gt;***NO_CI***&lt;/span&gt; if they want to control the CI build behavior.  For example, if you're wishing to check in a change and not execute a CI build, you can simply put &lt;span style="font-style:italic;"&gt;***NO_CI***&lt;/span&gt; in the Comments section.  I'm not sure if management will enjoy us sharing this back door, however I've found it to be a valuable tool for solving some unique problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4160364602504083471?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4160364602504083471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4160364602504083471' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4160364602504083471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4160364602504083471'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/11/check-in-comment-to-dynamically-enable.html' title='Check in comment to dynamically enable or disable CI builds.'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-221902224269504441</id><published>2008-11-21T12:26:00.000-08:00</published><updated>2008-11-21T12:28:49.416-08:00</updated><title type='text'>Update on our TFS adoption</title><content type='html'>Hello again! Yes, I'm still alive and kicking.  Sorry for not writing any updates lately.  I've been working on some other things outside of TFS.  In addition, I've got a number of colleagues who are taking over the primary role as TFS administrators.  I still get involved at times, but it's good to see others taking an interest in supporting the product.&lt;br /&gt;&lt;br /&gt;I do have to share with you some tough news about TFS.  TFS is kind of taking a public relations beating in my new group.  In fact, so much so, there has been a "TFS Improvement" team created to look at changes we can make to both, our use of the tool, and possible suggestions for the vendor on how to make TFS better.&lt;br /&gt;&lt;br /&gt;I'm a bit confused on where the movement is coming from, as I'm not part of the "improvement team," however, in reviewing the meeting notes, it looks like Work Items used to support an Agile development effort are a primary target.  Here is a sampling of some of the complaints.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;- Need a hierarchical representation of work items that shows partial completion&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;- Enable users to find and track dependencies more easily&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;- Need to map work items to current priorities, in/out list&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;- Need to make it easier to set up alerts on work items for yourself and others&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;- People should be able to create a Team Query&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;- TFS should auto-complete stories when all tasks are marked as completed.  Or, depending on workflow, it should auto-magically assign the story to the business partner for final validation&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;- TFS should do the same to backlog stories when the associated tech stories in the work stream are completed&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Looking through this list, I think there are many things we could do to help solve these, somewhat vague, issues people are complaining about.  For example, Alerting is now enhanced with the new Power Tools.  And I see TSWA also has a way to setup Alerts.  This may have come from the Teamprise people who still are having some trouble with Alerting.  We've showed them the TSWA and I think that is helping.  The Team Query thing is simply a permission deal that we can work out internally.&lt;br /&gt;&lt;br /&gt;However there is one primary feature that I think would solve a number of problems we're having.  And that is a hierarchy that can perform "Actions" when parents or children are updated.  For example, you can see the two bottom "ideas" (from a former Version One user who recently joined our company) are regarding a parent Work Item State action to take place when Child Task(s) are completed/updated.  This, very vocal, person would also like to see Field roll-ups.  That is, if the Child Tasks had "Hours Worked On Task," those values should be rolled up into the Parent Work Item so you can see the rolled up values of "Hours Worked On" for the Child Tasks of the Parent (i.e. Product Backlog Item in our case).&lt;br /&gt;&lt;br /&gt;We'll see where this goes.  There is a lot of movement towards looking at Version One right now.  And I see they have a TFS interface so I'm sure that will be talked about at the management ranks.  Personally, I like what we have and wouldn't suggest a change.  However, I often think decisions get made because a few squeaky wheels start to complain.  I guess we'll see what comes of this all.  And hopefully Rosario will provide a number of nice new features for Work Item tracking.  Personally, I think it will.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-221902224269504441?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/221902224269504441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=221902224269504441' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/221902224269504441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/221902224269504441'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/11/update-on-our-tfs-adoption.html' title='Update on our TFS adoption'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8343846397085823547</id><published>2008-10-24T09:42:00.000-07:00</published><updated>2008-10-24T09:48:15.604-07:00</updated><title type='text'>Team Companion</title><content type='html'>I'm actually on vacation today, but wanted to share this.  So the business and management folks don't like to use an IDE when using TFS.  Turns out even going to TSWA is a struggle for some.&lt;br /&gt;&lt;br /&gt;My colleague was doing some digging and came across &lt;a href="http://www.ekobit.com/ProductsDetailView.aspx?id=1"&gt;Team Companion&lt;/a&gt;, which is a TFS plug-in to Outlook.  We've been piloting it for a few weeks.  The users most likely to never use TFS, have been enthralled with having Work Items within their Outlook.  From what I hear, they can't say enough great things about it.  We're actually getting people interested in normalizing the paper work behind software development.&lt;br /&gt;&lt;br /&gt;If you're having a hard time getting management and business folks working in TFS, give Team Companion a try.  With TFS being embedded in the only software package they use (i.e. Outlook), TFS becomes even more critical in our business process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8343846397085823547?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8343846397085823547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8343846397085823547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8343846397085823547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8343846397085823547'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/10/team-companion.html' title='Team Companion'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-385340435156617196</id><published>2008-10-10T19:52:00.000-07:00</published><updated>2008-10-10T20:00:50.423-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>"Mac, how do I compile Java with Team Build?"</title><content type='html'>In the past week, I've fielded a number of questions from people within my company regarding how to get started compiling Ant based Java projects within TFS.  Here is what I tell them.  And it would be what I'd tell you if you asked.&lt;br /&gt;&lt;br /&gt;My Colleagues:  &lt;span style="font-style: italic;"&gt;"Mac, can you provide us some information on how to get started using Team Build to compile our Java projects?"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mac: &lt;span style="font-style: italic;"&gt;"There are a number of different ways to solve the problem, but I'd suggest looking at &lt;a href="http://teamprise.com/products/build/"&gt;Teamprise's Team Build Extensions&lt;/a&gt;.  This is an open source project, supported by Teamprise, to run Ant scripts via Team Build (which is nothing more than MSBuild behind the covers).  They have a very good tutorial (as part of the distribution if I remember) and support forum.&lt;br /&gt;&lt;br /&gt;I'd start by trying to get one of your simpler Java projects to build.  Then once you build that, you can get a better understanding of how the tooling can best solve your problem.  What we do is have one parent Ant script that calls all the other tier Ant scripts.  So basically Team Build is just the high-level driver and we let Team Build Extensions and Ant take care of the rest.  This seems to work pretty well for both [MY CURRENT BUSINESS UNIT] and [MY OLD BUSINESS UNIT].  Also, I think if you have JUnit tests that you run as part of the build, and follow some simple rules, Teamprise Build Extensions will publish the results back to TFS.  Pretty cool!&lt;br /&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So if you're looking for help getting started, consider this my response to you.  Let me know how it goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-385340435156617196?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/385340435156617196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=385340435156617196' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/385340435156617196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/385340435156617196'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/10/mac-how-do-i-compile-java-with-team.html' title='&quot;Mac, how do I compile Java with Team Build?&quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2814958480137014841</id><published>2008-10-01T11:33:00.001-07:00</published><updated>2008-10-01T11:33:57.736-07:00</updated><title type='text'>Be careful with the TFS 2008 Retention Policy</title><content type='html'>&lt;p&gt;Be careful with the TFS 2008 Retention Policy.&amp;#160; With TFS 2008, when you set the Retention Policy to remove old builds, it also removes the Label on the source code.&amp;#160; Bad!&amp;#160; In SP1 Microsoft allows for a configuration override to change the behavior of this (i.e. &lt;a href="http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3924050&amp;amp;SiteID=1"&gt;&amp;lt;add key=&amp;quot;PreserveLabelsOnBuildDeletion&amp;quot; value=&amp;quot;True&amp;quot;/&amp;gt;).&lt;/a&gt;&amp;#160; However, since we’re only on TFS 2008 right now, we just got burnt by this.&lt;/p&gt;  &lt;p&gt;What happen was, we needed to branch off a build that was in our customer’s hands.&amp;#160; I informed my colleague to simply branch off that build and let the developers make the appropriate fix.&amp;#160; However, when he looked for the Label he couldn’t find it.&amp;#160; I told him that was simply not true.&amp;#160; Then I read the post &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2929975&amp;amp;SiteID=1"&gt;Retention Policy and missing labels&lt;/a&gt; and started to get very, very nervous.&lt;/p&gt;  &lt;p&gt;We ended up with a work around that helped us solve our problem.&amp;#160; We have a Build report that shows all builds and when they ran.&amp;#160; We were able to find the build number and then using the time that it started execution, find the Changeset which was before the build initiation.&amp;#160; That allowed us to track down where we needed to branch the code from.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2814958480137014841?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2814958480137014841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2814958480137014841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2814958480137014841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2814958480137014841'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/10/be-careful-with-tfs-2008-retention.html' title='Be careful with the TFS 2008 Retention Policy'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2947461667070079948</id><published>2008-09-25T07:26:00.001-07:00</published><updated>2008-09-25T07:28:05.570-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><title type='text'>Manually Adding Files to Pending changes in Teamprise's Plug-in</title><content type='html'>&lt;p&gt;There have been a few times recently when users have added files in Eclipse, but the files were not picked up by Teamprise's Eclipse Plug-in as a Pending Change.&amp;#160; If this happens, the new file will have a &amp;quot;?&amp;quot; on it.&amp;#160; It's one of those incidents that we can't seem to reproduce, but happens ever so often.&amp;#160; It also seems to happen to a small subset of users. &lt;/p&gt;  &lt;p&gt;If you run into this problem, a work around is to manually add the files.&amp;#160; I'm doing this from memory so the steps might be slightly off.&amp;#160; However, I think it's close. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Show the Team Explorer Panel in Eclipse.&amp;#160; Window &amp;gt; View &amp;gt; Teamprise &amp;gt; Team Explorer.&lt;/li&gt;    &lt;li&gt;Make sure your Team Project is selected and expand it.&amp;#160; There you will see Source Control.&lt;/li&gt;    &lt;li&gt;Double click on Source Control.&lt;/li&gt;    &lt;li&gt;In Source Control, path yourself down to the correct directory where the files were indented to be added.&lt;/li&gt;    &lt;li&gt;Right Click on the directory you're wanting to add the file to and say &amp;quot;Add Files to Source Control&amp;quot; (or something like that).&lt;/li&gt;    &lt;li&gt;Now select the files that were not added by the plug-in.&lt;/li&gt;    &lt;li&gt;Back in Eclipse's Package Explorer (or what ever view you're using), Right Click &amp;gt; Team &amp;gt; Synchronize.&lt;/li&gt;    &lt;li&gt;The Synchronize command should now make the &amp;quot;?&amp;quot; files show up as &amp;quot;+&amp;quot; files and thus added to your Pending Changes. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Hope this helps anyone who runs into a similar situation.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2947461667070079948?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2947461667070079948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2947461667070079948' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2947461667070079948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2947461667070079948'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/09/manually-adding-files-to-pending.html' title='Manually Adding Files to Pending changes in Teamprise&amp;#39;s Plug-in'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7271357453032762821</id><published>2008-09-09T14:49:00.001-07:00</published><updated>2008-09-09T14:52:07.756-07:00</updated><title type='text'>&lt;UpdateBuildNumberDropLocation and NFS File Systems</title><content type='html'>&lt;p&gt;Our current Team Build drop location is a &lt;a href="http://searchcio-midmarket.techtarget.com/sDefinition/0,,sid183_gci213851,00.html"&gt;Common Internet File System&lt;/a&gt; (CIFS) mount to some network attached storage (NAS).&amp;#160; To a novice like me, the drop location looks just like a Windows server drive that is shared.&amp;#160; However, on the back end this CIFS mount has all the bells and whistles that the data center offers (e.g. backups, redundancy, etc.).&lt;/p&gt;  &lt;p&gt;The issue we have with the CIFS mount is that while our Windows servers can pick code on their for deployment, our Linux boxes can’t see the CIFS mount.&amp;#160; Since a lot of our development is done in Java and runs on Linux, we have an issue.&lt;/p&gt;  &lt;p&gt;Enter the fine storage and system admin teams who have tested the use of &lt;a href="http://en.wikipedia.org/wiki/Network_File_System_(protocol)"&gt;Network File System&lt;/a&gt; (NFS), as a replacement for the CIFS mount, which is accessible by both Windows and Linux servers.&amp;#160; We’ve tested the NFS mount and sure enough, both our Windows servers and Linux servers can mount to the same drop location and pick up the build output used for deployment.&amp;#160; Perfect right?&amp;#160; Unfortunately there is a small issue.&lt;/p&gt;  &lt;p&gt;According to this &lt;a href="https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2999934&amp;amp;SiteID=1"&gt;post&lt;/a&gt;, Team Build’s &amp;lt;UpdateBuildNumberDropLocation Task has code in it which needs to update permissions on the drop location.&amp;#160; From what I understand, the code will change the permissions so the App Tier service account has access to the drop location (it needs access to delete builds and such).&amp;#160; To see this, Right Click on a file located on the drop location and notice how the App Tier service account has full access to the folder and any sub files or directories.&amp;#160; The &amp;lt;UpdateBuildNumberDropLocation is doing this.&lt;/p&gt;  &lt;p&gt;The issue that I’m running into is, when the drop location is a NFS system, there are no permissions at the file or directory level.&amp;#160; For Windows, the permissions are at the share level.&amp;#160; I’m assuming Linux permissions are dependent on wether the mount is a write or read mount.&amp;#160; So when the &amp;lt;UpdateBuildNumberDropLocation Task runs, it gets a message back saying permissions can’t be set and thus throws this friendly message back to the user: &lt;em&gt;&lt;font color="#ff0000"&gt;“TF209025: The build process is unable to set the permissions on the drop directory &amp;lt;actual drop location&amp;gt;(Detail Message: Attempted to perform an unauthorized operation.). Make sure that the build service account has proper permissions on the build drop directory and try again.”&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;What’s interesting is, the share is wide open thus the NFS mount is wide open.&amp;#160; And Team Build actually writes files to the location.&amp;#160; So functionally everything should work fine if we could get past the feature in the &amp;lt;UpdateBuildNumberDropLocation Task where it tries to adjust permissions.&lt;/p&gt;  &lt;p&gt;I’m not sure what a good solution is for this.&amp;#160; However, I think the current implementation needs adjusting.&amp;#160; In my &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=366931"&gt;Connect submission&lt;/a&gt; to Microsoft, I’ve asked them to provide a Property (e.g. UpdatePermissions=”false”) where you can turn off the permission change when you want to use a NFS mount for your drop location.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7271357453032762821?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7271357453032762821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7271357453032762821' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7271357453032762821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7271357453032762821'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/09/and-nfs-file-systems.html' title='&amp;lt;UpdateBuildNumberDropLocation and NFS File Systems'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8025408961713659040</id><published>2008-09-09T13:43:00.001-07:00</published><updated>2008-09-09T13:43:04.284-07:00</updated><title type='text'>Team Explorer "did not load because of previous errors"</title><content type='html'>&lt;p&gt;My colleague installed TFS 2008 SP1 on our app tier.&amp;#160; He then uninstalled it because we were having some issues, which we're tracking down. However, after uninstalling, we were unable to open Team Explorer due to the following error. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;The Microsoft.TeamFoundation.Client.ServicesHostPackage, Microsoft.VisualStudio.TeamFoundation.TeamExplorer, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ({8E01EC3E-2928-4AA5-B720-E28C163818E6}) did not load because of previous errors. For assistance, contact the package vendor. To attempt to load this package again, type 'devenv /resetskippkgs' at the command prompt.&lt;/font&gt;&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;I'm not sure what &lt;em&gt;/resetskippkgs&lt;/em&gt; does, but I ran it and Team Explorer is now back to being functional.&amp;#160; If you run into a similar problem, I’d be interested to see if this /resetskippkgs works for you.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8025408961713659040?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8025408961713659040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8025408961713659040' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8025408961713659040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8025408961713659040'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/09/team-explorer-not-load-because-of.html' title='Team Explorer &amp;quot;did not load because of previous errors&amp;quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6521838341980800882</id><published>2008-09-05T13:16:00.001-07:00</published><updated>2008-09-05T13:16:23.681-07:00</updated><title type='text'>"Find in Source Control"</title><content type='html'>&lt;p&gt;It's fall which means all the interns from MIT, University of Wisconsin and University of Minnesota (I'm an alumni) head back to school.&amp;#160; It's also time for us full time employees to pick up the messes they left. &lt;/p&gt;  &lt;p&gt;For me, their messes usually include having thousands of files checked out in TFS (or VSS back when we used that).&amp;#160; In the past, I just deleted their workspace from a command line.&amp;#160; That works pretty well and to be honest, should be the way we do this. &lt;/p&gt;  &lt;p&gt;However, my colleague showed me a really cool feature called &amp;quot;Find in Source Control&amp;quot; where you can search on a person's ID to see all their pending changes.&amp;#160; Then you can undo them from there from a nice gui.&amp;#160; Works great when you've got some lead engineer breathing down your neck because they can't update source code because some intern had an exclusive lock on the file.&amp;#160; Nice feature Microsoft.&amp;#160; Keep up the good work.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6521838341980800882?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6521838341980800882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6521838341980800882' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6521838341980800882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6521838341980800882'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/09/in-source-control.html' title='&amp;quot;Find in Source Control&amp;quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7200422881208149336</id><published>2008-08-29T13:47:00.000-07:00</published><updated>2008-08-29T13:48:20.426-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>HintPath and Team Build</title><content type='html'>Very long week so I've got to keep this short.  For some reason when a developer added a Reference to his csproj file it didn't add a &amp;lt;HintPath.  The build worked locally and it worked on the build machine when we ran the build manually through Visual Studio.  However, when trying to run the build via Team Build, we got the error "Could not resolve this reference. Could not locate the assembly."  We could see that when Csc.exe was called, our Reference was not referenced.&lt;br /&gt;&lt;br /&gt;The fix was to add a &amp;lt;HintPath to the csproj file.  After doing that, Team Build ran fine and we could see it added to the Csc.exe Reference command line.  I didn't get time to figure out why, but thought I'd document it here for when it happens again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7200422881208149336?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7200422881208149336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7200422881208149336' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7200422881208149336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7200422881208149336'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/08/hintpath-and-team-build.html' title='HintPath and Team Build'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2184766161993646577</id><published>2008-08-12T08:18:00.000-07:00</published><updated>2008-08-12T08:18:01.110-07:00</updated><title type='text'>Source Control Cache Hits on our server.</title><content type='html'>I enjoy reading &lt;a href="http://blogs.msdn.com/granth/default.aspx"&gt;Grant's&lt;/a&gt; blog.  In this &lt;a href="http://blogs.msdn.com/granth/archive/2008/08/06/how-do-i-find-the-cache-hit-ratio-on-my-tfs-at-server.aspx"&gt;Cache Hits post&lt;/a&gt;, he shows how to get your Cache Hit Ratio.&lt;br /&gt;&lt;br /&gt;We're currently hitting our local Source Control cache &lt;span style="font-weight:bold;"&gt;96.06%&lt;/span&gt; of the time.  What are your numbers?  I'm interesting in comparing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2184766161993646577?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2184766161993646577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2184766161993646577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2184766161993646577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2184766161993646577'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/08/source-control-cache-hits-on-our-server.html' title='Source Control Cache Hits on our server.'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8399268846909855963</id><published>2008-08-11T12:13:00.000-07:00</published><updated>2008-08-11T12:18:17.049-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>Using $(WebProjectOutputDir) in the *.csproj file's PostBuildEvent</title><content type='html'>A colleague of mine wanted to add a PostBuildEvent in their *.csproj file which would run a custom executable to create generated java script files.&lt;br /&gt;&lt;br /&gt;The change (see BEFORE below) worked locally as the path they wanted the generated was $(ProjectDir) which mapped to the .\Sources directory on the build machine and their locally directory within their IDE.  The issue was, we needed the generated files to be under .\Binaries on the build machine which didn't exist on their machine.  More specifically, we needed this generated file created under $(OutDir)_PublishedWebsites\$(MSBuildProjectName) on the build machine which translates to .\Binaries\_PublishedWebsites\$(MSBuildProjectName).&lt;br /&gt;&lt;br /&gt;What we ended up doing was, instead of using the $(Outdir) property, we used the $(WebProjectOutputDir) which was set in the $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets file.  Using this value allows the output directories to be correctly set on both the build machine (where we want to use .\Binaries) and $(ProjectDir) where we want to use the locally structure.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BEFORE:&lt;/span&gt;&lt;br /&gt;"$(TargetDir)JavascriptFromMvcRoutes.exe" "$(TargetDir)$(TargetFileName)" "$(&lt;span style="color: rgb(255, 0, 0);"&gt;ProjectDir&lt;/span&gt;)js\Generated.js"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AFTER:&lt;/span&gt;&lt;br /&gt;"$(TargetDir)JavascriptFromMvcRoutes.exe" "$(TargetDir)$(TargetFileName)" "$(&lt;span style="color: rgb(255, 0, 0);"&gt;WebProjectOutputDir&lt;/span&gt;)js\Generated.js"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8399268846909855963?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8399268846909855963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8399268846909855963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8399268846909855963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8399268846909855963'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/08/using-webprojectoutputdir-in-csproj.html' title='Using $(WebProjectOutputDir) in the *.csproj file&apos;s PostBuildEvent'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-1160660270809037662</id><published>2008-08-07T11:19:00.001-07:00</published><updated>2008-08-07T11:19:59.397-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSWA'/><title type='text'>TSWA Profile &gt; Options Not Staying</title><content type='html'>A colleague of mine tracked down an issue where all users' TSWA Profile &gt; Options were not staying after they closed the browser.  For example, a user would change their Theme to Olive, but after they closed their browser it would default back to the default.&lt;br /&gt;&lt;br /&gt;We're not sure if this is the right fix, but we had to change permissions on the D:\Program Files\Microsoft Visual Studio 2008 Team System Web Access\Web folder so that "Users" had Modify permissions.  Users are now able to change their Options and they stick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-1160660270809037662?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/1160660270809037662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=1160660270809037662' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1160660270809037662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1160660270809037662'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/08/tswa-profile-options-not-staying.html' title='TSWA Profile &gt; Options Not Staying'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8467785588442893312</id><published>2008-08-01T14:29:00.000-07:00</published><updated>2008-08-01T14:31:18.390-07:00</updated><title type='text'>Question Marks "?" on files in Teamprise</title><content type='html'>A colleague of mine summoned me over to his desk.  He had question marks "?" on all the files he checked out from the Teamprise Plug-in and was wondering why.&lt;br /&gt;&lt;br /&gt;Typically I see files with question marks on them when the user has changed the file permissions without checking the file out.  Teamprise, not knowing what the status of the file is (as I would expect), labels the file with a small question mark indicating that something has changed, but its not sure what.  Or something like that.&lt;br /&gt;&lt;br /&gt;However, in this case the user had promised me the files were checked out.  He had the Pending Changes to prove it.&lt;br /&gt;&lt;br /&gt;I did a quick search and after digging through a couple of my old posts, I found Martin's post &lt;a href="http://www.woodwardweb.com/teamprise/000285.html"&gt;Teamprise V2 Preview 2&lt;/a&gt; where he discusses better off-line support.  It's here he states "When you next connect, all the read/write files will have a little question mark on them inside Eclipse."&lt;br /&gt;&lt;br /&gt;Now the user is using Teamprise 3.0, but my thought is this "question mark" behavior was not changed until 3.1, which by the way is what I’m using.  He's been having a number of network issues so my guess is that his network connection was dropped thus resulting in Teamprise 3.0 to go into "off-line" mode.  Once he was back online, he would have needed to run "Team &gt; Synchronize" to synch back up with the server.  This is exactly what we did and the question marks were changed back into check-marks indicating check out.&lt;br /&gt;&lt;br /&gt;I couldn't reproduce this as I think Teamprise &lt;a href="http://www.woodwardweb.com/teamprise/000440.html"&gt;changed the behavior in 3.1&lt;/a&gt;.  If I get sometime next week, I'm going to rollback my Teamprise version to 3.0, check out some files, drop my network connection and see if I can reproduce the error.  Or more likely, simply upgrade him to 3.1!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8467785588442893312?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8467785588442893312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8467785588442893312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8467785588442893312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8467785588442893312'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/08/question-marks-on-files-in-teamprise.html' title='Question Marks &quot;?&quot; on files in Teamprise'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6965159212359475495</id><published>2008-07-24T08:01:00.001-07:00</published><updated>2008-07-24T08:02:10.700-07:00</updated><title type='text'>Bug in TFS 2008: "TF50605: There was an error looking up the SID for "</title><content type='html'>Here is a Bug we found in TFS 2008.  At least I think it's a Bug.  It happens when you try to delete (or perform other workspace actions) on a workspace owned by a user who no longer is in Active Directory.&lt;br /&gt;&lt;br /&gt;1)  Create an AD account and use it to log into TFS 2008, create workspaces and check out files.&lt;br /&gt;&lt;br /&gt;2)  Then, leaving some files checked out such, delete the account in AD.  This is what happens when someone leaves your company.&lt;br /&gt;&lt;br /&gt;3)  Go back to TFS and try to delete their workspace.  E.g. tf workspace /delete /server:http://tfs.int.mycompany.com:8080 Z055638-XPA;Z055638   *where Z055638 is the user who left the company.&lt;br /&gt;&lt;br /&gt;4)  You should get the error "TF50605: There was an error looking up the SID for Z055638" which to me means since the account can't be found in AD (the user left the company) you can't delete their workspace and thus can't "undo" any files they have checked out.&lt;br /&gt;&lt;br /&gt;To resolve this, we had to manually update the TfsVersionControl, Tbl_Workspace table.  &lt;a href="https://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3423667&amp;SiteID=1"&gt;Cameron Vetter's post&lt;/a&gt; gave us the idea.  We changed the OwerId field to a valid user for that workspace.  The we were able to delete it.&lt;br /&gt;&lt;br /&gt;Not ideal, but worked for us.  I've submitted this to &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=357609"&gt;Connect&lt;/a&gt; as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6965159212359475495?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6965159212359475495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6965159212359475495' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6965159212359475495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6965159212359475495'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/07/bug-in-tfs-2008-tf50605-there-was-error.html' title='Bug in TFS 2008: &quot;TF50605: There was an error looking up the SID for &lt;deleted user&gt;&quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8985458313219895561</id><published>2008-07-24T08:01:00.000-07:00</published><updated>2008-07-24T08:02:40.761-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><title type='text'>"Waiting for version updates to finish..."</title><content type='html'>Last week we noticed a colleague's Teamprise hanging at the end of a Get Latest Version.  The message was something along the line of "Waiting for version updates to finish...".  Unfortunately on my local machine, everything worked as expected.  Typical I guess.&lt;br /&gt;&lt;br /&gt;Anyway, I was playing around with the VPC image developers (and the person having trouble) use and noticed that *.tfs.mycompany.com* was not listed in the Eclipse proxy exclusion list.  It is my belief, if *.tfs.mycompany.com* is not added, you'll also get the strange "Waiting for version updates to finish..." behavior, and possibly other network related issues.  In addition, Teamprise has a good article titled &lt;a href="http://kb.teamprise.com/article/view/21"&gt;TKB00021 Diagnosing Common Connection Problems&lt;/a&gt; that also provides help with connection issues.&lt;br /&gt;&lt;br /&gt;To properly set your proxy settings in Eclipse, you can go to Window &gt; Preferences &gt; General &gt; Network Connections and add *.tfs.mycompany.com* to your "No Proxy for:" host list.  There is also a short cut in Teamprise if you hit a wall during the initial Import.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8985458313219895561?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8985458313219895561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8985458313219895561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8985458313219895561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8985458313219895561'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/07/last-week-we-noticed-colleagues.html' title='&quot;Waiting for version updates to finish...&quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-712428412151991829</id><published>2008-07-23T06:42:00.000-07:00</published><updated>2008-12-09T04:33:02.983-08:00</updated><title type='text'>Why some files don't get pushed to TFS drop location.</title><content type='html'>Yesterday I got a question about why *.dat files were not being added to the ./Binaries folder during a Team Build, and thus not pushed to the TFS drop location.  The *.dat files are used by a third party software we use to track browser requests.&lt;br /&gt;&lt;br /&gt;After digging around a bit, we found that the *.dat files were added to the .NET 3.5 C# web project with the element &lt;span style="font-weight:bold;"&gt;&amp;lt;None&lt;/span&gt;.  Other files part of this third party were added as &lt;span style="font-weight:bold;"&gt;&amp;lt;Content&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;   ...&lt;br /&gt;   &amp;lt;Content Include="Views\Browse\ItemControl.ascx" /&amp;gt;&lt;br /&gt;   &amp;lt;None Include="bin\bhawk_sp.dat" /&amp;gt;&lt;br /&gt;   ...&lt;br /&gt;&lt;br /&gt;A very intellectual developer in our group (not me) found out that the *.dat files were added with "Build Action" defaulted to None.  To change this, I believe he Right Clicked on the file &amp;gt; Properties &amp;gt; and changed the Build Action to Content.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_kySaPV2TsZk/SIc1-TN5cBI/AAAAAAAAAAc/YeiaMCp2WVc/s1600-h/file_properties.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_kySaPV2TsZk/SIc1-TN5cBI/AAAAAAAAAAc/YeiaMCp2WVc/s320/file_properties.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5226205237013475346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now the *.dat files get copied over to the ./Binaries directory and pushed to the Drop Location.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-712428412151991829?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/712428412151991829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=712428412151991829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/712428412151991829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/712428412151991829'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/07/why-some-files-dont-get-pushed-to-tfs.html' title='Why some files don&apos;t get pushed to TFS drop location.'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_kySaPV2TsZk/SIc1-TN5cBI/AAAAAAAAAAc/YeiaMCp2WVc/s72-c/file_properties.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4351943139345483862</id><published>2008-07-11T09:50:00.000-07:00</published><updated>2008-07-11T09:51:21.949-07:00</updated><title type='text'>Analysis Services hung on Data Tier</title><content type='html'>While looking at our TFS 2008 Data Tier today I noticed that the &lt;span style="font-weight:bold;"&gt;msmdsrv.exe&lt;/span&gt; resource (i.e. Analysis Services) was using 99% of the Data Tier CPU.  I knew that when the OLAP processing happened, the Data Tier process would spike.  But this spike was consistent.  Something was wrong.&lt;br /&gt;&lt;br /&gt;When running the &lt;span style="font-weight:bold;"&gt;GetWarehouseStatus &lt;/span&gt;web service (i.e. http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=GetWarehouseStatus) we got "ProcessingOlap".  Typically this takes a minute or two for us.  Oddlly, we were getting this status for over an hour (though I'm sure it was happening for a while longer than that).&lt;br /&gt;&lt;br /&gt;We figured the process was hung and wanted to restart it.  We have about 150 users on the system so we didn’t want to recycle IIS as it would drop users.  So instead of recycling IIS on the App Tier, we shut down the Analysis Service on the Data Tier.  This brought the Data Tier CPU usage back to normal.&lt;br /&gt;&lt;br /&gt;Then to test things out, we invoked the data warehouse update (using the &lt;span style="font-weight:bold;"&gt;Run &lt;/span&gt;web service).  When the OLAP processing ran, the Data Tier process neared 100% a number of times (as expected).  After about a minute, the process finished and the Data Tier was back in good standing.&lt;br /&gt;&lt;br /&gt;We're not sure what to take away from this, but it's something we'll have to monitor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4351943139345483862?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4351943139345483862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4351943139345483862' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4351943139345483862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4351943139345483862'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/07/analysis-services-hung-on-data-tier.html' title='Analysis Services hung on Data Tier'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-1674079128424524200</id><published>2008-07-01T11:59:00.000-07:00</published><updated>2008-07-01T13:22:13.233-07:00</updated><title type='text'>Odd Security issue on Windows 2008 Server running IIS 7.0</title><content type='html'>To be honest, I can't make sense of this error or it's resolution.  However, I wanted to write it down incase we ever run across it again.&lt;br /&gt;&lt;br /&gt;My project team has the first Windows 2008 servers in the data center.  This means that if something goes wrong, everyone gets to stair back at us saying "&lt;span style="font-style: italic;"&gt;why in the heck did you guys adopt this new OS so fast.&lt;/span&gt;"  And true to form, something did go wrong.  We started getting the error "&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;The server encountered an error processing the request. The exception message is 'Access is denied.'&lt;/span&gt;" when performing some actions (of which I'm not 100% sure as another sub-group wrote the code) in a Web Service running under IIS 7.0.&lt;br /&gt;&lt;br /&gt;We knew this had to be some kind if security issue so we went through the standard steps.  Oddly enough, our Data Center contact (who is a Microsoft Wizard) stumbled on a resolution where he added "Network Service" to the local Administrators group (this was a last resort).  As we kind of expected, this resolved the error.  He then removed "Network Service," as having it in the local Administrator group would be stupid, and rebooted.  We expected the error to come back.  Nope, that seemed to fix "it."  We repeated this on one other machine and magically it fixed it as well.&lt;br /&gt;&lt;br /&gt;We're not sure why this works.  We continue to laugh about it and just hang our heads low.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;The server encountered an error processing the request. The exception message is 'Access&lt;br /&gt;is denied.'. See server logs for more details. The exception stack trace is:&lt;br /&gt;at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object&lt;br /&gt;[] inputs, Object[]&amp;amp; outputs)&lt;br /&gt; at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp;amp; rpc)&lt;br /&gt; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp;amp; rpc)&lt;br /&gt; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&amp;amp; rpc)&lt;br /&gt; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&amp;amp; rpc)&lt;br /&gt; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&amp;amp; rpc)&lt;br /&gt; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&amp;amp; rpc)&lt;br /&gt; at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-1674079128424524200?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/1674079128424524200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=1674079128424524200' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1674079128424524200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1674079128424524200'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/07/odd-security-issue-on-windows-2008.html' title='Odd Security issue on Windows 2008 Server running IIS 7.0'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7695153929246296040</id><published>2008-06-30T08:27:00.000-07:00</published><updated>2008-12-09T04:33:03.290-08:00</updated><title type='text'>Bug in TfsAdminUtil Status</title><content type='html'>While practicing hardware moves for both the App Tier and Data Tier, we're making use of the &lt;a href="http://msdn.microsoft.com/en-us/library/ms253116(VS.80).aspx"&gt;TfsAdminUtil&lt;/a&gt; command.  We've had some issues with this tool.  Mainly around really bad error message reporting.  It seems like you can get the error "ERROR: TF55020: Could not access database." for any number of reasons.  No other help is provided (e.g. "Check to make sure the Team Foundation Server App Pools and Site are up and running").  I'll try to gather some of the possible causes and solutions when I get some more time.&lt;br /&gt;&lt;br /&gt;While trying to track down the root cause of this error, we made use of the "Status" switch.  Below is what came back.  You can see that Status says no Windows services are running as our TFSReports account.  However, in the window you can see that "SQL Server Reporting Services" most certainly is running as TFSReports.  I think this might be a bug in the tool, which given the poor error message handling, would not surprise me.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_kySaPV2TsZk/SGj7bvnuxCI/AAAAAAAAAAU/_SXtMkPiwDw/s1600-h/tfsadminutils_status_error.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_kySaPV2TsZk/SGj7bvnuxCI/AAAAAAAAAAU/_SXtMkPiwDw/s320/tfsadminutils_status_error.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5217696622366868514" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7695153929246296040?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7695153929246296040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7695153929246296040' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7695153929246296040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7695153929246296040'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/06/bug-in-tfsadminutil-status.html' title='Bug in TfsAdminUtil Status'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_kySaPV2TsZk/SGj7bvnuxCI/AAAAAAAAAAU/_SXtMkPiwDw/s72-c/tfsadminutils_status_error.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-9172014075968743554</id><published>2008-06-20T11:20:00.000-07:00</published><updated>2008-06-20T11:21:13.698-07:00</updated><title type='text'>Ant and TFS 2008</title><content type='html'>Yesterday estrada pinged me on how we build Java projects in TFS 2008.  If you remember, I wrote an &lt;a href="http://team-foundation-server.blogspot.com/2007/07/using-team-build-for-java-builds-that.html"&gt;article&lt;/a&gt; a while back (about a year ago) on how we did it with TFS 2005.&lt;br /&gt;&lt;br /&gt;My current group has written a custom MSBuild task to call Ant scripts.  I would prefer to use &lt;a href="http://www.teamprise.com/products/build/"&gt;Teamprise Build Extensions&lt;/a&gt;, but I joined this group late and they had already had much of the infrastructure written.  We do some custom things like write writing Junit tests back to TFS.  I don't believe Teamprise Build Extensions has that functionality though I could be wrong.&lt;br /&gt;&lt;br /&gt;Anyway, my recommendation for calling Ant scripts with TFS 2008 would be to use &lt;a href="http://www.teamprise.com/products/build/"&gt;Teamprise Build Extensions&lt;/a&gt;.  The setup instructions are great and it's a nice, easy, way to get setup and running.&lt;br /&gt;&lt;br /&gt;Let me know how it goes!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-9172014075968743554?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/9172014075968743554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=9172014075968743554' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/9172014075968743554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/9172014075968743554'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/06/ant-and-tfs-2008.html' title='Ant and TFS 2008'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4477326562898142213</id><published>2008-06-11T11:42:00.000-07:00</published><updated>2008-06-11T11:44:32.629-07:00</updated><title type='text'>"Windows SharePoint Services version 2 templates are not supported in this version of the product."</title><content type='html'>Today a trusted colleague of mine tried to create a new Team Project in TFS 2008 using the eScrum process templates.  We've created around 10 of them in the past with the eScrum process template and everything went fine.  Today however, which happened to be a day I'm off sick due to a nasty cold, we get the error "Windows SharePoint Services version 2 templates are not supported in this version of the product."  Now why we're getting this now and not in the past, I'm not sure.  Something must have changed, or the eScrum template got corrupt on the server.  Not sure which is more probable.&lt;br /&gt;&lt;br /&gt;After pounding my head against the wall, I ran into "&lt;a href="http://bloggingabout.net/blogs/mglaser/archive/2006/12/08/Upgrade-TFS-V1-to-WSS-3.0-Guide.aspx."&gt;Mike's Blog&lt;/a&gt;" (a great read if you have some time) where he gives one solution to our error.  Here is my summary.&lt;br /&gt;&lt;br /&gt;1)  Did all the steps under Step 1), except bounced IIS, of Mike's &lt;a href="http://bloggingabout.net/blogs/mglaser/archive/2006/12/08/Upgrade-TFS-V1-to-WSS-3.0-Guide.aspx"&gt;article&lt;/a&gt;.    Here were my commands when deleting and uploading the site template.&lt;br /&gt;&lt;br /&gt;stsadm -o deletetemplate -title eScrum&lt;br /&gt;stsadm -o addtemplate -filename C:\eScrum.stp -title eScrum&lt;br /&gt;&lt;br /&gt;2)  I also downloaded the eScum process template, saved the eScrum.stp to .eScrum\SharepointTemplate overwriting the one loaded, and uploaded the new process template labeled as "eScrum with WSS 3.0".  To be honest, I'm not sure if this is needed but I did it anyways.&lt;br /&gt;&lt;br /&gt;3)  Tried to create Team Project called "Vertical Static Content" with new upload I called "eScrum with WSS 3.0" and it worked!&lt;br /&gt;&lt;br /&gt;NOTES:  During some experimentation, we got this error ""Plugin error text: “TF30272: Template not found on the server”" when trying to create a Team Project after deleting the eScrum template and before adding it back again.  This leads me to believe there is something, other than what's in the Process Template, which needs to be on the server when creating Team Projects.  Why?  I can't understand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4477326562898142213?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4477326562898142213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4477326562898142213' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4477326562898142213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4477326562898142213'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/06/windows-sharepoint-services-version-2.html' title='&quot;Windows SharePoint Services version 2 templates are not supported in this version of the product.&quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7755741579481716145</id><published>2008-06-02T14:44:00.000-07:00</published><updated>2008-06-02T14:46:23.908-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>Changing TFS Build Agent to look at a different TFS Server</title><content type='html'>Just because I continue to forget; if you need to change the TFS Server for your TFS Build Agent, change the &lt;span style="font-weight: bold; color: rgb(51, 51, 255);font-size:85%;" &gt;add key="AllowedTeamServer" value="http://tfs.mycompany.com:8080/"&lt;/span&gt; element in the &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;&lt;span style="font-size:85%;"&gt;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\tfsbuildservice.exe.confi&lt;/span&gt;g&lt;/span&gt; file.  Then bounce the TFS Build Agent via Services.&lt;br /&gt;&lt;br /&gt;We have seen some instances where this change does not take affect right away.  We even bounced the agent more than once with no affect.  Oddly enough, when we got back from lunch everything was working.  My assumption is that the agent uses a cache and that was not getting refreshed.  Either that or heading to lunch fixes most everything ;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7755741579481716145?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7755741579481716145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7755741579481716145' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7755741579481716145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7755741579481716145'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/06/changing-tfs-build-agent-to-look-at.html' title='Changing TFS Build Agent to look at a different TFS Server'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4183368326832400029</id><published>2008-06-02T14:15:00.000-07:00</published><updated>2008-06-02T14:17:42.657-07:00</updated><title type='text'>CSS change for rendering Reporting Services correctly in FireFox</title><content type='html'>Our FireFox users are having an issue with Reports rendering in a small scroll like box.  They can only see the first two inches of a report and must scroll down to see the rest.&lt;br /&gt;&lt;br /&gt;From what I can tell, a number of people are having this issue.  If you search for "Reporting Services in FireFox" the first hit you get is Jon Galloway's &lt;a href="http://weblogs.asp.net/jgalloway/archive/2006/09/01/SQL-Reporting-Services-_2D00_-CSS-fix-for-Firefox.aspx"&gt;post&lt;/a&gt; where he describes making the following CSS change.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;/* CUSTOM CHANGE BY &amp;lt;My Company Name&amp;gt;: Fix report IFRAME height for Firefox */&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;.DocMapAndReportFrame {&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt; min-height: 860px;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I ran a few test reports after making this change and I think it's going to work for us for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4183368326832400029?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4183368326832400029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4183368326832400029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4183368326832400029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4183368326832400029'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/06/css-change-for-rendering-reporting.html' title='CSS change for rendering Reporting Services correctly in FireFox'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2826944322057445253</id><published>2008-05-29T11:56:00.001-07:00</published><updated>2008-12-09T04:33:03.424-08:00</updated><title type='text'>Adding an Organization Hierarchy in Team Build</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_kySaPV2TsZk/SD78jcvSidI/AAAAAAAAAAM/iDKIe81hrgw/s1600-h/team_build.GIF"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_kySaPV2TsZk/SD78jcvSidI/AAAAAAAAAAM/iDKIe81hrgw/s320/team_build.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5205875905227033042" /&gt;&lt;/a&gt;&lt;br /&gt;We really like Team Build.  Especially Team Build 2008 which has the continuous integration ability.  However any good product can always be improved.&lt;br /&gt;&lt;br /&gt;To the left you'll see a screen shoot of one of our Team Projects and the builds under it.  You can't see them all but there are 42 build definitions setup.  Having them all in a flat view can be a bit overwhelming.  Adding the ability to group these build types would be very cool.  For example, the DownloadServlet builds might be under a folder called \Team Builds\DownloadServlet.  Builds that run the Unit tests could be grouped as well.&lt;br /&gt;&lt;br /&gt;The feedback I'm expecting is, why didn't we just break these out into separate Team Projects.  Separate Team Projects would build the organization that I'm suggesting.  While valid, we have hundreds if not thousands of "applications" to support.  Most of them are supported by sub-groups in the company.  For example, the applications behind these build types are all worked on by one group.  We find it easier to group the applications together in one Team Project instead of all having autonomous Team Projects.  We do the same for other groups and it works very well.&lt;br /&gt;&lt;br /&gt;What are your thoughts?  Would adding the ability to "group" build types be advantageous for other teams?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2826944322057445253?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2826944322057445253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2826944322057445253' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2826944322057445253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2826944322057445253'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/05/adding-organization-hierarchy-in-team.html' title='Adding an Organization Hierarchy in Team Build'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_kySaPV2TsZk/SD78jcvSidI/AAAAAAAAAAM/iDKIe81hrgw/s72-c/team_build.GIF' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4507317219231273704</id><published>2008-05-27T08:40:00.000-07:00</published><updated>2008-05-27T08:42:05.598-07:00</updated><title type='text'>Bounce IIS after re-stamping your TFS Databases with InstanceInfo.exe</title><content type='html'>We saw an interesting scenario today after restoring our TFS PROD instance to a TFS QA environment for testing.  Even though we changed the Instance ID for each database (see &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3179917&amp;SiteID=1&amp;mode=1"&gt;here&lt;/a&gt; for instructions), the App Tier was still rendering the old Instance ID for the TfsVersion control database.  This was causing the Source Control view to continue to look at the PROD server even though it said "QA".  All other databases were rendering with the new Instance ID.&lt;br /&gt;&lt;br /&gt;If you're not familiar with the Instance ID, let me take a second to explain it.  The Instance ID is basically a GUID (globally unique identifier) for the TFS databases.  While you may refer to the TFS Server as tfs.mycompany.com, your client software (e.g. Team Explorer) prefers to use the GUID.&lt;br /&gt;&lt;br /&gt;From what Grant Holiday &lt;a href="http://ozgrant.com/2006/10/18/tfs-instanceid-servermapxml-and-havoc/"&gt;says&lt;/a&gt;, basically what happens is your client will send the URL (e.g. tfs.mycompany.com_ to the server's Registration.asmx web service to get the GUID (e.g. 2dbgh947-049b-7z6c-94y2-4b0767ggf790).  Once the client has the GUID it will use that for future communication.&lt;br /&gt;&lt;br /&gt;In our case, we properly changed the GUID using the InstanceInfo.exe utility and directions in this &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3179917&amp;SiteID=1&amp;mode=1"&gt;forum&lt;/a&gt;.  However, the App Tier must have been caching the TfsVersionControl GUID as both PROD and QA were responding with the same GUID name, even though the database GUID was restamped.  Here are the PROD and QA sections of our VersionControl.config file stored under &lt;strong&gt;%USERPROFILE%\Local Settings\Application Data\Microsoft\Team Foundation\2.0\Cache&lt;/strong&gt;.  Interesting enough, the repositoryGuid would stay the same, but the uri would change when we switched TFS Servers.  Bad!!!&lt;br /&gt;&lt;br /&gt;    ServerInfo uri="http://tfsqa.mycompany.com:8080/" repositoryGuid="&lt;strong&gt;2dbgh947-049b-7z6c-94y2-4b0767ggf790&lt;/strong&gt;"&lt;br /&gt;    ServerInfo uri="http://tfsprod.mycompany.com:8080/" repositoryGuid="&lt;strong&gt;2dbgh947-049b-7z6c-94y2-4b0767ggf790&lt;/strong&gt;"&lt;br /&gt;&lt;br /&gt;The fix was to bounce IIS on the QA App Tier.  This reset the App Tier cache and thus resolved our issue.  The lesson learned here is to bounce IIS after you re-stamp your TFS databases with new GUIDs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4507317219231273704?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4507317219231273704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4507317219231273704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4507317219231273704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4507317219231273704'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/05/bounce-iis-after-re-stamping-your-tfs.html' title='Bounce IIS after re-stamping your TFS Databases with InstanceInfo.exe'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-236321089193754471</id><published>2008-05-15T12:50:00.000-07:00</published><updated>2008-05-15T12:51:24.309-07:00</updated><title type='text'>Team Build's 'Get' always writes files with the current date</title><content type='html'>We use Team Build for all of our builds including the packaging of our Static Content application.  When Team Build does a 'Get' of Sources it writes the files with the creation/modify date of the current build time.  For example if I checked in a file (e.g. Mac.jpeg) yesterday (5/14/08), but didn't run a Team Build until today, the file date would be today (5/15/08).  For most things this is not an issue, but for Static Content it is.&lt;br /&gt;&lt;br /&gt;The reason having the current date/time on Static Content is an issue is because of the way the browser caches things.  When a request is made to our site(s), the browser will see that we have images (e.g. Mac.jpeg).  Before grabbing the image from the web server the browser will check its local cache.  If the image in the local cache has the same modify date as the image on the web server, the image is not requested, thus improving performance.  However, if the local cached version of the image file is older than the web server's version, the new image is sent to the requested user.&lt;br /&gt;&lt;br /&gt;The issue is, because Team Build always writes the files with the current date (e.g. 5/15/08), when we deploy them to the Static Content servers they all look like updated image files.  This is bad as it invalidates ever user's cache and thus slows down our application as every image is sent to the user.&lt;br /&gt;&lt;br /&gt;I've read a bunch of things on this and from what I've heard, the TFS Product Team might be looking into a fix for this.  I've dropped our local Microsoft rep a note asking him if he had any details about that.  I've also found this &lt;a href="http://www.cornetdesign.com/2007/12/fixing-timestamps-on-files-from-team.html"&gt;post&lt;/a&gt; from Cory Foy which looks like a custom task we might be able to write in order to get the behavior we need.  If I get any word back from my Microsoft contact, I'll let everyone know.  In the mean time, we are looking into Cory Foy's approach.&lt;br /&gt;&lt;br /&gt;I'm also going to drop a note to the good folks over at Teamprise to get their input.  We're using their Ant interfaces to TFS for some of our non-Microsoft builds and thus could have a similar issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-236321089193754471?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/236321089193754471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=236321089193754471' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/236321089193754471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/236321089193754471'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/05/team-builds-get-always-writes-files.html' title='Team Build&apos;s &apos;Get&apos; always writes files with the current date'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8615619298476660419</id><published>2008-05-08T10:58:00.000-07:00</published><updated>2008-05-08T11:00:35.320-07:00</updated><title type='text'>Bug in the TFS 2008 Uninstall on Standby App Tier</title><content type='html'>A colleague of mine, who has taken over many of my former TFS duties, ran into an interesting problem today. For reasons I won't get into, we were trying to uninstall TFS 2008 from our Standby App Tier.&lt;br /&gt;&lt;br /&gt;The error we ran into was as follows. We found this error in the VSMsiLog which is created for installs and uninstalls.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;color:#ff0000;"&gt;05/08/08 11:35:14 DDSet_Status: --- STATUS: Found Reports.ReportsService=http://tfs.mycompany.com/ReportServer/ReportService.asmx&lt;br /&gt;05/08/08 11:35:14 DDSet_Status: --- STATUS: Writing VSTF_RS_SERVER=tfs.mycompany.com into C:\Documents and Settings\appwesttfnqasetup\Local Settings\Temp\TfsCurrentConfig.ini section Config&lt;br /&gt;05/08/08 11:35:16 DDSet_Error: *** ERROR: Failed to call WMI on the RS server. The most likely cause is that the firewall is blocking WMI calls or that the RS server is not reachable: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)&lt;br /&gt;05/08/08 11:35:16 DDSet_Status: Process exited with exit code: 16&lt;br /&gt;&lt;br /&gt;05/08/08 11:35:16 DDSet_Error: GetCurrentTfsProperties failed with exit code: 16&lt;br /&gt;MSI (s) (B4!A4) [11:35:22:083]: Product: Microsoft Visual Studio 2008 Team Foundation Server - ENU -- There is a problem with this Windows Installer package. Please refer to the setup log for more information.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You'll notice that the uninstall was looking for the value ReportService which is found in the TfsIntegration database's tbl_service_interface table. The value in that table is a FQDN which we use because we have Primary and Standby App Tiers. As defined in the TFS documentation, only one is active at a time.&lt;br /&gt;&lt;br /&gt;The Bug in the uninstall is, if you are setup behind a FQDN the value of ReportService will be the FQDN (e.g. tfs.mycompany.com) instead of the value of the Standby App Tier, which is what you're trying to uninstall.&lt;br /&gt;&lt;br /&gt;A quick Google search led me to this blog &lt;a href="http://www.coderjournal.com/tags/visual-studio/"&gt;post&lt;/a&gt; by Nick Berardi on his &lt;a href="http://www.coderjournal.com/"&gt;Coder Journal&lt;/a&gt;. He ran into a similar issue during an upgrade. He got around the error by changing the ReportService value to match his App Tier.&lt;br /&gt;&lt;br /&gt;While I never recommend messing with the TFS databases, being we're in a QA environment I gave Nick's idea a shot. Sure enough, the uninstall finished successfully. I then changed the value back to our FQDN so the Primary App Tier could be functional.&lt;br /&gt;&lt;br /&gt;I'm not sure why the uninstall would need these values for Reporting Services. From what the uninstall documentation says, you must uninstall Reporting Services (and Share Point) as an independent step? Anyway, again while I never recommend manually changing values in the TFS databases, we ended up needing to as to get around the uninstall issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8615619298476660419?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8615619298476660419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8615619298476660419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8615619298476660419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8615619298476660419'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/05/bug-in-tfs-2008-uninstall-on-standby.html' title='Bug in the TFS 2008 Uninstall on Standby App Tier'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5573395704512317919</id><published>2008-05-01T08:47:00.000-07:00</published><updated>2008-05-01T08:52:56.448-07:00</updated><title type='text'>Deployment to IIS 7.0 using Power Shell</title><content type='html'>Yes, I'm still here. Sorry for not writing anything lately on TFS. I've been in one of those two week Agile (with a capital A) "Iterations" which is when we get all the work done.&lt;br /&gt;&lt;br /&gt;I don't really have anything important to share right now on our TFS adoption. Everything is going pretty good. Knock on wood!&lt;br /&gt;&lt;br /&gt;While not really related to TFS though, I've fallen in love with Power Shell 1.0. Everyday I find another problem to solve with "commandlets" and all the great things a full featured shell offers. Along with the AppCMD command which ships with IIS 7.0, we're using Power Shell scripts to drive our deployment mechanism. Here is a simple example of what our scripts look like. It's actually working very well for us and far less overhead than creating an msi or Install Shield package.&lt;br /&gt;&lt;br /&gt;You'll notice that we take the nuke and pave approach to deployment. That is, we check to see if the application directory is there, and if it is, we purge it. Then we copy over the new application version's code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;&lt;br /&gt;#Always get the script root.  Per Microsoft's recommendation, each script should know their respected script root.&lt;br /&gt;$SCRIPT_ROOT = Split-Path (Resolve-Path $myInvocation.MyCommand.Path)&lt;br /&gt;&lt;br /&gt;#check to see if these values are already set. If not, set them to defalts.&lt;br /&gt;if ($ENV_SITE_NAME -eq $null) {sv ENV_SITE_NAME -value Website}&lt;br /&gt;if ($ENV_APPPOOL_NAME -eq $null) {sv ENV_APPPOOL_NAME -value WebsiteAppPool}&lt;br /&gt;if ($ENV_PORT_NUMBER -eq $null) {sv ENV_PORT_NUMBER -Value "8080"}&lt;br /&gt;&lt;br /&gt;sv APPCMD -value $env:systemroot\system32\inetsrv\AppCmd.exe&lt;br /&gt;sv SITE_INSTALL_PATH -value "D:\Web Sites\$ENV_SITE_NAME"&lt;br /&gt;sv APP_SERVICES -Value "aspnet_state", "W3SVC"&lt;br /&gt;# ***************************************************&lt;br /&gt;# Step 1)&lt;br /&gt;# Clean up old install.&lt;br /&gt;Invoke-Expression "$APPCMD delete site $ENV_SITE_NAME"&lt;br /&gt;Invoke-Expression "$APPCMD delete apppool $ENV_APPPOOL_NAME"&lt;br /&gt;if (Test-Path $SITE_INSTALL_PATH) {rmdir -Recurse -Force $SITE_INSTALL_PATH}&lt;br /&gt;# ***************************************************# Step 2)&lt;br /&gt;# Make dirs&lt;br /&gt;New-Item $SITE_INSTALL_PATH -type directory&lt;br /&gt;# ***************************************************&lt;br /&gt;# Step 3)&lt;br /&gt;# Create the AppPool for this site&lt;br /&gt;Invoke-Expression "$APPCMD add apppool /name:$ENV_APPPOOL_NAME"&lt;br /&gt;Invoke-Expression "$APPCMD set apppool /apppool.name:$ENV_APPPOOL_NAME /processModel.identityType:NetworkService"&lt;br /&gt;# ***************************************************&lt;br /&gt;# Step 4)&lt;br /&gt;# This will add the site on port 81. This does not create an App or Virtual Director by default. *****&lt;br /&gt;Invoke-Expression "$APPCMD add site /name:$ENV_SITE_NAME /bindings:`"http/*:${ENV_PORT_NUMBER}:`""&lt;br /&gt;# ***************************************************&lt;br /&gt;# Step 5)&lt;br /&gt;# Craete App with the physical path and set the Apppool we need ******&lt;br /&gt;Invoke-Expression "$APPCMD add app /site.name:$ENV_SITE_NAME /path:/ /physicalPath:`"$SITE_INSTALL_PATH`" /applicationPool:$ENV_APPPOOL_NAME"&lt;br /&gt;# ***************************************************&lt;br /&gt;# Step 6)&lt;br /&gt;# Copy over files recursively (/E and /I), overwrite read only files (/R), surpress comfirmation (/Y), quietly *****&lt;br /&gt;echo "Copy Files to WebSite"&lt;br /&gt;xcopy $SCRIPT_ROOT\Website $SITE_INSTALL_PATH /E /I /R /Y /Q&lt;br /&gt;# ***************************************************&lt;br /&gt;# Step 7)&lt;br /&gt;# Make sure any needed services are started before finishing and spits out their status.&lt;br /&gt;Invoke-Expression "$APPCMD start apppool /apppool.name:$ENV_APPPOOL_NAME"&lt;br /&gt;Invoke-Expression "$APPCMD start site /site.name:$ENV_SITE_NAME"&lt;br /&gt;$APP_SERVICES Start-Service&lt;br /&gt;$APP_SERVICES Get-Service&lt;br /&gt;# ***************************************************&lt;br /&gt;# Step 8)&lt;br /&gt;# Make sure we didn't get any errors at deployment.&lt;br /&gt;if ($error.count -lt 1)&lt;br /&gt;{&lt;br /&gt;Write-Output "" "Deployment Successful!" ""&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;Write-Output "" "Deployment Failed!" ""&lt;br /&gt;$error&lt;br /&gt;Write-Output ""&lt;br /&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5573395704512317919?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5573395704512317919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5573395704512317919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5573395704512317919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5573395704512317919'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/05/deployment-to-iis-70-using-power-shell.html' title='Deployment to IIS 7.0 using Power Shell'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8698826240463136516</id><published>2008-04-15T13:21:00.000-07:00</published><updated>2008-04-21T11:21:03.758-07:00</updated><title type='text'>Follow-up on our Restore Attempt(s)</title><content type='html'>Two weeks ago today I left the building frustrated with Microsoft because of poor documentation.  You can see my rant &lt;a href="http://team-foundation-server.blogspot.com/2008/04/frustrated-with-how-to-move-your-team.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm still a bit miffed that the "How to restore..." document was (and still is as of this writing) wrong, but I'm feeling better that they have graciously apologized to me.  And the fact that with the help of Support, we're up and running in the restored test environment.  Being I'll most likely forget, here are the steps we had to do to get this test restore environment up and running.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;First &lt;/strong&gt;support walked through the steps 1 - 14 of "Restore and Test SQL Report Server, Reporting Services, and Default Reports" BEFORE we did "Rename the Team Foundation Data-Tier Server and Activate the Team Foundation Application-Tier Server" AND "Move User and Service Accounts" section.  Why?  I'm not sure if I understood the reasoning.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Second&lt;/strong&gt;, support did the following steps on the App Tier and Data Tier once I handed over support with Easy Assist.&lt;br /&gt;&lt;br /&gt;1) App Tier: Before they ran RenameDT, they changed the ReportSever AppPool identity from NetworkService to the TFSReports account.&lt;br /&gt;2) App Tier: They ran RSKeyMgmt.exe –d which deleted all encrypted data on the server&lt;br /&gt;3) App Tier:  They ran RSKeyMgmt.exe –r on the GUID from the initial install of TFS on this new hardware.  Somehow this GUID gets re-added?&lt;br /&gt;4) Data Tier:  Opened up the tbl_database table in the TfsIntegration database and changed all the ‘servername’ values to the new Data Tier.&lt;br /&gt;5) Data Tier:  Opened the tbl_service_interface in the TfsIntegration database and changed ReportsService and BaseReportsURL to have the new App Tier name.&lt;br /&gt;6) In Reporting Services Configuration, they made sure that the TFSReports account was used instead of a built in account.&lt;br /&gt;&lt;br /&gt;After they did all this, the RenameDT worked.  Like my first point, I'm not sure I understood why they did all this and if it was all really needed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Third&lt;/strong&gt;, after "Rename the Team Foundation Data-Tier Server and Activate the Team Foundation Application-Tier Server" we did the "Move User and Service Accounts" section.  All this worked just fine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fourth&lt;/strong&gt;, this wasn't really related to the restore per say, but we did have to give the AppTier\Users group Read, List, Read &amp; Execute on the c:\Program Files directory.  Without this, the only users that could log in where those who were members of the AppTier\Administrators group.  I'm not sure if this is correct, or why the TFS install didn't set it up for us?  When I compared this test restore hardware with our current PROD hardware, the current PROD hardware was configured with AppTier\Users have that access to c:\Program Files so we just mimicked the behavior and it all worked.  &lt;em&gt;UPDATE:  We also had to give AppTier\Users Full Control access to %Program Files%\Microsoft Visual Studio 2008 Team System Web Access\Cache.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fifth&lt;/strong&gt;, we finished steps 15 - 29 of "Restore and Test SQL Report Server, Reporting Services, and Default Reports".  This all worked fine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sixth&lt;/strong&gt;, and lastly, we changed the Instance ID so that we didn't have the same Instance ID for both our current PROD hardware and our test restore hardware.  See this full &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3179917&amp;SiteID=1&amp;mode=1"&gt;forum &lt;/a&gt;for how to do this.&lt;br /&gt;&lt;br /&gt;After all this, we currently have a test copy of our current PROD system restored so we can play around with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8698826240463136516?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8698826240463136516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8698826240463136516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8698826240463136516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8698826240463136516'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/04/follow-up-on-our-restore-attempts.html' title='Follow-up on our Restore Attempt(s)'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-3728641808297023249</id><published>2008-04-09T09:20:00.001-07:00</published><updated>2008-04-09T09:23:58.368-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><title type='text'>What is needed to write complex Reports</title><content type='html'>There have been a number of people asking me what they need to install in order to get up and running with report writing using the "Business Intelligence Development Studio".  Here is what I send them.&lt;br /&gt;&lt;br /&gt;1)  Install Visual Studio 2005.  This step is optional.&lt;br /&gt;&lt;br /&gt;2)  Install &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3C856B93-369F-4C6F-9357-C35384179543&amp;displaylang=en"&gt;"Microsoft SQL Server 2005 Express Edition Toolkit"&lt;/a&gt; which gives you the "Business Intelligence Development Studio (BIDS)"&lt;br /&gt;&lt;br /&gt;3)  Read Buck's &lt;a href="http://blogs.msdn.com/buckh/archive/2007/08/11/download-creating-and-customizing-tfs-reports.aspx"&gt;blog&lt;/a&gt; and download the attached documentation to get your data sources setup and an initial report written.&lt;br /&gt;&lt;br /&gt;4)  Obtain a PHD in Computer Science if you have to write any MDX queries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-3728641808297023249?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/3728641808297023249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=3728641808297023249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3728641808297023249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3728641808297023249'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/04/what-is-needed-to-write-complex-reports.html' title='What is needed to write complex Reports'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-3296274729083418049</id><published>2008-04-08T13:18:00.000-07:00</published><updated>2008-04-08T13:21:33.535-07:00</updated><title type='text'>IE 6.0 crashes with Share Point 3.0</title><content type='html'>Some of our users have had IE 6.0 crash on them (intermittently) while opening up documents from Share Point 3.0.  While the error messages don't exactly match, they are similar to what's described in Steve's &lt;a href="http://stevepietrek.com/2007/10/24/internet-explorer-60-crash/"&gt;post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I followed up with the users and it seems that Steve's fix, fixes their issues with IE crashing.&lt;br /&gt;&lt;br /&gt;Thanks Steve for posting your find!!!!  I'm hoping it will get me a free beer at the bar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-3296274729083418049?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/3296274729083418049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=3296274729083418049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3296274729083418049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3296274729083418049'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/04/ie-60-crashes-with-share-point-30.html' title='IE 6.0 crashes with Share Point 3.0'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5708125896723025588</id><published>2008-04-03T06:40:00.000-07:00</published><updated>2008-04-03T06:41:41.435-07:00</updated><title type='text'>Cannot create a connection to data source 'TfsOlapReportDS'. (rsErrorOpeningConnection)</title><content type='html'>If you ever see an error like below when trying to render a Report in TFS, make sure MS SQL Analysis Services is started under Control Panel &gt; Services. Since we're running a duel server install, our MS SQL Analysis Service is running (or not running when we get this error) on the Data Tier.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;An error has occurred during report processing. (rsProcessingAborted)&lt;br /&gt;Cannot create a connection to data source 'TfsOlapReportDS'. (rsErrorOpeningConnection)&lt;br /&gt;For more information about this error navigate to the report server on the local server machine, or enable remote errors&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5708125896723025588?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5708125896723025588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5708125896723025588' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5708125896723025588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5708125896723025588'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/04/cannot-create-connection-to-data-source.html' title='Cannot create a connection to data source &apos;TfsOlapReportDS&apos;. (rsErrorOpeningConnection)'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-3106152814324542552</id><published>2008-04-01T13:12:00.000-07:00</published><updated>2008-04-01T13:18:19.405-07:00</updated><title type='text'>Frustrated with "How to: Move Your Team Foundation Server from One Hardware Configuration to Another"</title><content type='html'>Nothing frustrates me more than when documentation is wrong or misleading.  Case in point:  The document &lt;a href="http://msdn2.microsoft.com/en-us/library/ms404869.aspx"&gt;"How to: Move Your Team Foundation Server from One Hardware Configuration to Another"&lt;/a&gt; explaining how to move TFS from hardware to hardware is probably one of the worst written documents I've ever read.  Here are just a few of my observations.&lt;br /&gt;&lt;br /&gt;- We've bombed out at &lt;strong&gt;"To rename the Team Foundation data-tier server"&lt;/strong&gt;.  The first issue was that a small, yet critical, detail is left out of the document.  It's missing the statement explaining before running TfsAdminUtil RenameDT &lt;new-dt&gt; you must modify the Service's web.config, making sure the connection string on the new server is referencing the old server.  The Community Content says this at the bottom and also the &lt;strong&gt;"Microsoft Visual Studio 2005/.NET Framework 2.0"&lt;/strong&gt; says it.  So why doesn't the master document for TFS 2008 say this?  If you fail to do the rename, the command comes back and says "data tier name not changed."&lt;br /&gt;&lt;br /&gt;- Even after getting past this, we are still stuck though.  According the support, we actually should do the &lt;strong&gt;"Rename the Team Foundation Data-Tier Server and Activate the Team Foundation Application-Tier Server" &lt;/strong&gt;and &lt;strong&gt;"Move User and Service Accounts"&lt;/strong&gt; AFTER we do other things like &lt;strong&gt;"Restore and Test SQL Report Server, Reporting Services, and Default Reports"&lt;/strong&gt; which is two sections BELOW &lt;strong&gt;"Move User and..."&lt;/strong&gt;.  What?  If this is true, which we're verifying with our field rep, why does the document have them out of order?  How can someone expect to know this?&lt;br /&gt;&lt;br /&gt;- Lastly, the support rep (who was actually very helpful by the way), said that you basically have to disconnect the old TFS server when you do the migration.  Meaning, you basically can't do a test restore on some QA hardware before you have to come in on a weekend to do the same steps on a live PROD system.  We're checking with our field rep to make sure this is accurate, but if it is, which I'm praying it's not, where in this document does it state that you must disconnect the old system before doing the restore based move?&lt;br /&gt;&lt;br /&gt;Sorry for my rant.  I just get so frustrated when documentation is wrong or misleading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-3106152814324542552?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/3106152814324542552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=3106152814324542552' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3106152814324542552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3106152814324542552'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/04/frustrated-with-how-to-move-your-team.html' title='Frustrated with &quot;How to: Move Your Team Foundation Server from One Hardware Configuration to Another&quot;'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-1238542067415420258</id><published>2008-03-27T12:50:00.000-07:00</published><updated>2008-03-27T12:55:39.854-07:00</updated><title type='text'>Running Tests and getting Code Coverage for our .NET projects.</title><content type='html'>As I wrote about a last &lt;a href="http://team-foundation-server.blogspot.com/2008/03/publishing-test-results-using-testers.html"&gt;week&lt;/a&gt;, the entire testing portion of Visual Studio is a mystery to me. I've never been a tester (for good reason) so I've really never spent the time to dig into Microsoft's offering. That was until I was forced to figure some stuff out, due to my new team wanting it.&lt;br /&gt;&lt;br /&gt;From what I've found, TFS 2008 makes executing user's tests at build time very easy. All we had to do is add the following line to our Team Build project file and the magic happened. We had test results!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;&amp;ltTestContainer include="$(OutDir)\Unit Tests.dll"&amp;gt &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The code coverage was missing though so we had to track that down. Thanks to &lt;a href="http://blog.benday.com/archive/2007/02/09/22380.aspx"&gt;Benday&lt;/a&gt;, all we had to do is update our Team Project file again and magically, we had coverage results.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;&amp;ltRunConfigFile&amp;gt$(SolutionRoot)\LocalTestRun.testrunconfig&amp;lt/RunConfigFile&amp;gt &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course this assumed our testrunconfig was setup for Code Coverage, which in our case it was.&lt;br /&gt;&lt;br /&gt;So far, even a testing novice has found it pretty easy to get tests to run at build time. Feel free to share you experiences, both good and bad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-1238542067415420258?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/1238542067415420258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=1238542067415420258' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1238542067415420258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1238542067415420258'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/03/running-tests-and-getting-code-coverage.html' title='Running Tests and getting Code Coverage for our .NET projects.'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2318758967500148784</id><published>2008-03-21T14:40:00.001-07:00</published><updated>2008-03-21T14:40:58.695-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test Edition'/><title type='text'>Publishing Test Results using the Testers Edition of Visual Studio</title><content type='html'>I fully admit, I don't know anything about the Testers Edition of Visual Studio.  However, since I know a bit about TFS, I've been asked a number of questions about how the two talk to each other.  Thus it's been a learning experience for me!&lt;br /&gt;&lt;br /&gt;Here is the way I understand the Test Results publishing process to TFS for the Tester Edition of VS.  Again, this is all really new to me so if I have something wrong, please correct me.&lt;br /&gt;&lt;br /&gt;Per the document &lt;a href="http://msdn2.microsoft.com/en-us/library/ms243164.aspx"&gt;here&lt;/a&gt;, I see that a Tester will run a test on their local machine or using the "rig" to run on remote machines.  After the tests are run, test results are stored in *.trx file on the tester's machine.  Testers then can open that file and "Publish" them to TFS's operational store (which must be the TfsBuilds database maybe?).  That data then gets moved to the TfsWarehouse per the warehouse schedule.  At this point, you can Report on it in the warehouse.&lt;br /&gt;&lt;br /&gt;Now there seems to be one small deviation in that Load Tests need to be loaded to a local SQL database which is defined outside of TFS.  That is, the Load Tests database stores Load Test data before it's published to TFS.  There must be someway then that the Tester Edition of VS can look in that local database where the Load Test results are stored, and publish the results to TFS.  I think this is an important detail as there may be some ambiguity on the difference between the Load Test database and the standard databases that make up TFS (e.g. TfsBuilds, TfsWarehouse, etc).&lt;br /&gt;&lt;br /&gt;If I have anything wrong here, I'd love for you to share your insight as we're trying to put the big picture all together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2318758967500148784?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2318758967500148784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2318758967500148784' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2318758967500148784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2318758967500148784'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/03/publishing-test-results-using-testers.html' title='Publishing Test Results using the Testers Edition of Visual Studio'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-3019523375506051116</id><published>2008-03-19T09:41:00.000-07:00</published><updated>2008-03-19T09:42:24.359-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><title type='text'>Teamprise 3.0 is released!</title><content type='html'>If you didn't see, &lt;a href="http://teamprise.com"&gt;Teamprise&lt;/a&gt; 3.0 has just been released.  As I've written a number of times, &lt;a href="http://teamprise.com"&gt;Teamprise &lt;/a&gt;is a great offering if you're looking for a cross platform solution for Team Foundation Server.  NO I do not work for Teamprise or sell their product for a living.  I'm simply a customer at a large software firm who uses Teamprise for our Java development groups.&lt;br /&gt;&lt;br /&gt;We use every piece of their suite including the Ant scripts and Teamprise Build Extensions which allows you to call your Ant scripts from Team Build.&lt;br /&gt;&lt;br /&gt;Teamprise has a great product, but even a better support group.  If you have not checked them out, do it soon.  You'll find it being one of the best products around.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-3019523375506051116?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/3019523375506051116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=3019523375506051116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3019523375506051116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3019523375506051116'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/03/teamprise-30-is-released.html' title='Teamprise 3.0 is released!'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7930528856810444005</id><published>2008-03-17T11:02:00.000-07:00</published><updated>2008-03-17T11:05:34.372-07:00</updated><title type='text'>The "Copy" task could not be initialized with its input parameters</title><content type='html'>As I &lt;a href="http://team-foundation-server.blogspot.com/2008/03/check-out-sdctasks.html"&gt;wrote&lt;/a&gt; about last week, we've started to use a few Tasks from Sdc. Per the instructions we started by importing the entire list of Tasks. Something like this.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Import Project="$(TasksPath)\Microsoft.Sdc.Common.tasks" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Doing this led to an error in our Team Build though.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;...&lt;br /&gt;(EndToEndIteration target) (1)&lt;br /&gt;(CoreDropBuild target)&lt;br /&gt;C:\Program Files\MSBuild\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets(1310,11): error MSB4064: The "SourceFiles" parameter is not supported by the "Copy" task. Verify the parameter exists on the task, and it is a settable public instance property.&lt;br /&gt;C:\Program Files\MSBuild\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets(1309,5): error MSB4063: The "Copy" task could not be initialized with its input parameters.&lt;br /&gt;...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I took a look in the Team Build targets file and sure enough, the Team Build targets file uses Copy, but needs the MSBuild one not the Sdc one. I'm guessing this is an conflict error in Sdc.&lt;br /&gt;&lt;br /&gt;Using guidance from the &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2832457&amp;amp;SiteID=1"&gt;forums&lt;/a&gt;, we had to change our global import to just import the TaskNames we needed. This helped us get around the issue with the Copy conflict.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;UsingTask TaskName="Microsoft.Sdc.Tasks.Tools.PsExec" AssemblyFile="$(TasksPath)\Microsoft.Sdc.Tasks.dll"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7930528856810444005?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7930528856810444005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7930528856810444005' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7930528856810444005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7930528856810444005'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/03/copy-task-could-not-be-initialized-with.html' title='The &quot;Copy&quot; task could not be initialized with its input parameters'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4505648422951493974</id><published>2008-03-14T14:24:00.001-07:00</published><updated>2008-03-14T14:26:52.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>Check out SdcTasks</title><content type='html'>We've taken a mass adoption of the &lt;a href="http://www.codeplex.com/sdctasks/"&gt;SdcTasks&lt;/a&gt; found on Codeplex.  When comparing MSBuild to Ant, I've always been disappointed with the Core tasks in MSBuild.  The default list seems to be limited.  NOTE:  I have not done a task for task comparison, but only a cursory compare.&lt;br /&gt;&lt;br /&gt;The limited task set in MSBuild is what has really excited me about SdcTasks.  There is a ton of stuff in this add in.  Want to talk to Active Directory, Email, or talk to SQL?  Take a look at SdcTasks for help.&lt;br /&gt;&lt;br /&gt;Since I'm lazy, I'd like to see these rolled into the standard install for Team Build or MSBuild.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4505648422951493974?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4505648422951493974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4505648422951493974' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4505648422951493974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4505648422951493974'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/03/check-out-sdctasks.html' title='Check out SdcTasks'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4531094065210563329</id><published>2008-03-07T14:08:00.000-08:00</published><updated>2008-03-07T14:09:37.965-08:00</updated><title type='text'>Other tools we use in conjunction with TFS</title><content type='html'>While TFS can do a lot of things, I thought I'd share a list of tools we're using (or just looking at) in conjunction with TFS for our full "Build and Deploy" solution.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx"&gt;PSTools&lt;/a&gt; - We use this fine set of tools for executing deployment scripts on remote machines.  Once Power Shell allows this ability (I think it's coming in 2.0) we might look at using Power Shell for our remote communication.  In the mean time PSTools will work though we are getting some output from Psexec which is hanging MSBuild's Exec task.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx"&gt;Power Shell 1.0&lt;/a&gt; - While I'm not a shell expert, from what I've found Power Shell seems to be a great upgrade from CMD.  We've changed all our deployment scripts to use Power Shell for the basis.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://learn.iis.net/page.aspx/114/getting-started-with-appcmdexe/"&gt;AppCMD &lt;/a&gt;- We use AppCMD (pronounced App Command by the Microsoft person I talked to last week) is a command line interface for IIS 7.0.  Instead of using our home grown tool for writing to the IIS meta-base (which we did with IIS 5/6) we're using AppCMD.  Now since IIS 7.0 does not have the concept of a meta-base, we could just xcopy the applicationHost.config file over and call it a day.  However, we're currently hosting multiple applications on the box and don’t want one deployment to bring down all apps.  By using AppCMD to purge/pave our IIS 7.0 configuration, we scope the downtime to the application we're trying to deploy.&lt;br /&gt;&lt;br /&gt;- IIS 7.0 and Tomcat - Our ASP.NET apps are running under IIS 7.0 (as you would guess) and our Java applications are running under Tomcat.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.altiris.com/"&gt;Altiris Deployment Sever and Altiris Software Delivery System&lt;/a&gt; - So our deployment runs fine one a machine or two, but we need something that will execute the deployment on 1000+ machines all at the same time.  Altiris has a couple of different products we're looking at to do this.  Basically, this would remove our need for the Psexec tool from PSTools and our FTP Tasks in Ant we use to deploy a WAR file to Tomcat.&lt;br /&gt;&lt;br /&gt;I know, I know this has very little to do with TFS, but we do hook the tools into TFS (and vice-versa) so I thought I'd share it with you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4531094065210563329?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4531094065210563329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4531094065210563329' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4531094065210563329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4531094065210563329'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/03/other-tools-we-use-in-conjunction-with.html' title='Other tools we use in conjunction with TFS'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-1974673835281551513</id><published>2008-02-29T13:43:00.000-08:00</published><updated>2008-02-29T13:44:00.814-08:00</updated><title type='text'>I'm basically an End User</title><content type='html'>Sorry for my lack of blogging lately.  Basically, I've turned into an end user of TFS.  How far the mighty falls.  At one time I was the first person to bring TFS into a company of 35,000 people and administer the only TFS instance.  My calendar was filled with demonstrations to both Directors and Vice Presidents.  Now we have five or six implementations and I'm back to being a simple grunt.  Which to be honest is probably where I belong.&lt;br /&gt;&lt;br /&gt;While I don't do much TFS administration anymore (at least right now), I do offer my expertise.  Like just yesterday a "Scrum Leader" asked the person administering TFS how hard it would be to not default the Current User to the Assigned To for our Bug Work Item.  I gave a nod of encouragement indicating it would be a simple change.&lt;br /&gt;&lt;br /&gt;We have ordered new hardware for my current group's instance though and I'm sure I'll get involved as we lay out the topology and do the migration.  In the mean time, I'll just set back and enjoy TFS as an end user while I work on our deployment strategy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-1974673835281551513?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/1974673835281551513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=1974673835281551513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1974673835281551513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1974673835281551513'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/im-basically-end-user.html' title='I&apos;m basically an End User'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5080953941917969966</id><published>2008-02-25T09:15:00.000-08:00</published><updated>2008-02-25T09:17:26.681-08:00</updated><title type='text'>TFS Statistics Query</title><content type='html'>A while back Brian &lt;a href="http://blogs.msdn.com/bharry/archive/2006/06/12/628583.aspx"&gt;posted&lt;/a&gt; on the SQL commands he uses to pull the Dogfood statistics.  I seem to always lose this posting so I thought to write it down so I can quickly look it up on my blog.&lt;br /&gt;&lt;br /&gt;I used most of them this morning on our TFS 2008 server and all the ones I took worked just fine.  My "Scrum Master" (and yes I do bow before him), wants our numbers pulled every iteration which for us is two weeks.&lt;br /&gt;&lt;br /&gt;Compared to my old group, we've got some pretty small numbers.  For example, my old group had close to 10,000 changesets while this group only has just short of 800.  But even though the numbers are small, I enjoy looking at them. &lt;br /&gt;&lt;br /&gt;Anyway, if you need the queries to pull your own numbers, which I think you should, see Brian's &lt;a href="http://blogs.msdn.com/bharry/archive/2006/06/12/628583.aspx"&gt;post&lt;/a&gt;.  Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5080953941917969966?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5080953941917969966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5080953941917969966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5080953941917969966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5080953941917969966'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/tfs-statistics-query.html' title='TFS Statistics Query'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8688464697478584754</id><published>2008-02-21T14:26:00.000-08:00</published><updated>2008-02-21T14:29:13.928-08:00</updated><title type='text'>Web Service Versioning</title><content type='html'>On my new project team here is a lot of discussion around supporting multiple versions of our applications (which are most likely going to be a collection of web services). This affects me as I'm responsible for deployment of these applications.  This got me thinking, how does TFS do versioning for their web services?  TFS 2008 supports Team Explorer 2005 and 2008 so they had to have the same discussion we're having now.&lt;br /&gt;&lt;br /&gt;As it turns out, it looks like they support multiple versions within the TFS 2008 code base by simply organizing the versions in a folder hierarchy.  It looks very well organized and something that would be easy to deploy!  Let me explain what I see.&lt;br /&gt;&lt;br /&gt;Underneath &lt;em&gt;%Program Files%\Microsoft Visual Studio 2008 Team Foundation Server\Web Services\Build &lt;/em&gt;I find both &lt;strong&gt;v1.0&lt;/strong&gt; and &lt;strong&gt;v2.0&lt;/strong&gt; folders.  My assumption is that the TFS development team decided to put all new 2008 functionality in the v2.0 folder for each web service.  In this example I just show "Build" but you can see similar things in "Services" as well.  I'm guessing when the next release comes out, we'll see v3.0.&lt;br /&gt;&lt;br /&gt;I'm the type of person who has really never created anything original.  Well that's not 100% true as the book I'm writing is not simply copied from other fiction thriller writers.  However, the fundamentals are based on the same story structure and writing format that most all novel writers use.  I just simply follow the rules.  Back to TFS though.  I brought up the web services versioning I saw TFS use to our architects and from what it sounds like, they are going in a slightly different direction.&lt;br /&gt;&lt;br /&gt;What we "plan" (plan is used loosely as they are constantly changing things) on doing is hosting each "version" under a separate IIS 7.0 site.  Something like this I guess.&lt;br /&gt;&lt;br /&gt;IIS&lt;br /&gt;/AppPool1.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/WebServiceSite1.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/mycode&lt;br /&gt;/AppPool2.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/WebServiceSite2.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/mycode&lt;br /&gt;&lt;br /&gt;My understanding is, this will put each "version" in a separate worker process.  The approach TFS took would not.&lt;br /&gt;&lt;br /&gt;Personally I think the way TFS does web service versioning is better.  That is, simply versioning the web services within a single deployment (i.e. site under IIS).  But given we're selling/supporting different types of software (ours is hosted internally and we have full control over deploying it) I can see an argument for supporting multiple version as separate deployments under IIS.&lt;br /&gt;&lt;br /&gt;Now this all comes with my standard caveat that I often misunderstand very technical details.  I'm sure there is a number of white papers and studies done on web service versioning that trump any opinion I have.  This is simply an observation of how I see TFS is doing some kind of versioning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8688464697478584754?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8688464697478584754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8688464697478584754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8688464697478584754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8688464697478584754'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/web-service-versioning.html' title='Web Service Versioning'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7285005436897475152</id><published>2008-02-20T11:37:00.000-08:00</published><updated>2008-02-20T11:39:50.156-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><title type='text'>Sorting data in Reporting Services</title><content type='html'>Most things come hard for me.  Whether it's been work, school or play, nothing has come easy.&lt;br /&gt;&lt;br /&gt;So it should be of no surprise, I had a hell of a time trying to figure out how to sort our custom TFS build report.  It honestly took me about four hours to figure out all you needed to do is set a Sorting Expression on the report's table when in layout mode.  &lt;a href="http://technet.microsoft.com/en-us/library/ms170712.aspx"&gt;Here&lt;/a&gt; is a good article that explains it in detail.&lt;br /&gt;&lt;br /&gt;I was trying to modify the MDX query, which is nearly impossible, by using an ORDER function.  That was getting me no where as I could not get the syntax figured out.  So after lunch I decided to do a bit of research and fell into the TechNet article.  And about five seconds later, I found my answer.&lt;br /&gt;&lt;br /&gt;If you need to do some sorting, check &lt;a href="http://technet.microsoft.com/en-us/library/ms170712.aspx"&gt;this&lt;/a&gt; article out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7285005436897475152?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7285005436897475152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7285005436897475152' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7285005436897475152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7285005436897475152'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/sorting-data-in-reporting-services.html' title='Sorting data in Reporting Services'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6226887514728306766</id><published>2008-02-13T14:12:00.000-08:00</published><updated>2008-02-13T14:16:52.550-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Build'/><title type='text'>Team Build hangs when using Pstools and the Exec task</title><content type='html'>In my new position they have given me deployment.  Basically after the build and unit tests are run, they want the code deployed to the servers.  We're running under IIS 7 so I've decided to write the deployment logic using &lt;a href="http://support.microsoft.com/kb/930909"&gt;AppCmd&lt;/a&gt; from the IIS 7 team.  It looks like a very nice tool!&lt;br /&gt;&lt;br /&gt;To execute the series of AppCmd commands (actually we've grouped them into a batch file that we call) we're using yet another Microsoft technology called &lt;a href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/PsTools.mspx"&gt;Pstools&lt;/a&gt;.  In this suite of tools there is psexec which allows you to execute remote commands.  After we got past some odd domain --&gt; workgroup permission errors, it works pretty well.  The command we use is something like this "&lt;em&gt;c:\tools\pstools\psexec /accepteula \\server cmd.exe /c c:\deploy\install.bat 0.0.25&lt;/em&gt;"&lt;br /&gt;&lt;br /&gt;Back in our TFSBuild.proj file we're using the Exec task to execute this.  Unfortunately the Exec task hangs.  "Gonzobent" has submitted a wonderful write-up on this to &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=327099"&gt;Connect&lt;/a&gt;.  I added my two cents in as well.&lt;br /&gt;&lt;br /&gt;To get around this (as we need to so our deployment efforts can continue) we put the "non-interactive" switch (i.e. -d) on the psexec command.  So now the command looks like this "&lt;em&gt;c:\tools\pstools\psexec &lt;strong&gt;-d&lt;/strong&gt; /accepteula \\server cmd.exe /c c:\deploy\install.bat 0.0.25&lt;/em&gt;".  This is not ideal as we don't get any output back in the Team Build log file to see if the deployment works or not.  We just assume it does - since I wrote it ;)&lt;br /&gt;&lt;br /&gt;As I put in my comments on Connect, I think psexec is sending back MSBuild information it's not expecting.  We ran into this a few years ago when we wrote a homegrown build system which had a Java application as it's Built Client.  When a user ran a Ant script that failed, the system would just hang.  There is a good article &lt;a href="http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html"&gt;here&lt;/a&gt; that examples how we fixed it.  We basically thread reading the output and error.&lt;br /&gt;&lt;br /&gt;If anyone has any other work around ideas, please let us know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6226887514728306766?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6226887514728306766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6226887514728306766' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6226887514728306766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6226887514728306766'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/team-build-hangs-when-using-pstools-and.html' title='Team Build hangs when using Pstools and the Exec task'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7569196160350540968</id><published>2008-02-11T19:03:00.001-08:00</published><updated>2008-02-11T19:16:48.312-08:00</updated><title type='text'>Be careful with consultants</title><content type='html'>This goes for all software, but being I've been working with TFS for the past year, I thought it would be good to mention it on this blog.&lt;br /&gt;&lt;br /&gt;In my last group, we implemented TFS by ourselves.  That is, we did all the setup, migrations, training and ongoing support.  We decided this was the best approach since the team was very technical and motivated to tackle a new configuration management tool.  And for the most part, we were successful.&lt;br /&gt;&lt;br /&gt;My new group took a different approach (before I got here) and hired out most of the TFS work.  Everything from setup to customization has been done with the consultants taking the initial lead.  We've been bumping heads a bit this past week because I take a slightly different view on how to implement a new product than they do.  I think they have sold my new group on too many customizations.&lt;br /&gt;&lt;br /&gt;I was a consultant for two years back in the early 2000s so I know a bit about the business.  A consultant's number one goal is to stay billable.  Meaning if you, as the customer, keep nodding your head, they will continue to do what you say and keep billing.  If you're a consultant and reading this, don't get all bent out of shape.  You are very necessary and we can't live without you, but there are times when a good consultant needs to help the customer say "no" to themselves.&lt;br /&gt;&lt;br /&gt;We as customers get a bit too excited about all the possibilities TFS has, and forget that at the end of the day, everything costs money  So when you say "hey we'd like to have check in policies for this and that", everything can be done, but it will cost you.  And don't forget about the on-going maintenance costs.&lt;br /&gt;&lt;br /&gt;So here is my suggestion.  Start with the basics.  That is, try to take what TFS has out of the box, then slowly start making the needed modifications with a well balanced team of consultants (if you need them) and full time employees.  You'll be better off in the end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7569196160350540968?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7569196160350540968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7569196160350540968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7569196160350540968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7569196160350540968'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/be-careful-with-consultants.html' title='Be careful with consultants'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7326520607125491218</id><published>2008-02-07T17:05:00.001-08:00</published><updated>2008-02-07T19:02:29.536-08:00</updated><title type='text'>Safari</title><content type='html'>I'll have to make this quick as my son is starting to toss up his sweet potatoes.  We've had a number of "business" folks who want to use Safari for TSWA.  They have had some connection issues that look similar to what happens when you don't have your proxy settings configured correctly in Firefox.  That is, you continually get the authentication prompt while a portion of the screen renders in the back.&lt;br /&gt;&lt;br /&gt;We've read about a number of proxy server and/or Windows Authentication issues with Safari.  While I can't say that is the primary issue, we've directed the users to Firefox as that works just fine after the proxy connection is configured correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7326520607125491218?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7326520607125491218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7326520607125491218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7326520607125491218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7326520607125491218'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/safari.html' title='Safari'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6656329452326585077</id><published>2008-02-04T13:36:00.000-08:00</published><updated>2008-02-04T13:39:47.315-08:00</updated><title type='text'>eScrum instead of CMMI</title><content type='html'>It's been an interesting day in my new group.  My former organization used the TFS CMMI templates.  Our group wide CMMI efforts are pretty much dissolved, but TFS and the templates are still in use.&lt;br /&gt;&lt;br /&gt;The new group is using something called "&lt;a href="http://blogs.msdn.com/robcaron/archive/2007/06/12/3261753.aspx"&gt;eSrum&lt;/a&gt;" and an Agile development mythology.  From the looks of it, it's been around a while though I've never looked at them before.  I thought Scrum and Agile were two different things, but from what I've found so far, people around here use the terms interchangeably.&lt;br /&gt;&lt;br /&gt;They have an existing TFS system setup in their DEV environment.  They were having some issues with creating "Build" reports as the eScrum templates don't include one.  So I pumped out a few pretty quick referring back to Buck's posting &lt;a href="http://blogs.msdn.com/buckh/archive/2007/08/11/download-creating-and-customizing-tfs-reports.aspx"&gt;here&lt;/a&gt; when needed.  If you have not checked this out, you should.  It's very helpful if you need to get up to speed with Reports quickly.&lt;br /&gt;&lt;br /&gt;We also upgraded their TSWA from 2005 to 2008.  I'm not sure why they were running 2005 as we're running 2008 for everything else.  The upgrade was very smooth.  It only took about 10 minutes after we got started.&lt;br /&gt;&lt;br /&gt;Overall they have things pretty well setup in their TFS 2008 DEV environment.  They do plan on scaling out to a full TFS deployment (i.e. primary/standby app servers with clustered data tiers), which we'll have to tackle when that times come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6656329452326585077?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6656329452326585077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6656329452326585077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6656329452326585077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6656329452326585077'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/escrum-instead-of-cmmi.html' title='eScrum instead of CMMI'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5257927511850953959</id><published>2008-02-01T09:49:00.000-08:00</published><updated>2008-02-01T13:18:13.115-08:00</updated><title type='text'>Slight change in my role</title><content type='html'>If you're a regular reader of my daily &lt;a href="http://macnoland.blogspot.com/"&gt;Thoughts&lt;/a&gt; blog, you'll notice that I'm changing groups starting Monday.  Oddly enough, the first assignment in my new group is to get TFS up and running for them.  &lt;br /&gt;&lt;br /&gt;The new group is starting off with TFS 2008 so I won't get to experience the 2005 to 2008 upgrade.  However, given I'm just a floor away, I'm sure my old group will ask for some help when the time comes.&lt;br /&gt;&lt;br /&gt;Given I'm heading to a new group, my postings may change slightly.  I'll still be supporting Teamprise users, but over half the group uses Team Explorer so that may sway my subject matter a bit.  I'm also taking on some more responsibility (with very little more pay).  In addition to leading up the TFS adoption, which includes Work Item Tracking, Reporting, Documents, Team Build, and Source Control features (including branching and code-line policy), I'm responsible for deployment strategy.  That is, how in the heck we're going to blow out the build results to large server farms.  Daunting to say the least.&lt;br /&gt;&lt;br /&gt;I hope you'll keep reading as I still plan on posting what has become simply a brain dump on our company's adoption of TFS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5257927511850953959?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5257927511850953959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5257927511850953959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5257927511850953959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5257927511850953959'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/02/slight-change-in-my-role.html' title='Slight change in my role'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-7572511986434201703</id><published>2008-01-31T10:24:00.000-08:00</published><updated>2008-01-31T10:26:43.752-08:00</updated><title type='text'>Odd Behavior for Workspace Mappings</title><content type='html'>Say you have the following Team Project Source Control structure.  1.0 under "releases" is the 1.0 branched version of the mainline.&lt;br /&gt;&lt;br /&gt;$/TeamProject&lt;br /&gt;&amp;nbsp;&amp;nbsp;/mainline&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/src&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;/releases&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/1.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/src&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/lib&lt;br /&gt;&lt;br /&gt;Then set your workspace mapping up like this.&lt;br /&gt;&lt;br /&gt;$/TeamProject/mainline --&gt; c:\Development&lt;br /&gt;$/TeamProject/releases/1.0/src --&gt; c:\Development&lt;br /&gt;&lt;br /&gt;Then do a Get on $/TeamProject/mainline/src.  You'll find that $/TeamProject/mainline/src will show "Not downloaded" under the column "Latest" while the "release" branch will show "Yes" under the column "Latest."&lt;br /&gt;&lt;br /&gt;I can actually kind of understand why this behaves like it does.  The deepest mapping is honored.  However, it's kind of odd that you do a "Get" on mainline and the "release" branch is what is Got.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-7572511986434201703?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/7572511986434201703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=7572511986434201703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7572511986434201703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/7572511986434201703'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/odd-behavior-for-workspace-mappings.html' title='Odd Behavior for Workspace Mappings'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-9109027976189357438</id><published>2008-01-30T08:12:00.000-08:00</published><updated>2008-01-30T08:33:17.075-08:00</updated><title type='text'>Phase 2: Tracking down the TFS license key.</title><content type='html'>Here's an update on trying to track down our TFS 2008 license key (a.k.a product key). For background see my &lt;a href="http://team-foundation-server.blogspot.com/2008/01/phase-1-tracking-down-tfs-license-key.html"&gt;post&lt;/a&gt; last week. If you're struggling with how to get your license key for TFS 2008, check out Martin's &lt;a href="http://www.woodwardweb.com/vsts/000416.html"&gt;post&lt;/a&gt; or Brian's &lt;a href="http://blogs.msdn.com/bharry/archive/2007/11/22/2008-installation-questions.aspx"&gt;post&lt;/a&gt;. Both are very helpful.&lt;br /&gt;&lt;br /&gt;From what I understand; Our company of 33,000 buys Microsoft software from a procurement vendor who in return buys it from Microsoft distributor who buys it from Microsoft (or something like that). Getting product keys always seems to be an issue.&lt;br /&gt;&lt;br /&gt;Luckily we just got it figured out. There is a small body of people who can download "licensed" versions of software from Microsoft which have the license key embedded in the install. Unfortunately these people don't always know they have such powers, or they don't advertise themselves very well.&lt;br /&gt;&lt;br /&gt;Anyway, we found a person who was able to download the standard edition of TFS 2008 for us, and then using Martin's post (above) we grabbed the "Product Key" and updated our trial edition of TFS 2008. Like Martin suggested; just to make sure, we used Brian's TFSVersionDetection and everything was kosher.&lt;br /&gt;&lt;br /&gt;Now that was not that hard was it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-9109027976189357438?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/9109027976189357438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=9109027976189357438' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/9109027976189357438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/9109027976189357438'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/phase-2-tracking-down-tfs-license-key.html' title='Phase 2: Tracking down the TFS license key.'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2329065538357276300</id><published>2008-01-29T13:16:00.000-08:00</published><updated>2008-01-29T13:17:50.578-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSWA'/><title type='text'>Firefox authentication issue resolved</title><content type='html'>The good folks at Microsoft reached out to use to see if they could get more information on the Firefox troubles we've been having.  That request forced to look into the Firefox issues a bit, and as it turned out I think we have the primary problem resolved on both Windows and Linux.&lt;br /&gt;&lt;br /&gt;Here is what we found out; we use a proxy server for the entire company.  Because of the proxy we have a defined inclusion list in IE that tells IE and Visual Studio to not go through the proxy for internal sites.  We use *.int.mycompany.com*.  If you're wondering why the trailing "*" is there, check out this &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1477773&amp;SiteID=1"&gt;post&lt;/a&gt;.  This list is company wide and managed by the support folks.&lt;br /&gt;&lt;br /&gt;Since Firefox is not "company supported" they don't send out an inclusion list so people build their own.  This is typically done by just copying what IE has.  When the users copied IE, they got *.int.mycompany.com*.  By the looks of it though, Firefox handles the list a bit different and was giving the consistent "Authentication Prompt" as the page rendered.  To fix the issue, we needed just *.int.mycompany.com without the trailing "*".&lt;br /&gt;&lt;br /&gt;So far this has worked with the small body of users we've had try it.   Now that we have this fixed, we might have some more users go back to Firefox and test it out more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2329065538357276300?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2329065538357276300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2329065538357276300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2329065538357276300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2329065538357276300'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/firefox-authentication-issue-resolved.html' title='Firefox authentication issue resolved'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-2138336238444710601</id><published>2008-01-28T06:33:00.000-08:00</published><updated>2008-01-28T06:42:33.450-08:00</updated><title type='text'>New Blogger</title><content type='html'>My colleague Greg Collins is now blogging. While my blog is geared towards TFS and Teamprise, Greg's will be more on the software configuration management side of our business. For example in his first post, he wrote about how to grab certain values out of our major.minor.bug.build release number schema using Ant.  We needed this solution so that our Teamprise Ant scripts know where to grab release code from during build time on our Linux/Linux64/Unix machines.&lt;br /&gt;&lt;br /&gt;Being that we do most all of our CM work in TFS, I'm sure he'll have a number of postings related to specific solutions that we've found for TFS.&lt;br /&gt;&lt;br /&gt;Greg is actually the person who figured out how to use Team Build for our &lt;a href="http://team-foundation-server.blogspot.com/2007/07/using-team-build-for-java-builds-that.html"&gt;Java builds&lt;/a&gt;. I was a bit sceptical, but Greg was persistent and as it turns out, we love using Team Build for our Java based builds.&lt;br /&gt;&lt;br /&gt;I encourage you to check out his blog at &lt;a href="http://www.softwareconfiguraton.blogspot.com/"&gt;softwareconfiguraton.blogspot.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-2138336238444710601?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/2138336238444710601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=2138336238444710601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2138336238444710601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/2138336238444710601'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/new-blogger.html' title='New Blogger'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8039222104266329837</id><published>2008-01-25T09:47:00.000-08:00</published><updated>2008-01-25T13:24:39.964-08:00</updated><title type='text'>Statistics for TfsWitDisplayNames Issue</title><content type='html'>I was asked to collect some statistics on how often we run the TfsWitDisplayNames tool to fix our 'displayName' issue.  Here are our results for the past two weeks.&lt;br /&gt;&lt;br /&gt;1/14/08 - one time for 1 user.  Changed business *units.&lt;br /&gt;1/14/08 - one time for 1 user.  Changed first name.&lt;br /&gt;1/18/08 - one time for 1 user.  Changed business units.&lt;br /&gt;1/22/08 - one time for 119 users. Changed business unit name.&lt;br /&gt;1/23/08 - one time for 3 users. Left company or changed business units.&lt;br /&gt;1/25/08 - one time for 1 users. Left company.&lt;br /&gt;&lt;br /&gt;As you can see, on average we do an update about every other day.  The large change you see on the 22nd was due to our business unit name change.  That is not normal, but does happen as you can see.&lt;br /&gt;&lt;br /&gt;Overall the tool works very well.  Other than the issue that I posted on &lt;a href="http://team-foundation-server.blogspot.com/2008/01/bug-in-tfswitdisplaynames-tool.html"&gt;here&lt;/a&gt;, we've had pretty good success using it.  We have a modest number of work items (around 3000) so the tool runs very quickly.&lt;br /&gt;&lt;br /&gt;The system administrators and DBAs don't like it very much as we have to run the tool with an account that has access to the data tier.  Since this is against company policy, we've had a temporary account created until this is fixed.  I threw out the idea that maybe we should have the DBA run the command for us, at which point they quickly gave us access ;).&lt;br /&gt;&lt;br /&gt;Hopefully this provides some quantitative data of how much this Bug affects our group.  While not overly difficult to fix, it's a pain to have to do this every few days.&lt;br /&gt;&lt;br /&gt;* The Active Directory 'company' field is used for our business unit names.  Thus when someone changes business units, the 'company' name is modified.  'company' is then used in our 'displayName' format.  The overall 'displayName' format is Lastname, Firstname (Company).  If you're wondering why don't we change this, it's because this is the format for 33,000 employees and the business doesn’t want to change it for everyone, just because TFS has an issue.  I can't argue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8039222104266329837?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8039222104266329837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8039222104266329837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8039222104266329837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8039222104266329837'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/statistics-for-tfswitdisplaynames.html' title='Statistics for TfsWitDisplayNames Issue'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-107085284832018086</id><published>2008-01-24T11:28:00.000-08:00</published><updated>2008-01-24T11:32:20.328-08:00</updated><title type='text'>TFS and Teamprise slides are posted</title><content type='html'>Last week I gave a presentation to the &lt;a href="http://vstsmn.net"&gt;Minnesota Visual Studio User Group&lt;/a&gt; on our adoption of TFS and Teamprise for a J2EE development group. If you're interested in getting the slides, you can find them &lt;a href="http://vstsmn.net/files/default.aspx"&gt;here&lt;/a&gt; under "Mac Noland Teamprise-TFS presentation".&lt;br /&gt;&lt;br /&gt;To be honest, I've never downloaded many presentations so by no means feel that I'm forcing these upon you. However, if you're thinking about implementing TFS in a Java shop, you may be interested in some of our information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-107085284832018086?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/107085284832018086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=107085284832018086' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/107085284832018086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/107085284832018086'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/tfs-and-teamprise-slides-are-posted.html' title='TFS and Teamprise slides are posted'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-891279789721897833</id><published>2008-01-23T11:52:00.000-08:00</published><updated>2008-01-23T11:53:13.923-08:00</updated><title type='text'>Phase 1: Tracking down the TFS license key.</title><content type='html'>Today I had intentions of trying to track down our TFS 2008 License key.  This was a big problem for us last time so I started with a "Escalation Specialist" from the "NACS Response Management Team-MSDN".&lt;br /&gt;&lt;br /&gt;After dialing the number they gave me, I ended up talking to City Gold and Smith Barney.  Thinking that was wrong, I gave the MSDN number I have (800-759-5474) a call and after a transfer was able to talk to someone from the "Activation Team."  &lt;br /&gt;&lt;br /&gt;The Activation Team member said to get the License Key I just needed to look on the back of the CD.  We don't actually receive any media as we installed the trial edition (per Brian Harry's &lt;a href="http://blogs.msdn.com/bharry/archive/2007/11/22/2008-installation-questions.aspx"&gt;suggestion&lt;/a&gt;).  So then he directed me to have our procurement department talk to the reseller.  We're a company of 33,000 people so you can imagine how hard it is to find the procurement department.&lt;br /&gt;&lt;br /&gt;From what he said, if the reseller does not know the key (which they didn't with TFS 2005) then we need to have our procurement tell our reseller to contact their local distributor.  At this point I lost interest in the conversation and offered my thanks for his time.&lt;br /&gt;&lt;br /&gt;So I'm back trying to find our procurement department.  Once the reseller's distributor tells the reseller that they don’t have the key, our procurement department will most likely direct me back to the vendor at which point I'll start over again with the "Escalation Specialist".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-891279789721897833?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/891279789721897833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=891279789721897833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/891279789721897833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/891279789721897833'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/phase-1-tracking-down-tfs-license-key.html' title='Phase 1: Tracking down the TFS license key.'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-9180710315561616064</id><published>2008-01-22T13:57:00.000-08:00</published><updated>2008-01-22T14:09:01.499-08:00</updated><title type='text'>Port Issue Fixed in TFS 2008 Install</title><content type='html'>When we installed TFS 2005 we had a nasty issue getting it installed on a different port (i.e. 8888). The default (i.e. 8080) was consumed by a data center wide service (some raid copy service I'm told) and the fine data support folks were reluctant to change it just for us. Being I like standardization, I could not argue with them.&lt;br /&gt;&lt;br /&gt;So after a few days and numerous calls to support, they told us installing TFS 2005 to a different port was impossible. See &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1180043&amp;SiteID=1"&gt;here&lt;/a&gt; for a work around, if you're ever so unfortunate.&lt;br /&gt;&lt;br /&gt;Luckily they have this fixed in TFS 2008. Or at least their install documentation says it's fixed. See the section "How to Customize the Port Assignment for Team Foundation Server" for instructions.&lt;br /&gt;&lt;br /&gt;FYI: If you're adamant in putting TFS on 8080 and need to figure out what is consuming 8080, try the command "netstat -ano". From here you should be able to find out what process is using 8080 (or any other port for that matter).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-9180710315561616064?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/9180710315561616064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=9180710315561616064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/9180710315561616064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/9180710315561616064'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/port-issue-fixed-in-tfs-2008-install.html' title='Port Issue Fixed in TFS 2008 Install'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6329383737267788720</id><published>2008-01-17T12:57:00.000-08:00</published><updated>2008-07-30T09:39:27.115-07:00</updated><title type='text'>How we branch our code in TFS</title><content type='html'>There is always a lot of discussion about branching philosophies. From what I've found, there is no one right answer. That being said, there are better approaches than others.&lt;br /&gt;&lt;br /&gt;We do things pretty consistent across our development groups so I thought we'd share it with you here. It is in my opinion, this approach is the best branching approach for developing and supporting multiple releases based off of one code base.&lt;br /&gt;&lt;br /&gt;What we do is a variation of what they call the "Hybrid Branching Structure" in Microsoft's Live Meeting called &lt;a href="https://msevents.microsoft.com/cui/r.ASpx?t=4&amp;amp;c=en-us&amp;amp;r=1294627953"&gt;"Application Platform: Branching and Merging: Which Approach Is Right for You (Level 200)"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First we have a mainline for each Application. Some people may call this "main" but we refer to it as mainline. Mainline is wide open for all developers working on that Application.&lt;br /&gt;&lt;br /&gt;$/TeamProject&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/App&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/mainline&lt;br /&gt;&lt;br /&gt;Then when we do code freeze, we branch the mainline to a folder under releases to it's appropriate major.minor release number. Release branches are read-only for everyone. If a change (either a Bug fix or Enhancement) is needed, permissions are opened for that one user after the Release Manager gives approval. Once the change is made, permissions are removed.&lt;br /&gt;&lt;br /&gt;$/TeamProject&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/App&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/mainline&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/releases&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/releaseX.X (* branched from mainline)&lt;br /&gt;&lt;br /&gt;For an application that has been around for a while and had a number of releases, the TFS structure looks something like this. In this example, we release every month and use year.month for our major.minor release numbers.&lt;br /&gt;&lt;br /&gt;$/TeamProject&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/App&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/mainline&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/releases&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/release8.1 (* branched from mainline)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/release8.2 (* branched from mainline)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/release8.3 (* branched from mainline)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/release8.4 (* branched from mainline)&lt;br /&gt;&lt;br /&gt;This approach seems to be the best for us. It minimizes the need for merging and allows us to support multiple releases at once.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;UPDATE&lt;/span&gt;:  There have been some questions about how we merge using the branch philosophy stated above.  When a change is made to a release branch, that change is merged back to the mainline.  Depending on how many "live" branches you're supporting, you may (or may not) have to merge it into other branches as well.  For example, if you made a change to &lt;span style="font-weight:bold;"&gt;release8.3&lt;/span&gt;, it should be merged into &lt;span style="font-weight:bold;"&gt;mainline &lt;/span&gt;AND &lt;span style="font-weight:bold;"&gt;release8.4&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6329383737267788720?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6329383737267788720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6329383737267788720' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6329383737267788720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6329383737267788720'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/how-we-branch-our-code-in-tfs.html' title='How we branch our code in TFS'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5926548665567152934</id><published>2008-01-14T12:10:00.001-08:00</published><updated>2008-01-14T14:24:38.906-08:00</updated><title type='text'>VSTS Meeting on Wednesday, January 16th</title><content type='html'>If you're in the Minneapolis/St. Paul area you'll want to make sure you stop by the &lt;a href="http://vstsmn.net"&gt;Visual Studio Team System Minnesota User Group&lt;/a&gt; on Wednesday night at 5:00PM.  Details can be found on their website &lt;a href="http://vstsmn.net"&gt;www.vstsmn.net&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll be the keynote speaker, which probably does little justice to the term "keynote."  In all seriousness, I'll be speaking about our use of Team Foundation Server and &lt;a href="http://www.teamprise.com"&gt;Teamprise&lt;/a&gt; in a Java world.  That is, we're using TFS even though almost our entire development area works in Java.&lt;br /&gt;&lt;br /&gt;My discussion will cover our configuration management tool evaluation, why we choose TFS, how we use TFS, and some suggestions and things to look out for when implementing TFS for a Java development group.&lt;br /&gt;&lt;br /&gt;Lastly, I hope you've enjoyed my blog so far.  You may have noticed that my blog is a bit different than most TFS blogs.  There are basically two reasons for this.  First, we're using TFS in a Java world.  I'd be willing to bet, most companies are using TFS for .NET developers.  But I think that is starting to change.  At least it is for us, as we've been very happy with TFS and &lt;a href="http://www.teamprise.com"&gt;Teamprise &lt;/a&gt;for our Java developers.&lt;br /&gt;&lt;br /&gt;Second, I don't work for Microsoft, Teamprise or a consulting company implementing a Microsoft or Teamprise product.  I work for a large software company and have simply been in charge of choosing and implementing a new configuration management tool.  So I'm not here to sell anything, just state my observations in hope of helping others adopt TFS and to hopefully help make the product better.&lt;br /&gt;&lt;br /&gt;I hope you've enjoyed so far!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5926548665567152934?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5926548665567152934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5926548665567152934' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5926548665567152934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5926548665567152934'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/vsts-meeting-on-wednesday-january-16th.html' title='VSTS Meeting on Wednesday, January 16th'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-1436058687994460254</id><published>2008-01-10T12:24:00.000-08:00</published><updated>2008-01-10T12:46:08.345-08:00</updated><title type='text'>Bug in the TfsWitDisplayNames tool</title><content type='html'>So HR contacts me yesterday afternoon and says we're going to have a 'displayName' change in Active Directory. Being the TFS Administrator, my heart sunk. I knew this was going to be an issue.&lt;br /&gt;&lt;br /&gt;I've actually been through this many times before, yet not with 250+ users. Usually it's just a handful every week. I've been using a tool called TFSLocalize which I believe was a precursor to the new tool &lt;a href="http://support.microsoft.com/kb/932717"&gt;TfsWitDisplayNames&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To get the tool you need to call support. It can take a bit to get routed to the correct group. I'd recommend you tell the "router" to look up the KB article number (i.e. 932717) so they know what to do. Or at least ask someone in their group what to do. As usual my experience was a bit rough, but eventually I did get to the 2nd level support group. Once I got there, they were very helpful.&lt;br /&gt;&lt;br /&gt;Anyway, like I said we've been through this a number of times in the past so I'm pretty familiar with the issue. The TfsWitDisplayNames tool works pretty well. The documentation is well put together, which helps calm your nerves after you get over the fact you have to map 250+ users.&lt;br /&gt;&lt;br /&gt;Here is an observation we had when running the tool with the /d switch, which I think indicates you are accounting for deleted users. The error we get might happen without the /d switch as well, but I didn't test that.&lt;br /&gt;&lt;br /&gt;Here is our first mapping file and output. You can see that we have three entries. The first two are for users who are no longer with the company. I mapped them both to me. The third user is an employee who changed business units and thus had his 'displayName' changed.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;Mapping File #1&lt;/strong&gt;&lt;br /&gt;oldValue="Gates, Bill (MyCompany)" newValue="Noland, Mac (MyCompany)"&lt;br /&gt;oldValue="Harry, Brian (MyCompany)" newValue="Noland, Mac (MyCompany)"&lt;br /&gt;oldValue="Hodges, Buck (MyCompany)" newValue="Hodges, Buck (MyOherCompany)"&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br /&gt;Processing changes for ...[Field Count : 13; Value Count: 3]&lt;br /&gt;Value: Gates, Bill (MyCompany) -&gt; Noland, Mac (MyCompany)&lt;br /&gt;Value: Harry, Brian (MyCompany)" -&gt; Noland, Mac (MyCompany)&lt;br /&gt;[WARNING]: Skipping update. Value 'Harry, Brian (MyCompany)' for field '' has already been changed.&lt;br /&gt;Processing changes completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can see that by having Noland, Mac (MyCompany) twice in a row, the tool stops after the first update with a warning. Now look at our second mapping. Here I've removed the duplicate and it produces correct results.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;Mapping File #2&lt;/strong&gt;&lt;br /&gt;oldValue="Gates, Bill (MyCompany)" newValue="Noland, Mac (MyCompany)"&lt;br /&gt;oldValue="Harry, Brian (MyCompany)" newValue="Noland, Brock (MyCompany)"&lt;br /&gt;oldValue="Hodges, Buck (MyCompany)" newValue="Hodges, Buck (MyOherCompany)"&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br /&gt;Processing changes for ...[Field Count : 13; Value Count: 3]&lt;br /&gt;Value: Gates, Bill (MyCompany) -&gt; Noland, Mac (MyCompany)&lt;br /&gt;Value: Harry, Brian (MyCompany) -&gt; Noland, Brock (MyCompany)&lt;br /&gt;Value: Hodges, Buck (MyCompany) -&gt; Hodges, Buck (MyCompany)&lt;br /&gt;Processing changes completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This produced the results we expected, but I think TfsWitDisplayNames has a bug. I sent this back to support so hopefully the duplicate issue will be fixed. In the mean time, you have to remove all duplicates and/or use multiple mapping files.  Which unless you've accepted that this is a huge pain in the butt, like I have, may frustrate you even more.&lt;br /&gt;&lt;br /&gt;Attention Microsoft:  This is becoming a bigger, and bigger, and bigger problem as our TFS instances (currently four) continue to grow.  I can safely speak for the 1000+ users we have (or soon will have).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-1436058687994460254?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/1436058687994460254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=1436058687994460254' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1436058687994460254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/1436058687994460254'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/bug-in-tfswitdisplaynames-tool.html' title='Bug in the TfsWitDisplayNames tool'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6278797075638509884</id><published>2008-01-09T08:23:00.000-08:00</published><updated>2008-01-09T08:25:52.459-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work Item Tracking'/><title type='text'>Can't make Area Path and Iteration Path required</title><content type='html'>We're giving up on Area Path.  Why?  Because we can't make it required and management is sick and tired of having Work Items not filled out correctly.&lt;br /&gt;&lt;br /&gt;They've slapped hands and threatened dismissal, but no go.  So it was requested to me, as the TFS administrator, to replace Area Path with a new custom field called Service.  Service is required on submit (a.k.a. Save).&lt;br /&gt;&lt;br /&gt;This is a shame as I really like both Area Path and Iteration Path.  They are easy to update and provide a nice tree hierarchy to break down subsystems (or Iterations) into sub-subsystems.&lt;br /&gt;&lt;br /&gt;Iteration Path got ditched a long time ago for the same reason.  Management said it's unacceptable for a Work Item to not have an Iteration Path selected.  The best way to fix that?  Make it required on Submit.  Brute force I guess.&lt;br /&gt;&lt;br /&gt;I'm sure there are technical reasons for it, but it would be really nice to have some way where you can make a tree hierarchy required.  I can see there would be problems with how deep do you want to make it required?  For example, is Iteration Path \TeamProject\1.0 good?  Or do you require \TeamProject\1.0\1.0.1?  Basically how deep in the tree makes Iteration Path valid? &lt;br /&gt;&lt;br /&gt;Anyway, until we can make tree hierarchy required, important fields like Iterations (we call them Releases) and Areas (we call them Services) will be custom fields.&lt;br /&gt;&lt;br /&gt;On a somewhat related note; here is the Excel formula we used to migrate all the Area Path values from Area Path to our new custom field.  I only put this here for my future reference if I ever have to do it again.  =MID(C3,SEARCH("\",C3)+1,20)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6278797075638509884?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6278797075638509884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6278797075638509884' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6278797075638509884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6278797075638509884'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/cant-make-area-path-and-iteration-path.html' title='Can&apos;t make Area Path and Iteration Path required'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-372969728484721026</id><published>2008-01-03T06:52:00.000-08:00</published><updated>2008-01-03T06:53:16.877-08:00</updated><title type='text'>Unshelving files that have File Merging disabled</title><content type='html'>As Buck &lt;a href="http://blogs.msdn.com/buckh/archive/2006/01/10/511188.aspx"&gt;wrote&lt;/a&gt; about, unshelving files that have File Merging disabled can be troublesome.  Disabling File Merging will exclusively lock files during check out.  This works well for binary files as it's difficult to merge them.&lt;br /&gt;&lt;br /&gt;However the exclusive "lock" will not allow users to shelve changes and have other users unshelve them.  The user unshelving the change will get the error "The item &lt;itemspec&gt; is locked for check-out by &lt;user&gt; in workspace &lt;workspace&gt;".&lt;br /&gt;&lt;br /&gt;As Buck wrote about, Microsoft had this issue with Gauntlet.  We have the issue as we use shelvesets to pass code between developers during code reviews.  In the past we simply zipped up the files and used email.  Developers feel shelving is a better way to share code for code reviews though.  I agree.&lt;br /&gt;&lt;br /&gt;So to allow Image files to be shelved/unshelved, we've decided to enable File Merging for Image files.  This is a server wide setting under Team -&gt; Team Foundation Server Settings -&gt; Source Control File Types.&lt;br /&gt;&lt;br /&gt;I'm sure there are some technical limitations that I'm not thinking of, but it would be nice to allow users to unshelve changes that have an exclusive lock.  That way we can keep File Merging disabled, but still allow users to use shelving for sharing files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-372969728484721026?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/372969728484721026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=372969728484721026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/372969728484721026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/372969728484721026'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2008/01/unshelving-files-that-have-file-merging.html' title='Unshelving files that have File Merging disabled'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-5188842511310121359</id><published>2007-12-27T09:28:00.000-08:00</published><updated>2007-12-27T09:31:01.723-08:00</updated><title type='text'>Installing TFS Power Tools with PowerShell 1.0</title><content type='html'>This is not really related to TFS, but I need a place to write it down and my TFS blog felt like the best place. So we could install &lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718351.aspx"&gt;TFS Power Tools&lt;/a&gt; on our application tier we had to install &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx"&gt;Power Shell 1.0&lt;/a&gt;. Unfortunately when we tried to install PowerShell but got the error listed below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;0.313: 2007/12/27 10:42:01.209 (local)&lt;br /&gt;0.328: d:\4dd898e4a95d73bd5cfec8a50379\update\update.exe (version 6.2.29.0)&lt;br /&gt;0.344: Failed To Enable SE_BACKUP_PRIVILEGE&lt;br /&gt;0.344: Setup encountered an error: You do not have permission to update Windows Server 2003.&lt;br /&gt;Please contact your system administrator.&lt;br /&gt;0.359: You do not have permission to update Windows Server 2003.&lt;br /&gt;Please contact your system administrator.&lt;br /&gt;68.000: Message displayed to the user: You do not have permission to update Windows Server 2003.&lt;br /&gt;Please contact your system administrator.&lt;br /&gt;68.000: User Input: OK&lt;br /&gt;68.000: Update.exe extended error code = 0xf004&lt;br /&gt;68.000: Update.exe return code was masked to 0x643 for MSI custom action compliance.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I found this &lt;a href="http://support.microsoft.com/kb/888791"&gt;article &lt;/a&gt;from Microsoft. It looks like the machine's group policies were a bit out of whack. We fixed them by going to &lt;strong&gt;Start &gt; Run &gt; gpedit.msc&lt;/strong&gt; and following the steps listed out in the article above I was able to add &lt;strong&gt;machine-name\Administrators&lt;/strong&gt; to the "Back up files and directories" policy, "Restore Files and Directories" policy.&lt;br /&gt;&lt;br /&gt;After a reboot we were able to install PowerShell 1.0 and TFS Power Tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-5188842511310121359?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/5188842511310121359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=5188842511310121359' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5188842511310121359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/5188842511310121359'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2007/12/installing-tfs-power-tools-with.html' title='Installing TFS Power Tools with PowerShell 1.0'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-3379003500568173753</id><published>2007-12-27T08:08:00.000-08:00</published><updated>2007-12-27T08:15:10.658-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><title type='text'>Teamprise 3.0 Preview Release #1</title><content type='html'>If you use &lt;a href="http://www.teamprise.com"&gt;Teamprise&lt;/a&gt;, which you should if you want a great cross platform tool, you'll want to check out the Teamprise 3.0 Preview Release that just came out. 3.0 has a number of nice features like check in policies, Team Build integration and recursive compare that you'll want to take advantage of. Contact &lt;a href="http://teamprise.com/support/index.html"&gt;support &lt;/a&gt; for details.&lt;br /&gt;&lt;br /&gt;I've played around mostly with the recursive compare and sent them the following feedback.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When you "Compare" source tree (e.g. $/TeamProject) to local workspace (e.g. c:\my_development) the Compare tool you setup under &lt;strong&gt;Tools &gt; Preferences &gt; Compare Tools&lt;/strong&gt; is not used when you double click on a file. Should it be? I noticed that when I compare file to file, the compare tool I selected is used.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Maybe just a personal preference, but I notice that other tree structure diff tools (e.g. TreeDiff for Team Explorer or Beyond Compare, or even Source Gear's DiffMerge) they use a common format where location #1 is on the Left Hand Side and location #2 is on the Right Hand Side. I think something like that would be more familiar than the single Structure Compare window like 3.0 preview #1 has now.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;It might be nice to add some of the Source Control functions in the compare window. For example if you see a file has changed, but is not checked out, the user can Right Click and say Check out for Edit. I think VSS had this and the TFS Power Tools Tree Difference has this as well.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Along with the bullet right above is might be nice to have some Source Control meta-data with the files. Like maybe show if they are checked out or not. &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-3379003500568173753?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/3379003500568173753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=3379003500568173753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3379003500568173753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/3379003500568173753'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2007/12/teamprise-30-preview-release-1.html' title='Teamprise 3.0 Preview Release #1'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-8303125758302460774</id><published>2007-12-21T12:58:00.000-08:00</published><updated>2007-12-21T13:03:10.662-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Explorer'/><title type='text'>Team Explorer and Teamprise Date format difference</title><content type='html'>So I'm writing this extension for &lt;a href="http://www.anthillpro.com/html/products/anthillos/default.html"&gt;Anthill Open Source&lt;/a&gt; so that Anthill can talk to TFS from a Unix/Linux machine. We still have a need for Anthill and it was requested of me by our testers. I did the same for Windows months ago and it has worked remarkably well. See my previous &lt;a href="http://team-foundation-server.blogspot.com/2007/07/using-team-build-for-java-builds-that.html"&gt;posting &lt;/a&gt;on where to get the code. I only mention "remarkably well" as there is probably a good reason why I don't develop much software; I was never very good at it.&lt;br /&gt;&lt;br /&gt;The Window's adapter uses tf.exe which is provided by Microsoft. The Unix/Linux version uses &lt;a href="http://www.teamprise.com"&gt;Teamprise&lt;/a&gt;. Both command lines work well for what Anthill needs to do.&lt;br /&gt;&lt;br /&gt;In Anthill there is logic where it will check to see when the last code change was and compare it with the last successful build Anthill has recorded. If there is a change AFTER Anthill's last successful build, a build will fire off. If there is NOT a change, the build will not run. Very nice feature that I think Team Build will have in TFS 2008. If not, my colleague wrote a program that does this for us in Team Build 2005 and we can just apply the concept to Team Build 2008.&lt;br /&gt;&lt;br /&gt;Back to Anthill. What we do is run a history command to get back the "Date" of the most current changeset on a particular folder. Tf.exe gives us back the format "Wednesday, May 23, 2007 4:25:41 PM" which translates into a SimpleDateFormat of "EEEE, MMMM d, yyyy h:mm:ss aa". Teamprise on the other hand, returns "May 23, 2007 5:24:39 AM" which translates into a SimpleDateFormat of "MMM d, yyyy h:mm:ss aa". This causes a cross platform issue as the SimpleDateFormat is used for the compare with Anthill's last successful build.&lt;br /&gt;&lt;br /&gt;I've modified our code to account for the difference and will be posting it back up to Anthill OS as soon as we have it fully tested. I doubt many people will have an issue like this, but if you are depended on the "Date" format coming from Team Explorer and Teamprise, note they are slightly different.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-8303125758302460774?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/8303125758302460774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=8303125758302460774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8303125758302460774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/8303125758302460774'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2007/12/team-explorer-and-teamprise-date-format.html' title='Team Explorer and Teamprise Date format difference'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-938545142443366321</id><published>2007-12-18T07:04:00.000-08:00</published><updated>2007-12-18T07:05:00.948-08:00</updated><title type='text'>Permissions for Labeling</title><content type='html'>A colleague of mine ran across an interesting scenario today.  They have a large Team Project with multiple code bases in it.  They control permissions in Source Control so only certain groups can work on certain code lines.  An example is something like this:&lt;br /&gt;&lt;br /&gt;$/TeamProject/CodeLine1&lt;br /&gt;$/TeamProject/CodeLine2&lt;br /&gt;&lt;br /&gt;They wanted to ensure that only "CodeLine1 Contributors" could label CodeLine1.  And vice versa.  To do this, they gave "CodeLine1 Contributors" LABEL permission to $/TeamProject/CodeLine1.  And vice versa.  But when a member of "CodeLine1 Contributors" tried to label "CodeLine1" they got the error &lt;em&gt;TF14098: Access Denied: User %USER% needs Label permission(s) for $/TeamProject&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;My assumption is that when you label a folder in the structure, the label is actually applied to the folder's parents as well.  I'm pretty sure there is good reason for that.  I'm guessing it has something to do with the fact that when you label something you want to take a point-in-time baseline of the artifacts.  Since the parents are part of the artifact structure, it applies the label to the parent as well.  This is just a hypothesis, but I think it makes sense.&lt;br /&gt;&lt;br /&gt;Anyway, to fix this "CodeLine1 Contributors" and "CodeLine2 Contributors" need label access to $/TeamProject.  At that point then I think you can DENY "CodeLine1 Contributors" on CodeLine2 and DENY "CodeLine2 Contributors" on CodeLine1. Obviously if you have a ton of code lines in one Team Project this can take a few minutes to get setup.  The good thing is, I think you only have to do it once.&lt;br /&gt;&lt;br /&gt;Please feel free to refute my assumptions if you find them incorrect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-938545142443366321?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/938545142443366321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=938545142443366321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/938545142443366321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/938545142443366321'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2007/12/permissions-for-labeling.html' title='Permissions for Labeling'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-6752803282313266623</id><published>2007-12-13T09:55:00.001-08:00</published><updated>2007-12-13T09:59:42.981-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><title type='text'>Initial Results of TeampriseBuild for TFS 2005</title><content type='html'>I've spent a few hours working with &lt;a href="http://www.woodwardweb.com/teamprise/000406.html"&gt;TeampriseBuild&lt;/a&gt; and to be honest, I love it!  With Martin's instructions a novice could get up and running within an hour or so (I seem to take longer due to excesive note taking and pondering).  That is assuming their Ant scripts work autonomously from the initiation mechanism.  In our case they are, so I was able to simply use his instructions to call an Ant file just like we'd use Anthill our CruiseControl to call an Ant script.&lt;br /&gt;&lt;br /&gt;I did have to edit the WorkspaceMapping.xml to make sure you're not bringing down too much code.  This has nothing to do with TeampriseBuild, just an observation of Team Build that is not always apparent.&lt;br /&gt;&lt;br /&gt;I also like Martin's idea of not having to create the bogus solution file.  "In a future release of Teamprise we hope to remove this restriction".  While it's easy to crate the bogus solution file, it would be nice to avoid this.  It just confuses people more than anything.&lt;br /&gt;&lt;br /&gt;We did need one deviation from Martin's write-up.  To get the logging correct we had to change the TFSBuild.rsp file to use /v:d, which is detailed logging for MSBuild, instead of /v:n.  /v:n did not give us the Ant's standard output.  However /v:d did.  So while you have to dig through a bunch of MSBuild junk, you do get to see the output returned by Ant.&lt;br /&gt;&lt;br /&gt;Some of our Ant scripts take care of their own logging so it's not a big deal.  But it would be nice to not see all the "detail" information in the log file and just get back Ant's standard output.&lt;br /&gt;&lt;br /&gt;Overall, I give this effort an "A".  Keep up the good work Teamprise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-6752803282313266623?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/6752803282313266623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=6752803282313266623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6752803282313266623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/6752803282313266623'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2007/12/initial-results-of-teamprisebuild-for.html' title='Initial Results of TeampriseBuild for TFS 2005'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4988928333694822687</id><published>2007-12-11T10:53:00.000-08:00</published><updated>2007-12-11T11:00:21.848-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><title type='text'>Teamprise Offers Team Build Solution</title><content type='html'>A few months back a colleague of mine found a way to use Team Build to call our Ant build scripts. It works quite well to be honest. You can see my original &lt;a href="http://team-foundation-server.blogspot.com/2007/07/using-team-build-for-java-builds-that.html"&gt;post&lt;/a&gt; on how we do it.&lt;br /&gt;&lt;br /&gt;I just saw that the good folks at Teamprise are offering what I would guess, is a better solution. I've got that same colleague of mine checking it out, but if it's anything like other Teamprise offerings, it should be a nice addition for those of us using TFS in J2EE development groups.&lt;br /&gt;&lt;br /&gt;Check &lt;a href="http://www.woodwardweb.com/teamprise/000406.html"&gt;TeampriseBuild&lt;/a&gt; out and give Martin some feedback on what you think. We plan on doing the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4988928333694822687?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4988928333694822687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4988928333694822687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4988928333694822687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4988928333694822687'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2007/12/teamprise-offers-team-build-solution.html' title='Teamprise Offers Team Build Solution'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-180615291389479327</id><published>2007-12-07T12:37:00.000-08:00</published><updated>2007-12-07T12:40:06.556-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teamprise'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Explorer'/><title type='text'>A scare when changing workspace mappings</title><content type='html'>Here is a good way to scare even the most seasoned developer.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Set your workspace U000001-XPA mapping so $/TeamProject/MySource is pulled down to c:\MySource&lt;br /&gt;&lt;li&gt;Check out $/TeamProject/MySource/MyFile.cs to c:\MySource\MyFile.cs&lt;br /&gt;&lt;li&gt;Make a change to MyFile.cs, but do not check in.&lt;br /&gt;&lt;li&gt;Now let's say for some reason you want to get the code $/TeamProject/MySource to c:\My&lt;strong&gt;Temp&lt;/strong&gt;Source. To do so you decide to change workspace U000001-XPA mapping so $/TeamProject/MySource is pulled down to c:\MyTempSource.&lt;br /&gt;&lt;li&gt;Do a Get Latest.&lt;br /&gt;&lt;li&gt;Open up My Computer and you should see code under c:\MyTempSource. And you should notice that all code, including the code that was checked out and changed!, is deleted from MySource.&lt;br /&gt;&lt;li&gt;Start freaking out.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;This just happened to one of our tech leads. Luckily he checked in the code before running through these steps. So he felt alright, but did have me over to his desk to take a look and see if it's correct behavior. I didn't think it was and did some testing.&lt;br /&gt;&lt;br /&gt;Well good news. Team Explorer and Teamprise are smart enough to move the changes under the new mapping location. In our case. c:\MyTempSource. In addition, Team Explorer and Teamprise are smart enough to not delete any files that were in the original location (i.e. c:\MySource), but NOT added to the list of pending changes.&lt;br /&gt;&lt;br /&gt;I think this is correct behavior, but it does scare us a bit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-180615291389479327?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/180615291389479327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=180615291389479327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/180615291389479327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/180615291389479327'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2007/12/scare-when-changing-workspace-mappings.html' title='A scare when changing workspace mappings'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37804916.post-4071474303981238444</id><published>2007-12-06T13:43:00.000-08:00</published><updated>2007-12-06T13:45:22.605-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSWA'/><title type='text'>Long source file names don’t work well in TSWA 2005</title><content type='html'>We have not run into an issue with long file paths in TSWA, but another TFS administrator in this monster of a company has.  Apparently it's caused when you have a file path more than 260 characters.  We're probably not running into the error for one of these two reasons.&lt;br /&gt;&lt;br /&gt;First, our &lt;strong&gt;localCache path&lt;/strong&gt; is set to &lt;strong&gt;D:\cachedir&lt;/strong&gt; from the default of &lt;strong&gt;C:\Program Files\Microsoft Visual Studio 2005 Team System Web Access\cache\&lt;/strong&gt;.  Thus saving us 64 characters.&lt;br /&gt;&lt;br /&gt;Second, who interacts with source code from TSWA?  While I nice feature to put in the marketing material, our users don’t use it often.&lt;br /&gt;&lt;br /&gt;Here is a good &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2314799&amp;SiteID=1"&gt;posting&lt;/a&gt; explaining some more of the gory details.  Sounds like the issue is fixed in TSWA 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37804916-4071474303981238444?l=team-foundation-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://team-foundation-server.blogspot.com/feeds/4071474303981238444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37804916&amp;postID=4071474303981238444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4071474303981238444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37804916/posts/default/4071474303981238444'/><link rel='alternate' type='text/html' href='http://team-foundation-server.blogspot.com/2007/12/long-source-file-names-dont-work-well.html' title='Long source file names don’t work well in TSWA 2005'/><author><name>Mac Noland</name><uri>http://www.blogger.com/profile/07086101163818736928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
