tag:blogger.com,1999:blog-30512149542790793072024-03-08T09:23:27.958-06:00Team System Fu"When you can grasp the pebble from my hand..."trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-3051214954279079307.post-77471241461068385282010-09-03T16:02:00.001-05:002010-09-03T16:02:31.672-05:00Query Check-in Policy Overrides<p>Use the following query to pull back a list of check-in policy overrides.  This works for Visual Studio Team Foundation Server 2010.  The <em>Tfs_DefaultCollection</em> database should be updated to match the name of your team project collection database.</p> <p>USE [Tfs_DefaultCollection]</p> <p>SELECT cs.[ChangeSetId], cs.[CommitterId], cs.[OwnerId], cs.[Comment], po.[Comment] AS [Override Reason], <br />       c.DisplayPart, cs.CreationDate, pf.[PolicyName], pf.[Message] <br />  FROM [tbl_PolicyOverride] AS po <br />INNER JOIN [tbl_ChangeSet] AS cs ON po.[ChangeSetId] = cs.[ChangeSetId] <br />INNER JOIN [tbl_Identity] AS i ON cs.[OwnerId] = i.[IdentityId] <br />INNER JOIN [Constants] AS c ON i.[TeamFoundationId] = c.[TeamFoundationId] <br />LEFT OUTER JOIN [tbl_PolicyFailure] AS pf ON cs.[ChangeSetId] = pf.[ChangeSetId] <br />WHERE cs.[CommitterId] = cs.[OwnerId] <br />ORDER BY c.[DisplayPart], cs.[CreationDate]</p> <p>The WHERE clause makes sure the query doesn’t return policy overrides that are created by the build service when committing Gated Check-ins.</p> <p>jb</p> trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com1tag:blogger.com,1999:blog-3051214954279079307.post-4005966554341967292009-04-06T13:51:00.002-05:002010-07-23T05:18:09.116-05:00New Dallas Team System User Group Website<p><a title="http://dallasvstsug.ning.com/" href="http://dallasvstsug.ning.com/">http://dallasvstsug.ning.com/</a></p><p><a href="http://dallasvstsug.ning.com/"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="3119497" border="0" alt="3119497" align="right" src="http://lh6.ggpht.com/_Gb3Tk0K28N4/SdpQKzqkkfI/AAAAAAAAAKY/jsJvh7QPxV8/3119497_thumb%5B7%5D.png?imgmax=800" width="55" height="73" /></a>The Dallas Team System User Group now has a social network on Ning!  We’ll be using this  as our primary site from now on.  You can keep up with the latest events and RSVP for the group meetings.  We’ve added a forum and already have a few threads out there that may be of interest to you.  You can add a picture to your profile, as well.  This helps us put faces with names so it’s not like we’re all meeting for the first time at each meeting.</p><p>There are a variety of RSS feeds to which you can subscribe, as well.  I’ve subscribed to the Latest Activity feed so I know when new members join or there’s activity on the forum.  We’re currently planning to add feeds for significant Team System content from around the web and Twitter posts from the experts.  Let us know what you’d like to see more or less of on the site.  I hope to see you out there.</p><p>jb</p>trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-27271402587215601622009-02-27T17:03:00.001-06:002009-02-27T17:03:35.720-06:00Fixing Project Portal Search<p>I discovered recently that searching on team project portals in SharePoint does not work out of the box.  If you try it, you'll most likely get a page with the following message:</p> <p>"Your search cannot be completed because this site is not assigned to an indexer. Contact your administrator for more information."</p> <p>If it works in your environment, fantastic!  If not, read on...</p> <p>The resolution is simple really.  The basic steps can be found in the answer in the following MSDN forum thread:</p> <p><a title="http://social.msdn.microsoft.com/Forums/en-US/tfsadmin/thread/ffeaedec-7497-4c8c-8c2b-ffa185a949ee/" href="http://social.msdn.microsoft.com/Forums/en-US/tfsadmin/thread/ffeaedec-7497-4c8c-8c2b-ffa185a949ee/">http://social.msdn.microsoft.com/Forums/en-US/tfsadmin/thread/ffeaedec-7497-4c8c-8c2b-ffa185a949ee/</a></p> <p>I verified the initial configuration in two separate test environments (TFS 2008 SP1 with WSS 3.0 SP1) and found the Windows SharePoint Services Search service disabled.  I've had reports of the same issue from environments where they upgraded from TFS 2005 with WSS 2.0.</p> <p>Running through the SharePoint Products and Technologies Wizard with the default selections gets things configured so that Windows SharePoint Services Search shows up in SharePoint Central Administration | Operations | Topology and Services | Services on Server page.  From there you can start the service and configure the user accounts (I used the TFS service account making sure to include the domain).  When you go look at your content database under Applications Management | SharePoint Web Application Management | Content Databases, the dropdown next to the "Search Server" section should be enabled and contain the name of your server.  Select that and apply the changes.</p> <p>Be sure to restart the Windows SharePoint Services Search service from the Services MMC snap-in after this.  I did not have to force an additional IIS reset to begin seeing search results.</p> <p>Why the appropriate configuration isn't applied by the TFS install process is beyond me.  I'd be interested if someone in the know could clue me in.</p> <p>jb</p> trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com1tag:blogger.com,1999:blog-3051214954279079307.post-67615811023937899432009-02-27T12:55:00.002-06:002009-04-06T13:59:40.637-05:00Notion Tools for Team System Features: Add By Date<p>You may or may not have heard about the recent release of <a href="http://www.notionsolutions.com/Products/Pages/default.aspx" target="_blank">Notion Tools for Team System</a>.  If so, hopefully you've given it a whirl and seen features that are of value to you and your organization.  If not, you really should check it out; especially since it's free until the end of April.  Rather than leave it at that, I thought it would be helpful to blog about certain features of the tool that I have found valuable.</p> <p>I'll start off with the "Add By Date" feature of the <a href="http://www.notionsolutions.com/Products/Pages/NotionTimesheet.aspx" target="_blank">Notion Timesheet</a> add-in that integrates into Visual Studio 2008.  This features allows me to load the timesheet grid with any work items against which I've recorded time for the currently selected week.  It comes in handy when I need to update my hours on a work item that isn't currently loaded in the grid.  I usually have Notion Timesheet bound to a custom work item query that returns items from a variety of team projects that are assigned to me that have not been closed.  Occasionally, before I've recorded all my time against a work item, it will be assigned to someone else or I'll close it inadvertently.  The "Add By Date" feature lets me quickly retrieve the work item and finish entering my time.  I also use it to go back and check my daily totals.</p> <p><a href="http://lh5.ggpht.com/_Gb3Tk0K28N4/Sag3IfyvI6I/AAAAAAAAAIM/Oxa9zDg3BGE/image%5B2%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="140" alt="image" src="http://lh6.ggpht.com/_Gb3Tk0K28N4/Sag3JGdRumI/AAAAAAAAAIQ/niEciXygTyY/image_thumb.png" width="244" border="0" /></a> </p> <p>My projects move pretty fast so work items are always on the move.  The Notion Timesheet "Add By Date" has been a lifesaver on more than one occasion.  Look for more information on cool <a href="http://www.notionsolutions.com/Products/Pages/default.aspx" target="_blank">Notion Tools for Team System</a> features soon.</p> <p>jb</p>trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-89309377154576831342009-01-28T09:12:00.004-06:002009-01-28T09:26:32.947-06:00Injecting Version Numbers Into WiX Projects<p>I've been meaning to blog about this for a bit. When I responded to someone asking about this very thing on the <a href="http://www.codify.com/lists/oztfs" target="_blank">OzTFS mailing list</a>, I basically crafted the post. So here it is.</p><p>I was tasked with making sure the product version number was applied to the deployment package during the release build process. I pored over the problem for a while and found many strange and complex approaches to solving it. Then I had a V8 moment and realized the answer was much simpler than I thought.</p><p>I didn't have the burden of persisting the version number in any of my source code because it's date/time driven. I know a lot of people like incrementing revisions that rollover each day, but I gave that up for simplicity. The major and minor values are set statically in the TFSBuild.proj or passed in via command-line arguments. Those values change far less often so this was an acceptable approach. I can even use <strong>Error</strong> tasks to ensure those values are passed in when doing a release candidate build.</p><p>I was already using a regular expression-based FileUpdate task from the MSBuild.Community.Tasks component to update my AssemblyInfo files. I just applied the same technique to update the .wixproj files in the <strong>AfterGet</strong> target.</p><div class="csharpcode"><pre class="alt"><span class="kwrd"><</span><span class="html">CreateItem</span> <span class="attr">Include</span><span class="kwrd">="$(SolutionRoot)\**\*.wixproj"</span><span class="kwrd">></span> </pre><pre> <span class="kwrd"><</span><span class="html">Output</span> <span class="attr">TaskParameter</span><span class="kwrd">="Include"</span> <span class="attr">ItemName</span><span class="kwrd">="WixProjectsToVersion"</span> <span class="kwrd">/></span> </pre><pre class="alt"><span class="kwrd"></</span><span class="html">CreateItem</span><span class="kwrd">></span> </pre><pre><span class="kwrd"><</span><span class="html">Attrib</span> <span class="attr">Files</span><span class="kwrd">="@(WixProjectsToVersion)"</span> <span class="attr">Normal</span><span class="kwrd">="true"</span> <span class="kwrd">/></span> </pre><pre class="alt"><span class="kwrd"><</span><span class="html">FileUpdate</span> <span class="attr">Files</span><span class="kwrd">="@(WixProjectsToVersion)"</span> <span class="attr">Regex</span><span class="kwrd">="SimpleVersion=.*;DetailedVersion=.*&lt;"</span> <span class="attr">ReplacementText</span><span class="kwrd">="$(WixVersions)&lt;"</span> <span class="kwrd">/><br /></span></pre></div><p>This updates preprocessor variables defined in the Property pages of the WiX project as follows.</p><p>SimpleVersion=1.0;DetailedVersion=1.0.0.0</p><p>The <strong>$(WixVersions)</strong> property is generated earlier in the build process. As long as it's value ends up looking similar to the following line by the time the <strong>FileUpdate</strong> task executes, you'll be in good shape.</p><p>SimpleVersion=3.5;DetailedVersion=3.5.123.12345</p><p>I then used the <strong>MSBuild</strong> task in the <strong>PackageBinaries</strong> target to compile the WiX projects. Setting the <strong>OutputPath</strong> property ensures that the resulting MSI file(s) end up where the rest of the build outputs are.</p><div class="csharpcode"><pre class="alt"><span class="kwrd"><</span><span class="html">MSBuild</span> <span class="attr">Projects</span><span class="kwrd">="$(SolutionRoot)\Setup.wixproj"</span> </pre><pre><span class="attr">Properties</span><span class="kwrd">="OutputPath=$(BinariesRoot);Configuration=Release"</span> <span class="kwrd">/><br /></span></pre></div><p>While we're on the subject of build outputs, I should mention a little trick that enables your WiX projects to be built on locally AND on the build server. This next snippet should be self-explanatory:</p><div class="csharpcode"><pre class="alt"><span class="rem"><!-- Preprocessor directives to conditionally set source paths based on type of build --></span> </pre><pre><span class="kwrd"><?</span><span class="html">if</span> <span class="kwrd">"$(env.USERNAME)"</span><span class="kwrd">="s-tfsservice"</span>?<span class="kwrd">></span> </pre><pre class="alt"> <span class="kwrd"><?</span><span class="html">define</span> <span class="attr">Project1Bin</span><span class="kwrd">="..\..\..\..\..\..\Binaries\Mixed Platforms\$(var.Configuration)"</span>?<span class="kwrd">></span> </pre><pre><span class="kwrd"><?</span><span class="html">else</span>?<span class="kwrd">></span> </pre><pre class="alt"> <span class="kwrd"><?</span><span class="html">define</span> <span class="attr">Project1Bin</span><span class="kwrd">="..\..\..\some path\bin\$(var.Configuration)"</span>?<span class="kwrd">></span> </pre><pre><span class="kwrd"><?</span><span class="html">endif</span>?<span class="kwrd">><br /></span></pre></div><p>A lot of people struggle with the approach of specifying the DefineConstants property override in the <SolutionToBuild> element in their build scripts. The reason this doesn’t work is because those properties and items are all defined when the build is initialized. The dynamic version number hasn't been generated yet.<br /></p><p>jb</p>trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-31610405914519227722008-12-15T15:55:00.000-06:002008-12-15T15:57:53.986-06:00How To Rename Your Reporting Services Databases<p></p> <p>I've installed TFS in more than one environment where Reporting Services is already in use.  The big problem that everyone yells about is that TFS requires a blank RS instance in order to install it successfully.  In case you don't have a spare SQL database instance laying around, a nice workaround is to rename the RS databases from their default names.  This allows TFS to create the new RS databases it requires with the default and you can move on with your life.</p> <p>Thanks to <a href="http://simplex-it.com/staff/default.aspx" target="_blank">Bob Coppedge</a> over at <a href="http://simplex-it.com/default.aspx" target="_blank">Simplex-IT</a> for his original <a href="http://simplex-it.com/TechBlog/default.aspx" target="_blank">blog post</a> on this.  I was able to follow his steps with some slight variations to rename the Reporting Services databases.</p> <ol> <li>Backup the <strong>ReportServer</strong> and <strong>ReportServerTempDB</strong> databases you plan on renaming--just in case something goes wrong...which never happens, of course.</li> <li>Stop Reporting Services using the <strong>Reporting Services Configuration Tool</strong>.</li> <li>Script the stored procedures from the <strong>ReportServer </strong>database to new query window.</li> <li>In the script, search for and replace CREATE PROC with ALTER PROC (one instance contains two spaces between CREATE and PROC.)</li> <li>Save the script.</li> <li>Rename the <strong>ReportServer </strong>and <strong>ReportServerTempDB </strong>databases.</li> <li>Go back to the stored procedure script and search for and replace <strong>ReportServer </strong>with the new database name (ex. <strong>ReportServer</strong> to <strong>ReportServer-NEW.)</strong></li> <li>Save a copy of the script with a new name.</li> <li>Execute the script.</li> <li>Start Reporting Services using the <strong>Reporting Services Configuration Tool</strong>.</li> <li>Go to the <strong>Database Setup </strong>"tab".</li> <li>Click the <strong>Connect </strong>button and then click <strong>OK</strong> on the pop-up.</li> <li>Select the new database name in the dropdown list.</li> <li>Click <strong>Apply </strong>and then click <strong>OK</strong> on the pop-up.  An error will probably occur when saving the new connection info.  Click <strong>Apply </strong>again and it should succeed.</li> </ol> <p>Finished!  You should be able to test the reports now.  I would go so far as to recommend this as a best practice.  You could leverage the same database server for multiple RS instances this way.  At the very least, it enables you to install Team Foundation Server against a database server that is already supporting an existing RS instance.</p> <p>jb</p> trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com6tag:blogger.com,1999:blog-3051214954279079307.post-83975771784392832862008-12-05T14:27:00.000-06:002008-12-05T17:31:03.079-06:00Issues with Reporting Services Permissions<p>After working with TFS security for the better part of a year, I suddenly ran into a nasty permissions issue in Reporting Services this week.  I'll illustrate the problem using pictures.  When I look at security at the top level in Reporting Services using my tfsSetup account, I see that only the TFS Administrators group has the Content Manager role.  That's good because I don't necessarily want everyone looking at the project reports across the board.</p> <p><a href="http://lh5.ggpht.com/_Gb3Tk0K28N4/STm5jxiIdzI/AAAAAAAAAGY/ZTT8wpNRKEg/2008-12-05_1302%5B4%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="90" alt="SSRS Top-level Permissions" src="http://lh6.ggpht.com/_Gb3Tk0K28N4/STm5kcM7yvI/AAAAAAAAAGc/b8FFy93XHnU/2008-12-05_1302_thumb%5B2%5D.png" width="244" border="0" /></a></p> <p>Now I'll drill down into the folder for my team project.  In this case, the team project name is JobBoard.  Here I've broken the security inheritance and given my jobBoardProjectAdmin account the Content Manager role.  The expectation is that he or she will be able to manage security for that folder and any of the contained items without having to bug me.  I'd like to fully delegate that function to the JobBoard Team Project Administrator.</p> <p><a href="http://lh5.ggpht.com/_Gb3Tk0K28N4/STm5k7rUKwI/AAAAAAAAAGg/F1z_PAC3Fm8/2008-12-05_1253%5B5%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="93" alt="Project Folder Permissions" src="http://lh6.ggpht.com/_Gb3Tk0K28N4/STm5leaDC6I/AAAAAAAAAGk/WfqvqxxFGeU/2008-12-05_1253_thumb%5B1%5D.png" width="244" border="0" /></a></p> <p>With that set up, let's see if the jobBoardProjectAdmin account has access to view the reports as well as administer security for the JobBoard folder.</p> <p><a href="http://lh6.ggpht.com/_Gb3Tk0K28N4/STm5lyEdjKI/AAAAAAAAAGo/zxKj90kRr24/2008-12-05_1320%5B2%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="118" alt="Project Admin tries to access project folder permissions" src="http://lh3.ggpht.com/_Gb3Tk0K28N4/STm5mUckDdI/AAAAAAAAAGs/FlqmLv_qPL0/2008-12-05_1320_thumb.png" width="244" border="0" /></a><a href="http://lh4.ggpht.com/_Gb3Tk0K28N4/STm5m-7zKwI/AAAAAAAAAGw/URJZhu6RTKc/2008-12-05_1323%5B2%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="44" alt="2008-12-05_1323" src="http://lh6.ggpht.com/_Gb3Tk0K28N4/STm5nKGAKeI/AAAAAAAAAG0/1XvgR-m4zpo/2008-12-05_1323_thumb.png" width="244" border="0" /></a></p> <p>Looks like I can see the list of reports but then I click the Properties tab...uh oh!  That doesn't look right.  Reporting Services gives me an error stating "The permissions granted to user 'VSTS2008\jobBoardProjectAdmin' are insufficient for performing this operation. (rsAccessDenied)".  I just gave that account the Content Manager role!  I'll check one of the reports.  Maybe that will work.</p> <p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="110" alt="2008-12-05_1326" src="http://lh3.ggpht.com/_Gb3Tk0K28N4/STm5nlIT9GI/AAAAAAAAAG4/aXchFQCvDV4/2008-12-05_1326_thumb.png" width="244" border="0" /><a href="http://lh6.ggpht.com/_Gb3Tk0K28N4/STm5okXysEI/AAAAAAAAAG8/qdqXfTDsADM/2008-12-05_1327%5B2%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="43" alt="2008-12-05_1327" src="http://lh3.ggpht.com/_Gb3Tk0K28N4/STm5qMSBj9I/AAAAAAAAAHA/wAJ6YDLWGvo/2008-12-05_1327_thumb.png" width="244" border="0" /></a></p> <p>Same error.  I can view the report just fine, but I can't edit the permissions.  Argh!</p> <p>So I do some Googling and really don't find much except for folks talking about giving the user some sort of access at a higher level.  I'd rather not have to do that but if I'm going, I'd prefer to do it once and get it over with.  I'll try giving all Authenticated Users the Browser role at the top level.  This may seem to fly in the face of my earlier statement about not wanting everyone to see all of the projects reports.  However, since I broke the security inheritance for the JobBoard folder, the Authenticated Users group won't have the Browser role at that level.  Only the users explicitly given permissions to the folder will be able to see it.  I'll use that policy going forward so the Authenticated Users approach is okay.</p> <p><a href="http://lh3.ggpht.com/_Gb3Tk0K28N4/STm5qpOjZeI/AAAAAAAAAHE/Hn4uPY6Wh4Q/2008-12-05_1324%5B2%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="96" alt="2008-12-05_1324" src="http://lh4.ggpht.com/_Gb3Tk0K28N4/STm5rNDunWI/AAAAAAAAAHI/yq49lD8UWqU/2008-12-05_1324_thumb.png" width="244" border="0" /></a></p> <p>Now I'll I try the Properties tab for the JobBoard folder using the jobBoardProjectAdmin account.  The result:  I can see it AND manage permissions.</p> <p><a href="http://lh6.ggpht.com/_Gb3Tk0K28N4/STm5rs3634I/AAAAAAAAAHM/715jIHTwZg4/2008-12-05_1328%5B2%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="156" alt="2008-12-05_1328" src="http://lh5.ggpht.com/_Gb3Tk0K28N4/STm5sZCyo9I/AAAAAAAAAHQ/dJyiQ4mKaXQ/2008-12-05_1328_thumb.png" width="244" border="0" /></a></p> <p>Success!...kind of.  Why does this work?  Why does this fix the problem?  Why do I have to do this?  Is this the way it's supposed to work?  I really don't know, but I'll have to live with it for now.  I'm working with SQL Server 2008 here.  The problem can be seen in SQL Server 2005, as well.  If anyone has feedback or ideas about this, feel free to respond.  If you're looking for a solution to the problem in your own environment, the Authenticated Users should work just fine.  You could always use a more specific domain group if you like.</p> <p>On a side note, during this process I discovered a nice little feature in Visual Studio Team System that I hadn't seen before.  In the Security and Group Membership dialogs that are part of Team Explorer there are these links for SQL Server Reporting Services and Windows SharePoint Services Site Administration at the bottom.  I never paid attention to those until now.  They actually take you straight to the appropriate locations for administering security for those resources.</p> <p><a href="http://lh3.ggpht.com/_Gb3Tk0K28N4/STm5syEqJUI/AAAAAAAAAHU/c54-7JwaDec/2008-12-05_1235%5B2%5D.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="232" alt="2008-12-05_1235" src="http://lh4.ggpht.com/_Gb3Tk0K28N4/STm5tbVxocI/AAAAAAAAAHY/aIE9mW6UZT4/2008-12-05_1235_thumb.png" width="244" border="0" /></a></p> <p>Interestingly enough, the Reporting Services link takes to you to the Properties tab of the top-level folder rather than the folder for the team project.  Strange...</p> <p>jb</p> trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com1tag:blogger.com,1999:blog-3051214954279079307.post-20113215052813000322008-11-28T09:27:00.002-06:002008-11-28T09:29:00.873-06:00The Dreaded System Health Check<p>Just behind the "progress-bar-almost-at-the-end-when-an-error-message-pops-up-and-the-whole-damn-thing-rolls-back" scenario, one of the most dreaded aspects of an installation of Team Foundation Server is the System Health Check: another progress bar followed by The Red X of Doom, The Yellow Triangle of Worry, or—if you’re lucky—The Green Check of Bliss. In case you’re wondering just what exactly the System Health Check is checking, there’s a nice little XML file in the AT folder on the installation media called hcpackage.xml. This file contains all of the warning messages along with the associated WMI queries. The queries include checks for processor speed, available disk space, and the version of SQL Server you are using, among other things. They even tag the issues with codes for the applicable scenarios such as a single-server or dual-server or even a build machine. It's pretty enlightening so give it a look if having trouble with that System Health Check.</p> <p><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/hcpackage.xml" target="_blank">hcpackage.xml</a></p> <p>jb</p>trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-47922220153812917152008-10-27T12:40:00.002-05:002009-04-06T14:00:12.885-05:00New Visual Studio 2010 CTPMicrosoft just released a new <a href="https://connect.microsoft.com/VisualStudio/content/content.aspx?ContentID=9790">CTP of Rosario</a>, now officially known as Visual Studio Team System 2010. It comes in 11 (!) parts so you'll either want to use <a href="http://www.mozilla.com/firefox/">Firefox</a> or <a href="http://www.freedownloadmanager.org/">Free Download Manager</a> or some other utility to get it. Enjoy!<br /><br />UPDATE: Jeff Beehler (same initials!) has <a href="http://blogs.msdn.com/jeffbe/archive/2008/10/27/check-out-the-new-team-system-2010-ctp.aspx">posted a great rundown</a> of the new walkthroughs in this CTP.<br /><p></p><p>jb<span style="text-decoration: underline;"></span><a href="https://connect.microsoft.com/VisualStudio/content/content.aspx?ContentID=9790"></a></p>trievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-25436303981698496582008-10-27T08:25:00.004-05:002008-10-27T13:21:25.989-05:00Not @ PDC 2008?If you're like me, you're probably not at Microsoft's <a href="http://microsoftpdc.com/">Professional Developers Conference</a> (PDC2008) in LA right now. Fear not! There are options for virtual attendance! Free! Just in the last 24 hours I've seen tons of content out there available to the masses.<br /><br />Check out the <a href="http://twitter.com/MicrosoftVSTS">MicrosoftVSTS</a> feed on Twitter for some official tweets including quotes from some of the panel discussions. It's like you're there!<br /><br />A group called NotAtPDC has started up with a variety content mediums including a <a href="http://notatpdc.com/">website</a>, a <a href="http://twitter.com/NotAtPDC">Twitter feed</a>, and a <a href="http://www.new.facebook.com/home.php#/group.php?gid=98022630003">Facebook group</a>. Thanks to them, I learned about the new <a href="http://blogs.msdn.com/sayanghosh/archive/2008/10/26/new-net-logo.aspx">.NET logo</a>! Nice!<br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-8261682461477038592008-10-13T10:55:00.003-05:002008-10-14T08:29:24.600-05:00TF30063: You are not authorized to access...Ever try to delete a team project and get the above message? Are you in the Team Foundation Administrators group and scratching your head? I thought TFS admins could do everything! So I finally decided to get a clear understanding of the root cause of this problem.<br /><br />The resolution is simple: add your account to the site collection administrators for the SharePoint project portal (<a href="http://social.msdn.microsoft.com/Forums/en-US/tfsadmin/thread/b5e6a42a-dc22-499c-97e0-4fe5b563d49a/">described here</a>). You can also do this as a Farm Administrator under the Application Management section in Central Administration. Hopefully, as a TFS admin, you've been added to the Farm Administrators group in SharePoint. The nice thing about the Farm Admins group is that it supports AD groups. The site collection administrators, however, does not. From Central Administration, you can specify a primary and secondary site collection administrator. Within the settings for the project portal site, you specify additional users, but you cannot specify groups.<br /><br />Why can't Farm Administrators admin site collections by default? That's just the way it is. TechNet has a <a href="http://technet.microsoft.com/en-us/library/cc288186.aspx">great article</a> describing how SharePoint security works. The key content is as follows:<br /><blockquote>"Members of the Farm Administrators group have no administrative access to <span style="font-style: italic;">individual sites or their content</span> by default. However, they can take control of a specific site collection to view any content. For example, if a site collection administrator leaves the organization and a new administrator must be added, farm administrators can add themselves as site collection administrators, which action is recorded in the audit logs."<br /></blockquote>So there it is. In short, the <a href="http://msdn.microsoft.com/en-us/library/ms181482.aspx">MSDN entry on TFSDeleteProject</a> should include a prerequisite step to make sure you have site collection administrator permissions before running the command.<br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com1tag:blogger.com,1999:blog-3051214954279079307.post-11999521112525856662008-10-07T17:08:00.039-05:002008-10-14T08:28:45.779-05:00New MSBuild Extension Pack<a href="http://blogs.msdn.com/bharry/archive/2008/10/07/msbuild-extension-pack.aspx">Brian Harry posted today</a> about a new MSBuild Extension Pack project on <a href="http://www.codeplex.com/MSBuildExtensionPack">CodePlex</a>. I figured this would be a good opportunity to demonstrate how you can use it to version the assemblies in your builds. Here are the steps for setting up assembly versioning for your builds using the MSBuild Extension Pack.<br /><br />1. Download and install the <a href="http://www.codeplex.com/MSBuildExtensionPack/Release/ProjectReleases.aspx?ReleaseId=18025#ReleaseFiles">MSBuild Extension Pack</a> on your build machine(s).<br />2. Create a base target file with the following XML:<br /><br /><div style="padding: 4px; overflow: auto; height: 300px; font-family: courier; font-size: 10px; text-align: left;"><?xml version="1.0" encoding="utf-8"?><br /><Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ><br /><Import Project="$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.ExtensionPack.tasks" /><br /><br /><!-- ASSEMBLY VERSIONING --><br /><PropertyGroup><br /><AssemblyMajor>1</AssemblyMajor><br /><AssemblyMinor>0</AssemblyMinor><br /></PropertyGroup><br /><br /><Target Name="GenerateAssemblyVersion"><br /><!-- Get a version number based on the elapsed days since a given date --><br /><!--TfsVersion TaskAction="GetVersion" BuildName="$(BuildDefinition)" TfsBuildNumber="$(BuildNumber)" VersionFormat="Elapsed" StartDate="17 Nov 1976" PaddingCount="4" PaddingDigit="1" Major="$(AssemblyMajor)" Minor="$(AssemblyMinor)"><br /><Output TaskParameter="Version" PropertyName="AssemblyVersion" /><br /></TfsVersion--><br /><!-- Get a version number based on the format of a given datetime --><br /><TfsVersion TaskAction="GetVersion" BuildName="$(BuildDefinition)" TfsBuildNumber="$(BuildNumber)" VersionFormat="DateTime" DateFormat="MMdd" PaddingCount="5" PaddingDigit="1" Major="$(AssemblyMajor)" Minor="$(AssemblyMinor)"><br /><Output TaskParameter="Version" PropertyName="AssemblyVersion" /><br /></TfsVersion><br /><Message Text="New Version is $(AssemblyVersion)" /><br /></Target><br /><br /><Target Name="VersionAssemblies"><br /><!-- Run the CreateItem task to populate the group after the source code has been downloaded. --><br /><CreateItem Include="$(SolutionRoot)\**\AssemblyInfo.cs"><br /><Output TaskParameter="Include" ItemName="FilesToVersion" /><br /></CreateItem><br /><!-- Set the version in a collection of files --><br /><TfsVersion TaskAction="SetVersion" SetAssemblyVersion="true" Files="%(FilesToVersion.Identity)" Version="$(AssemblyVersion)" /><br /></Target><br /></Project></div><br />3. Save the file and copy it out to the MSBuild directory under Program Files on your build machine(s).<br /><br />The <span style="font-style: italic;">GenerateAssemblyVersion </span>target shows a couple of ways to use the <span style="font-style: italic;">GetVersion </span>action of the <span style="font-style: italic;">TfsVersion </span>task to generate different assembly version formats. The task has several attributes that allow you to customize the format to fit your needs. Check out the help file included with the MSBuild Extension Pack installation for more details.<br /><br />To actually use this functionality in your builds, just add the following XML to your TFSBuild.proj files.<br /><br /><div style="padding: 4px; overflow: auto; height: 200px; font-family: courier; font-size: 10px; text-align: left;"><Import Project="$(MSBuildExtensionsPath)\My.TeamFoundation.Build.targets" /><br /><br /><PropertyGroup><br /><AssemblyMajor>3</AssemblyMajor><br /><AssemblyMinor>5</AssemblyMinor><br /></PropertyGroup><br /><br /><Target Name="AfterGet"><br /><CallTarget Targets="GenerateAssemblyVersion;VersionAssemblies" /><br /></Target></div><br />Here, you override the base values of the <span style="font-style: italic;">AssemblyMajor</span><span style="font-style: italic;"> </span>and <span style="font-style: italic;">AssemblyMinor</span><span style="font-style: italic;"> </span>properties from your base target file. In addition, you're overriding the built-in <span style="font-style: italic;">AfterGet</span><span style="font-style: italic;"> </span>target that is part of Team Build to call the custom targets in your base target file. This keeps the amount of duplicated MSBuild script very low.<br /><br />UPDATE: <a href="http://freetodev.spaces.live.com/blog/cns%21EC3C8F2028D842D5%21404.entry?wa=wsignin1.0">Mike Fourie has a great post</a> on some additional things you should consider when setting up assembly versioning in your builds. Of note is the separation of the <span style="font-style: italic;">AssemblyVersion</span> and <span style="font-style: italic;">AssemblyFileVersion</span> attributes when working with strong-named assemblies.<br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-57136247773777471282008-09-29T22:11:00.009-05:002008-10-09T14:00:02.203-05:00Tips for Setting Up TFS with SSLI recently made it through the process of enabling SSL on a TFS instance. Every component is communicating securely now including the build agent and SharePoint Central Administration. It wasn't easy, though. The <a href="http://msdn.microsoft.com/en-us/library/aa833873.aspx">MSDN walkthrough of the process</a> is missing some steps. If you're having trouble configuring your environment to use HTTPS, check out the following tips and lessons learned.<br /><ul><li>If your certificates are issued used a fully-qualified domain name (FQDN), you must specify the secure URLs using the FQDNs.<br /></li><li>As you go through the process, verify the individual components of TFS are functioning correctly using HTTPS both on the several AND externally. If Reporting Services isn't working, TFS doesn't have a chance. The walkthrough gets this out of order, having you reconfigure RS after reconfiguring the team projects and TFS connections. If something went wrong, now you're pointed to an RS instance that doesn't work. Get RS configured to require SSL and test it using the Report Manager web interface. The same goes for SharePoint. Make sure you can access any existing team sites via SSL as well as create standalone sites under the TFS site collection.<br /></li><li>SharePoint will continue to redirect from secure communications to good ole vanilla HTTP unless Alternate Access Mappings have been created. These can be set up within SharePoint Central Administration. Just go to the Operations tab and click on Alternate Access Mappings under the Global Configuration section. Add internal Intranet URLs for the Default Web Site as well as the Central Administration site.</li></ul><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Gb3Tk0K28N4/SOvak_ODOAI/AAAAAAAAAB0/v7TTTPlSSJo/s1600-h/b5aba798-4f98-45d3-81e9-eff6aa04b1a1.png"><img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Gb3Tk0K28N4/SOvak_ODOAI/AAAAAAAAAB0/v7TTTPlSSJo/s320/b5aba798-4f98-45d3-81e9-eff6aa04b1a1.png" alt="" id="BLOGGER_PHOTO_ID_5254533719238326274" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Gb3Tk0K28N4/SOvbM1TNJfI/AAAAAAAAAB8/PEyqaMX2TxY/s1600-h/621fa32c-c339-4e18-a744-ef678d4d3909.png"><img style="cursor: pointer;" src="http://2.bp.blogspot.com/_Gb3Tk0K28N4/SOvbM1TNJfI/AAAAAAAAAB8/PEyqaMX2TxY/s320/621fa32c-c339-4e18-a744-ef678d4d3909.png" alt="" id="BLOGGER_PHOTO_ID_5254534403770361330" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Gb3Tk0K28N4/SOvbNEEtkII/AAAAAAAAACE/VIJ4antrkaQ/s1600-h/109b35c1-bf32-4ed0-82ec-987b3dd90688.png"><img style="cursor: pointer;" src="http://3.bp.blogspot.com/_Gb3Tk0K28N4/SOvbNEEtkII/AAAAAAAAACE/VIJ4antrkaQ/s320/109b35c1-bf32-4ed0-82ec-987b3dd90688.png" alt="" id="BLOGGER_PHOTO_ID_5254534407736103042" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Gb3Tk0K28N4/SOvbNS4mvlI/AAAAAAAAACM/xGLt0lr1Lk4/s1600-h/033cd9ed-40ef-4e01-b0ad-43e3ea7a9bc5.png"><img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Gb3Tk0K28N4/SOvbNS4mvlI/AAAAAAAAACM/xGLt0lr1Lk4/s320/033cd9ed-40ef-4e01-b0ad-43e3ea7a9bc5.png" alt="" id="BLOGGER_PHOTO_ID_5254534411711856210" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Gb3Tk0K28N4/SOvbNqS9zgI/AAAAAAAAACU/8lHGhnpuDUM/s1600-h/32316ff2-a5fd-4545-8ec0-76e939af4f92.png"><img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Gb3Tk0K28N4/SOvbNqS9zgI/AAAAAAAAACU/8lHGhnpuDUM/s320/32316ff2-a5fd-4545-8ec0-76e939af4f92.png" alt="" id="BLOGGER_PHOTO_ID_5254534417996434946" border="0" /></a><br /><ul><li>You'll need a separate certificate for each build machine. You cannot use the same certificate used on the application tier machine. A build machine can still support multiple secure build agents with one certificate, as well.</li></ul>Hopefully, these tips will help you get your TFS environment running securely. If anyone has other lessons learned from their experience with setting up TFS over HTTPS, let me know and I'll update this post.<br /><br />UPDATE: The TFS global support team has posted an entry on their blog with an <a href="http://blogs.msdn.com/dstfs/archive/2008/10/03/setting-up-team-foundation-server-2008-for-https-ssl.aspx">updated walkthrough</a> for setting up TFS for HTTPS / SSL. It's funny knowing that my experiences at a recent client precipitated this update.<br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-46684868281269127662008-09-25T14:39:00.003-05:002008-10-08T13:45:00.402-05:00Task Board for Team System Beta 3 AvailableConchango released a new beta of Task Board for Team System yesterday. If you're not a beta tester yet, you can <a href="http://scrumforteamsystem.com/en/TaskBoardBeta/Default.aspx">register here</a>.<br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-60727411689303232922008-09-24T06:24:00.003-05:002008-10-08T14:01:21.661-05:00Team Foundation Server Performance TuningJust yesterday I heard some people complaining about Visual Studio's start up time in relation to service packs being applied. Now this morning, along comes <a href="http://www.woodwardweb.com">Martin Woodward</a> with a most excellent post about a <a href="http://www.woodwardweb.com/vsts/filtering_wit_c.html">new feature</a> in SP1 that should help alleviate that pain point in shops using Team Foundation Server 2008. Thanks, Martin!<br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-33563255640533731882008-09-23T21:54:00.005-05:002008-09-24T15:20:42.343-05:00SQL Server Version ReferenceI had trouble recently finding a definitive listing of all the versions of SQL Server with their corresponding descriptions. The @@version function provides this information but for a comprehensive list check out the following links. I got them from my good buddy Paul Silvey. Thanks, Paul!<br /><br /><a href="http://support.microsoft.com/kb/321185">http://support.microsoft.com/kb/321185</a><br /><br /><a href="http://www.krell-software.com/mssql-builds.asp">http://www.krell-software.com/mssql-builds.asp</a><br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-16650614555149722372008-09-23T21:44:00.010-05:002008-10-13T11:55:01.969-05:00Team System Web Access Agile State DiagramsHere are the Team System Web Access state diagrams for the MSF for Agile work item types. Enjoy!<br /><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/Agile%20Bug%20States.png">Agile Bug States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/Agile%20QoS%20States.png">Agile QoS States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/Agile%20Risk%20States.png">Agile Risk States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/Agile%20Scenario%20States.png">Agile Scenario States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/Agile%20Task%20States.png">Agile Task States.png</a><br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0tag:blogger.com,1999:blog-3051214954279079307.post-18296171676363500442008-09-23T09:40:00.016-05:002008-10-13T11:58:55.854-05:00Team System Web Access CMMI State DiagramsI really love the state diagrams that Team System Web Access generates for the various work item types in the process template. They're kind of difficult to access without either viewing or creating a work item. To that end, I've saved off the images and uploaded them to my SkyDrive. I'm providing links to the pictures for my own use as well as the community's. Here are the diagrams for the MSF for CMMI work item types. Enjoy!<br /><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/CMMI%20Bug%20States.png">CMMI Bug States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/CMMI%20Change%20Request%20States.png">CMMI Change Request States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/CMMI%20Issue%20States.png">CMMI Issue States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/CMMI%20Requirement%20States.png">CMMI Requirement States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/CMMI%20Review%20States.png">CMMI Review States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/CMMI%20Risk%20States.png">CMMI Risk States.png</a><br /><a href="http://cid-99639d43d55d7167.skydrive.live.com/self.aspx/Public/TSWA%20State%20Diagrams/CMMI%20Task%20States.png">CMMI Task States.png</a><br /><br />jbtrievangelisthttp://www.blogger.com/profile/08975795253768833968noreply@blogger.com0