The Ramblings of Two Microsoft .NET Developers, TFS, and Visual Studio ALM Guys --- "Yes, we are both named Ed."

Replacing Compare and Diff Tools for TFS Version Control



Even though the TFS product team is planning to completely replace the awful source compare experience in the next version of TFS, I need something for use with prior versions of Visual Studio including Visual Studio 2010.  The new version inside of Visual Studio 11 is pretty awesome.  I have actually decided on Code Compare Pro by Devart for my legacy versions.  They have both a free version and a Pro version that includes a 30-day trial.

During the installation, you can specify whether you want to integrate Code Compare with the TFS tools and when you do that, it adds the relevant settings automatically to your Visual Studio options for TFS Version Control.  That’s classy and a nice touch for the installer.  BTW – this is the exact way you would do this manually if you have a different compare tool that you like better.  There are plenty out there…

Code Compare Options Set for Compare and Merge in TFS for Visual Studio Options Dialog

This now allows you to use your new specified tool anytime you would do a compare or merge operation even from the Windows Explorer Shell Extensions plug-in from the TFS Power Tools.  It will even allow for a three-way merge & diff experience which can be quite helpful at times if you are in need of it.

Code Compare Pro Compare Diff with TFS Version Control

Ed Blankenship



Integrating Red Gate SmartAssembly Into TFS 2010 Build



Updates – I plan on making updates to this blog article from time to time as I learn more and changes are made to TFS & SmartAssembly to smooth out some of the rough edges.  Come back again for the latest & greatest!

I really like tools that provide assistance with the release management & maintenance cycles of ALM.  I think some of the features really add a particular shine to your application.  It’s something that I’m currently writing an article about but I wanted to share how to integrate one of those tools into your Team Foundation Server 2010 Build Process.  This first tool to be reviewed is Red Gate’s SmartAssembly product.Red Gate SmartAssembly

SmartAssembly is a product that can help you out with obfuscation if you need it but I primarily want to focus on two of its other major features:

  • Automated Error Reporting – When an exception occurs, the end user can be prompted to send back the exception details so that the development team can review those details.  This can also work with server-side & web applications without requiring end user prompting.
  • Feature Usage Reporting – This is essentially telemetry for your application to figure out how your users are using the application so that you can make good decisions in the future about where to invest for future releases.  It does this by sending back anonymous data for users who opt-in at runtime.  It will even automatically send back data about the machine the software is being run like the operating system.  This can be extremely useful data to product managers.

You don’t have to worry about any of the details because once you run your assemblies through SmartAssembly, it instruments all of the necessary functionality automatically for you.  If you acquire the Professional edition, you can customize the reporting experience including the ability to host your own web server to accept the error & feature usage reports.

Aside:  Too many teams & companies have blindly adopted obfuscation for their assemblies in the past without taking into consideration the true “total cost” of obfuscating your applications.  I’m all for obfuscation where it makes sense to protect IP as long as the value of the protection of that IP is worth more than the extra cost, resources, and maintenance complexity to truly support an obfuscated product.  Each team & company is going to have to make that decision based on the resources available and the value of the IP to be protected  – just don’t go into it blindly.

FYI – PreEmptive’s Dotfuscator tool is a competing product line with a similar feature set that I hope to be covering in a future blog post.

Ignoring obfuscation, these two features are absolutely great for gaining visibility about your application once it has been released.  For all of those teams that aren’t traditional software vendors but building applications for internal use, these are great features for those applications as well.  Software engineering teams building internal applications are very much in need of the same type of information as ISVs about how their internal “customers” are interacting with their applications.  Internal applications don’t necessarily need obfuscation but they can definitely benefit from automated error & feature usage reporting!

One part that I absolutely love about SmartAssembly is that even though the tool instruments and changes your assembly, it also provides the ability to produce a set of matching symbols (.PDBs) that are extremely important for several scenarios in TFS, the Visual Studio ALM family of tools, as well as basic debugging.

I am going to be spending some time in this blog article to walkthrough how to integrate SmartAssembly into your automated TFS build process so that your teams can take advantage of these features.  I am going to take the approach of not creating any custom workflow activities for this particular effort.  Jim Lamb has a good discussion about when to make customizations to the MSBuild file (essentially the Visual Studio project file) and when to make your customizations in the Windows Workflow-based build process template.  As much as I very much prefer customizing my build process templates using custom workflow activities, in this case I choose to do a little customization of both without using any custom workflow activities.  I would much rather have done this using only native Windows Workflow activities but I’ll talk more about that a little later.

Disclaimer:  As a Microsoft MVP, I have been a part of the Friends of Red Gate group for the last four years and I have been provided Not For Resale licenses of the Red Gate family of products though I reserve the right to offer unbiased opinions and criticisms.  I was not paid for these contributions.  However, I may or may not get a complimentary round the next time I see the Red Gaters at the pub in Cambridge. Smile

Works on My Machine LogoWorks on My Machine Disclaimer:  Everything in this blog article works on my machine when I wrote it.  I have the latest version of SmartAssembly and TFS 2010 installed & configured correctly.  I’ve done my best to make this as reusable as possible for most team’s scenarios but I can’t tell you that it will work for you.  Hopefully it gets you started on the right path though!  Please don’t contact me and let me know that my code killed your cat.  I feel for you… I do – I just can’t do anything about it.  You’ve been warned.  I take the same approach that Scott does with blog contributions.

Configuring SmartAssembly for Team Use

SmartAssembly has actually been designed out of the box to handle the single-developer team scenario.  If you are using TFS, you are likely not a single-developer team so you’ll want to a few things to get SmartAssembly setup for use with a team.  The architecture for SmartAssembly can best be described with this architecture diagram:

Smart Assembly Architecture Diagram
Sourcehttp://www.red-gate.com/products/dotnet-development/smartassembly/team-package

You’ll need to get the Professional edition of SmartAssembly since it allows you to store everything in a shared SQL Server database.  One nice thing is that each developer who will need to interact with error & feature usage reports only needs a Developer edition license instead of a full Professional edition license.  You’ll need to install & configure the Professional edition on each of your build servers.  You might as well go ahead and create a build agent tag called “SmartAssembly” to indicate which build agents in your build farm are hosted on servers that have SmartAssembly installed.

When you first start SmartAssembly, you will want to setup the desktop machines & build servers to use the same SQL connection settings for the shared SmartAssembly database.  I even like to use the friendly TFS DNS names that I already have setup for my particular TFS environment.  Remember that if you are using the limited use license of SQL that is included with TFS, you won’t be able to house the SmartAssembly database on that instance.  You’ll need to purchase a legitimate SQL Server license.  It’s a great time to upgrade to the SQL Enterprise edition if you can for TFS!  TFS will definitely take advantage of several of the features.

It is pretty easy to setup from there:

Configuring SmartAssembly Database Connection 

Be sure to also indicate that you want to use relative paths.  Relative paths will be very important when you are using it in a team environment with Team Foundation Server.

BTW, if you need to setup SmartAssembly to use SQL Authentication instead of Windows Authentication, you can do that using this particular article. You do this by basically updating the settings configuration file available on a Windows 7 machine at C:\ProgramData\Red Gate\SmartAssembly\SmartAssembly.settings.

Creating & Storing the SmartAssembly Configuration File in Version Control

I am going to make this easy by just using a quick Windows Forms application however you are able to process any type of assembly including Silverlight apps, ASP.NET web applications, class libraries, etc. using SmartAssembly.

You will want to compile your assembly at least once and then start a new SmartAssembly project.  It actually doesn’t matter where the source & destination location of the assembly is set to in the configuration but you might want to pick a location that all of the developers will be using.  Don’t worry about the build server locations because we will override those later in the build process!  To keep it simple, I’m only going to enable the following features in my SmartAssembly configuration file:

  • Automated Error Reporting,
  • Feature Usage Reporting, and
  • Generate Debugging Information

You can research more on the other options that are available but I am going to keep this walkthrough very simple.  Once you are satisfied with your settings, click the “Save As…” button and save the configuration file in the same folder as your Visual Studio project file.  I even like to include the file in my Visual Studio project so that I can work with it and check it into the version control repository along with the rest of my project.  The SmartAssembly configuration file has a “.saproj” file extension.

Visual Studio Project with Smart Assembly Configuration File

The next thing you might want to do is open the configuration file using the XML Editor in Visual Studio to verify all of the settings look correct. You can use the “Open With…” context menu command from the Solution Explorer window to help you out.

Using the Open With Command in Visual Studio Solution Explorer

The main thing you want to do is be very mindful of using relative file paths everywhere in the configuration file since the location of the source code location changes on the build server & developer machines.  For example, TFS Build allows you to have multiple build agents running on any build server.  I might have three build agents on a build server which means three builds could be running at any given time on the build server.  You isolate each build agent on a build server by setting the working directory to something that will be a unique value.  The default setting is $(SystemDrive)\Builds\$(BuildAgentId)\$(BuildDefinitionName) but I usually change it to $(SystemDrive)\Builds\$(BuildAgentId)\$(BuildDefinitionId) to give me a few extra characters since we also have path length limitations to go up against.

SNAGHTML5088658

Defining Custom MSBuild Properties

At this point, we are going to define a few custom MSBuild properties that we are going to use to trigger the SmartAssembly functionality.  The table lists the properties I am going to define in this process.

Property Name Value(s) Description
TfsBuild True, False Indicates whether this build is occurring using TFS.
RunSmartAssembly True, False Indicates whether the SmartAssembly processing should occur after compilation.
SmartAssemblyConfigurationFileRelativePath <Relative File Path> Stores the relative path location to the .saproj configuration file for the project.

Modifying the Visual Studio Project Files

For many of the common project types, Visual Studio project files are in fact actually MSBuild scripts under the covers.  What we are going to do is add some custom functionality at the end of the project file that we will later “turn on” during the build process.  You could modify this so that you could “turn on” the functionality at development time locally but this additional script excerpt will leave it turned off during normal development.

To edit a Visual Studio Project file, you can “unload” the project from the context menu in Solution Explorer and then double-click it to open it in a new editor document window.  You will add the following excerpt close to the bottom of your Visual Studio project file just before the final </Project> ending tag. In my case it is a .csproj file.

<!-- Red Gate SmartAssembly Custom Post-Compile Processing for TFS Builds -->
<UsingTask TaskName="SmartAssembly.MSBuild.Tasks.Build" AssemblyName="SmartAssembly.MSBuild.Tasks, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7f465a1c156d4d57" Condition="'$(TfsBuild)' == 'True' and '$(RunSmartAssembly)' == 'True'" />
<PropertyGroup Condition="'$(TfsBuild)' == 'True' and '$(RunSmartAssembly)' == 'True'">
  <!-- Uncomment this next line if the configuration file is not located in the same directory and uses the same name as the project. -->
  <!--<SmartAssemblyConfigurationFileRelativePath>SmartAssemblyConfigurationFileName.saproj</SmartAssemblyConfigurationFileRelativePath>-->
  <!-- This will set the default name of the configuration file to the same name as the project name if the property is not defined elsewhere. -->
  <SmartAssemblyConfigurationFileRelativePath Condition="'$(SmartAssemblyConfigurationFileRelativePath)' == ''">$(ProjectName).saproj</SmartAssemblyConfigurationFileRelativePath>
</PropertyGroup>
<Target Name="AfterBuild" Condition="'$(TfsBuild)' == 'True' and '$(RunSmartAssembly)' == 'True'">
  <!-- Archiving the original compiled assembly and matching debugging symbols file. -->
  <Message Text="Archiving the original compiled assembly and matching debugging symbols file." />
  <Copy SourceFiles="@(_DebugSymbolsOutputPath)" DestinationFolder="$(OutDir)Original" Condition="'$(_DebugSymbolsProduced)' == 'true' and '$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)' != 'true'" />
  <Copy SourceFiles="@(MainAssembly)" DestinationFolder="$(OutDir)Original" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)' != 'true'" />
  <!-- Process Assembly through SmartAssembly -->
  <SmartAssembly.MSBuild.Tasks.Build ProjectFile="$(SmartAssemblyConfigurationFileRelativePath)" Input="@(MainAssembly)" Output="@(MainAssembly)" OverwriteAssembly="True" />
</Target>

It is a modified version of the snippet from the SmartAssembly help documentation for integrating with MSBuild:  http://www.red-gate.com/supportcenter/Content/SmartAssembly/help/6.5/SA_UsingSmartAssemblyWithMSBuild.  You’ll see a little later where we are going to “turn on” the functionality by editing the TFS build process template.  If you named your configuration file the same name as the project name and stored it in the same location in version control you actually don’t need to modify anything in the snippet at all.

Notice that the snippet keeps the original copies of the assemblies and matching symbols (.PDB) file so that they later get copied to the TFS build’s drop folder.  It is copying the original assembly and matching symbols into another subdirectory named “Original” instead of just outputting the SmartAssembly instrumented assembly & matching symbols to a subfolder called “Obfuscated”, “Instrumented”, or “Protected.”  I used to use the latter approach (as some people suggest) but if you are also compiling installers, it is useful to create an installer during specific builds that include the original assemblies instead of the instrumented ones.  In my installer definition (like a WiX file) I’ll just refer to the regular location and it will pickup whatever version the build process created.  If I want an installer to have the original assemblies then I just queue a new build and will set the SmartAssembly process parameter to false for that build.  I don’t have to do anything additional in my WiX definition files to handle this scenario. 

Another side effect you get by using this approach is that if your build process runs any automated tests, static code analysis, test impact analysis, etc., then it will use the instrumented versions of the assemblies as the target of the tests and other post-processing tools!  There are several ways to skin this particular cat but I have fallen back to this approach after a few years of dealing with these issues.

Modifying the Build Process Template in Windows Workflow Foundation

Technically, we could just hard-code the extra MSBuild process parameters that we need using the default TFS build process template on the Process tab of the build definition editor window:

Setting Additional MSBuild Property Values in TFS 2010 Build Definition Editor

If you are okay with this approach then you don’t really need to go any further.  However, we could make this a richer experience for people who will edit and queue these builds from day to day.  This is where we can go through and create a custom process template.

The first thing you will want to do is create a new build process template to start your customizations.  I have included mine for download at the end of this blog post but you may want to walk along.  I usually start by creating a copy of the default build process template available from TFS.  If you aren’t familiar with the basics of this particular process, I would highly suggest going through the walkthrough in either of these books:

You can then change your build definition over to the newly copied build process template using the following combo box.

Selecting a New TFS Build Process Template

If you click on the hyperlink, it will take you to the location in Source Control Explorer where you can get the latest version into your workspace and then open the build process template file for editing in the Windows Workflow Foundation Designer.

Defining Build Definition Process Parameters

The first thing we can do is specify a new build process parameter that is exposed to the end user of the builds by going to the “Arguments” tab in the lower left-hand corner of the Workflow designer.

Arguments Tab for Windows Workflow Designer

I am going to create a Boolean process parameter simply named “RunSmartAssembly” and set the default value to False.  This isn’t an MSBuild property but a workflow process parameter that will be exposed to the end user when they are queuing a new build or when editing the build definition.

Creating New TFS Build Process Parameter

This next step is just to make things that much nicer.  We can give the TFS Build system some additional metadata to make sure the parameter is exposed to the end user in a nice fashion.  There are more details about the process parameter metadata field in either of the book chapters mentioned above in case you would like to learn more!  You edit the collection information for the Metadata parameter that is already defined in the default build process template.  (It’s two above the parameter we created in the previous screenshot.)  Just click the ellipsis button in the default value field column to open up the metadata editor window.

TFS Build Process Parameter Metadata Editor

Fill out the details as indicated above and save your build process template. You won’t see the changes immediately if you were to go back to the build definition editor because we haven’t checked-in the build process template back to the version control repository yet.

Verify SmartAssembly is Installed on Build Server

Whenever I architect a build that requires the use of a custom tool and it isn’t stored in version control (or even if it is but someone forgot to add that workspace mapping) I usually want to add a check in the build process to make sure that the tools are actually available to the build server.  If the check doesn’t locate the tool I have it give a nice build error.

Add an If workflow activity inside the Build Agent Scope activity (labeled “Run on Agent”) but before the section that starts the compilation.  It doesn’t exactly matter where as long as you get them in the agent scope but before any type of compilation begins.  I am going to set my condition to something like the following:

RunSmartAssembly AndAlso Not System.IO.File.Exists(String.Format("{0}\{1}\{2}", Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Red Gate\SmartAssembly 6", "SmartAssembly.exe"))

You can then add a Write Build Error activity with an appropriate message to indicate that SmartAssembly was not found.  It should look something along the lines of this following example.

Verifying SmartAssembly is Installed on TFS Build Server

Appending Additional MSBuild Properties

We can now work on passing in the additional MSBuild properties.  I’m going to do this in two steps.  The first step is to append the TfsBuild MSBuild property to the pre-defined workflow variable that is used for this purpose named MSBuildArguments.  I’m going to do this immediately after the workflow activities we added for the previous step using another native primitive workflow activity:  Assign.  It’s a super simple activity that is great for this particular purpose.  The assignment expression that I am going to use for the Value parameter is:

String.Format("{0} {1}", MSBuildArguments, " /p:TfsBuild=True")

image

After that, we will add another If activity where the conditional will be set to the RunSmartAssembly workflow parameter we created earlier.  We will also add add another Assign activity and append our remaining MSBuild property to pass into the compilation process.  You can use this assignment expression for the Value parameter of the Assign activity:

String.Format("{0} {1}", MSBuildArguments, " /p:RunSmartAssembly=True")

The final sequence looks similar to the following screenshot.

image

You may be asking “Why did we define the $(TfsBuild) MSBuild property when we could have just used the $(RunSmartAssembly) property?” That’s a great question… You don’t need it if you aren’t going to do any additional customization. However, in general, I like to always define the $(TfsBuild) MSBuild property so that you could customize the project files to modify the conditions based on whether it is occurring during a TFS Build or if it’s occurring on a developer’s machine. It’s quite handy when you need it.

Notice that we are also performing all of the SmartAssembly processing steps before the Source Server Indexing and Symbol Server Publishing phase of the build process so that both the original symbols and the symbols that match the instrumented assemblies are published correctly to Symbol Server and have the appropriate indexing for Source Server support included in those symbols.  That will be extremely useful later whenever you need to debug against either the original or instrumented assemblies in the future.  You can also open IntelliTrace log files & take advantage of Test Impact Analysis if you keep obfuscation turned off in the SmartAssembly configuration.

Finale

That’s it!  Just save the changes to your build process template and check the file into the version control repository so it can now be used by your build definitions.  Be sure to set your new custom workflow parameter to True and then queue a new build!

Setting Custom SmartAssembly Process Parameter

You’ll now notice that it runs correctly even if you have defined for your build process to compile multiple build configurations (i.e. Debug | x86, Release | AnyCPU, etc.)

Potential Improvement Areas

  • Licensing & Activation for Build Servers – Unfortunately, the way SmartAssembly is licensed you have to purchase a license for each of the build servers you might have and activate the software on those build servers.  The accompanying side effect is that the developer licenses are cheaper.
    This can be problematic in a TFS environment where you might have a build farm that has one build controller with 20 build servers that have three agents on each of those build servers.  It’s not that SmartAssembly would be used at the same time on all 60 of those build agents but you also don’t know which build agent will be reserved for a particular build at any given time.  I have resorted to using the build agent tagging feature of TFS Build to handle making sure particular builds only reserve an agent with SmartAssembly configured & activated.  However, this causes a complete underuse of the hardware resources available in a build farm. 
    I would rather tool vendors achieve their revenue targets by increasing the per-user license fee because and specifically for users who benefit from the advantages that the particular tool brings to them. This licensing model if very similar to how the Visual Studio & third-party components licensing model works.  Microsoft and other third-party component vendors give you the ability to install and use the their tools on a build server without charge.
    I consider build agent machines throw-away machines.  They should remain completely clean but don’t need to be backed up or monitored.  I usually will have a virtual machine base image that has everything already installed & ready to go so that I can add/remove to the build farm “pool” as needed.  I even prefer to throw away machines after 30 days and bring new build agents online to ensure the whole build farm is kept as clean as possible.  When you have tools that require activation & licensing, this scenario quickly becomes problematic.  This leads me to another potential area for improvement.
  • Installation on Build Servers – If you know me well, this is a slightly less critical criticism than the first bullet point but also a pretty big pet peeve of mine. Smile  If you make tools, please don’t require them to be installed on the build server. It’s another thing that has to be kept up to date on potentially many machines and in a base system image.  I would rather be able to check them into a known version control folder and then have the build servers download the latest version during the build process.  There is even a supported mechanism in TFS Build that allows the build controllers & agents to watch for custom assemblies & tools and whenever it notices a new version of those assemblies then it gracefully updates all of the machines in the build farm automatically.  This allows team members to focus & introduce changes to the tools using version control instead of having to update the base image of the build server every time there is a new update.
    You also benefit from having full auditing of what exact tools version were used to produce a specific set of assemblies.  That allows you to potentially recreate a build you created a year ago by simply specifying what version of the source code (including build tools) to use during that build process.
  • Native Workflow Activity for TFS 2010 Build Process Templates -  The process I described in this blog article is definitely much more difficult than what it could be.  Instead of introducing customizations in the MSBuild-portion of the TFS build process, I much rather prefer dropping in a native workflow activity after the compilation process.  SmartAssembly unfortunately doesn’t have a custom TFS build workflow activity at this time.  I would love to see one that allowed me to specify multiple assembly inputs for each build configuration that occurs in the build process and then the appropriate SmartAssembly configuration file for each of the assemblies.  You can do some nice things with it to really make this process super easy.
  • Database Endpoint Instead of a Web Service Layer – SmartAssembly requires the entire team to have access to the centralized database to manage the automated error & feature usage reports.  The software makes direct database calls instead of going through a service layer is which is very different from the way that tools built for TFS are designed in general.  This can be problematic especially if you have TFS setup for your team to be able to access remotely over HTTPS (port 443) without the use of a VPN.  Several IT organizations,really don’t want to open their database ports or even give access to production database instances.  My suggestion would be to have an intermediate service layer that can “integrate” with the existing TFS IIS web sites.  This allows the tool’s service layer to piggy back on the existing infrastructure already setup for TFS.  If you have an SSL certificate and HTTPS configured, then you can take advantage of it.  If you have load balancing setup for scalability, then you could potentially leverage that as well!  We did this with our Notion Timesheet for TFS tools and one of the benefits we end up getting is that we are able to access the service layer from anywhere we can access TFS including over the Public Internet.  No worries about giving people access to the SQL Server instance as well.
  • Source Server Support – This isn’t necessarily a TFS-specific topic but really something for anyone using build servers & Source Server indexing.  When you compile on a build server, the location of the source code is included in the symbol information.  Your developers will normally not download the source code to the same location as other developers and particularly not the same location that the build server does since that changes depending on what TFS build agent is used on a build server for any particular TFS build.  Source Server Indexing helps to combat this particular problem by replacing the physical location with the location in the version control repository including the branch and version of the code used.  SmartAssembly has a feature that allows you to review details of stack trace, object values, etc. when you open an error report.  However, it doesn’t use the Source Server information even if it is stored in the symbol files.  This is particularly a problem when you are in a TFS environment and using automated builds.  SmartAssembly just ignores those additional streams in the symbols file.  SmartAssembly should use the Source Server information if it exists in the symbols to pull the appropriate version of source code from the version control repository.  (Red Gate Support Ticket Number:  F0041570)
  • Additional ALM Integration with TFS – There are so many different areas where SmartAssembly could shine if it had some additional ALM-specific integration with TFS!

Download Process Template

If you are interested in downloading the completely customized version of the build process template, I have included a link to it below.

Download SmartAssembly Process Template

 

 

Take care,

Ed Blankenship



Deploying Visual Studio 2008 ClickOnce Projects in TFS 2010 Build



I wanted to wring my hair on this one… but it was actually rather simple to get solved.  I’m helping a customer this week upgrading their server to TFS 2010 from TFS 2008.  They had TFS 2008 builds compiling & publishing Visual Studio 2008 solutions & builds.  When you upgrade to TFS 2010, those existing build definitions will end up using the UpgradeTemplate.xaml build process template in TFS 2010.  Not a problem there.  This customer was not able to upgrade their solutions & projects immediately to Visual Studio 2010 in tandem with the TFS 2010 upgrade.  That should normally not be a problem but having done a few of these upgrades, I know that I usually need to set out some time just to get the existing builds working again.  There’s always something wrong. Smile  Never huge but enough to irritate you after an upgrade.

We went through a few hurdles to get those solutions & projects compiling and then we moved on to the deployment builds.  They seemed to just work which was great!  In their legacy TFSBuild.proj files, they had an entry in the AfterCompile MSBuild target essentially like this:

<MSBuild Projects="$(SolutionRoot)\Branch\ClickOnceProject.csproj" 
Properties="PublishDir=\\FILESERVER\ClickOncePublishPath\;ApplicationVersion=$(VersionNumber);"
Targets="Publish" />

It was great until we went to go actually fire up the app… CRASH!  It is complaining in the ClickOnce deployment log that the deployment manifest wasn’t semantically valid and that the deployment manifest was missing the <compatibleFrameworks> node.  Here’s the full (redcated) log: (emphasis mine)

PLATFORM VERSION INFO
    Windows             : 6.1.7601.65536 (Win32NT)
    Common Language Runtime     : 4.0.30319.239
    System.Deployment.dll         : 4.0.30319.1 (RTMRel.030319-0100)
    clr.dll             : 4.0.30319.239 (RTMGDR.030319-2300)
    dfdll.dll             : 4.0.30319.1 (RTMRel.030319-0100)
    dfshim.dll             : 4.0.31106.0 (Main.031106-0000)

SOURCES
    Deployment url            :
http://webserver/ClickOnceProject.application
                        Server        : Microsoft-IIS/6.0
                        X-Powered-By    : ASP.NET
    Application url            :
http://webserver/Application%20Files/ClickOnceProject_1_1_1_1/ClickOnceProject.exe.manifest
                        Server        : Microsoft-IIS/6.0
                        X-Powered-By    : ASP.NET

IDENTITIES
    Deployment Identity        : PolicyManagement.application, Version=1.11.1026.3, Culture=neutral, PublicKeyToken=3801d6f74f2e8cd7, processorArchitecture=x86
    Application Identity        : PolicyManagement.exe, Version=1.11.1026.3, Culture=neutral, PublicKeyToken=3801d6f74f2e8cd7, processorArchitecture=x86, type=win32

APPLICATION SUMMARY
    * Online only application.
    * Trust url parameter is set.
ERROR SUMMARY
    Below is a summary of the errors, details of these errors are listed later in the log.
    * Activation of http://webserver/ClickOnceProject.application 
resulted in exception. Following failure messages were detected:
        + Deployment manifest is not semantically valid.
        + Deployment manifest is missing <compatibleFrameworks>.

COMPONENT STORE TRANSACTION FAILURE SUMMARY
    No transaction error was detected.

WARNINGS
    There were no warnings during this operation.

OPERATION PROGRESS STATUS
    * [10/26/2011 1:49:41 PM] : Activation of
http://webserver/ClickOnceProject.application has started.
    * [10/26/2011 1:49:42 PM] : Processing of deployment manifest has successfully completed.
    * [10/26/2011 1:49:42 PM] : Installation of the application has started.
    * [10/26/2011 1:49:42 PM] : Processing of application manifest has successfully completed.

ERROR DETAILS
    Following errors were detected during this operation.
    * [10/26/2011 1:49:43 PM] System.Deployment.Application.InvalidDeploymentException (ManifestSemanticValidation)
        - Deployment manifest is not semantically valid.
        - Source: System.Deployment
        - Stack trace:
            at System.Deployment.Application.PlatformDetector.VerifyPlatformDependencies(AssemblyManifest appManifest, AssemblyManifest deployManifest, String tempDir)
            at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
            at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
            at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
            at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
        --- Inner Exception ---
        System.Deployment.Application.InvalidDeploymentException (InvalidManifest)
        - Deployment manifest is missing <compatibleFrameworks>.
        - Source:
        - Stack trace:


COMPONENT STORE TRANSACTION DETAILS
    No transaction information is available.

Now what I remember is that the <compatibleFrameworks> node was actually introduced in the deployment manifests for .NET / ClickOnce 4.0 in Visual Studio 2010 and we shouldn’t be expecting them for Visual Studio 2008 ClickOnce projects.  Sounds like the build process is not picking up the right version.  In the TFS 2010 version of the TeamFoundationBuild.targets file, it handles compilation correctly by setting the appropriate MSBuild tools version number.  Why wasn’t it picking that up for our publish?

Oh yeah… since TFS 2010 build had to specify it for the legacy UpgradeTemplate.xaml and TeamFoundationBuild.targets files, we have to do the same thing.  Duh.  It ended up being an easy fix and we just updated that portion of the legacy TFSBuild.proj build script to explicitly set the MSBuild tools version and pass in the framework version as well for the ClickOnce project.

<MSBuild ToolsVersion="3.5" Projects="$(SolutionRoot)\Branch\ClickOnceProject.csproj"
Properties="ClrVersion=2.0.50727.0;PublishDir=\\FILESERVER\ClickOncePublishPath\;ApplicationVersion=$(VersionNumber);"
Targets="Publish" =""/>

BTW – you can do this in the new Windows Workflow-based build process templates as well but instead you would use the MSBuild workflow activity.

image

However, I would highly suggest upgrading to Visual Studio 2010 when you get a chance since it will handle ClickOnce projects that target .NET 2.0, .NET 3.0, .NET 3.5, and .NET 4.0 seamlessly.

Now that all of the legacy TFS 2008 builds are working in TFS 2010, it’s time to start helping my current customer get their Visual Studio 2008 solutions & projects upgraded to Visual Studio 2010 and leverage the new Windows Workflow-based build process template!

 

Ed Blankenship

Many thanks to Josh Winfree for helping out with the discover of this one!



Free ALM Roadshow Events in 2011



I’m pretty happy to be heading out in a few weeks to lead a few ALM Road Show Events around the US.  There’s actually several more that are going to be led by others on the Imaginet ALM team (Dave McKinstry & Anna Russo) so find one that’s close to you and bring your questions!  I’ll be leading the ALM Road Show events in:

  • Boston, MA
  • Atlanta, GA
  • Dallas, TX
  • Houston, TX

Here’s the full list of the Roadshow Events:

Visual Studio 2010 ALM Tools Live Roadshow
October 27,2011
Microsoft Corporation
St.Louis, MO

Visual Studio 2010 ALM Tools Live Roadshow
October 28, 2011
Microsoft Corporation
Columbus, OH

Visual Studio 2010 ALM Tools Live Roadshow
November 2, 2011
Microsoft Corporation
Salt Lake City/Lehi, UT

Visual Studio 2010 ALM Tools Live Roadshow
November 3, 2011
Microsoft Corporation
Irvine, CA

Visual Studio 2010 ALM Tools Live Roadshow
November 8, 2011
Microsoft Corporation
Presenter:  Ed Blankenship
Waltham, MA

Visual Studio 2010 ALM Tools Live Roadshow
November 9, 2011
Microsoft Corporation
Presenter:  Ed Blankenship
Alpharetta, GA

Visual Studio 2010 ALM Tools Live Roadshow
November 29, 2011
Microsoft Corporation
Presenter:  Ed Blankenship
Dallas/Irving, TX

Visual Studio 2010 ALM Tools Live Roadshow
November 30, 2011
Microsoft Corporation
Denver, CO

Visual Studio 2010 ALM Tools Live Roadshow
December 1, 2011
Microsoft Corporation
Presenter:  Ed Blankenship
Houston, TX

If you can’t visit us at the local ALM Roadshow events, try out some of the ALM Webcasts we are doing!  Dave McKinstry has a full write up of each of them available here:  http://weblogs.asp.net/dmckinstry/archive/2011/10/13/upcoming-free-vs-alm-webcasts.aspx

Test Management in Agile Teams
October 24, 2011
Free Online Workshop
1:00-2:00pm (CST)

Manual Testing in Agile Teams
October 26, 2011
Free Online Workshop
1:00-2:30 (CST)

Testing in an Agile Team
November 1, 2011
Free Online Workshop
1:00-2:30pm (CST)
Automated Load and UI Testing for SharePoint Projects
December 6, 2011
Free Online Workshop
1:00-2:30pm (CST)

Testing with SharePoint Projects
December 12, 2011
Free Online Workshop
1:00-2:30pm (CST)

Using Lab Management with SharePoint Development
December 13, 2011
Free Online Workshop
1:00-2:00pm (CST)
Automated Load and UI Testing for SharePoint Projects
December 20, 2011
Free Online Workshop
1:00-2:30pm (CST)

 

Take care and hope to see you there!

Ed Blankenship

Posted in Community | Speaking | TFS | VSTS


August 2011 – New TFS 2010 Power Tools Released



A new TFS 2010 Power Tools release is now available!  As always, I recommend that all team members (including those with only Team Explorer installed) to have the latest version of the TFS 2010 Power Tools installed.

I won’t go into too many details about all of the new features since Brian Harry has done a great job of explaining each of the new features in the release on his blog.  There are a few that are worth noting though!

One of the new features is “Rollback of a Changeset” in the Team Explorer UI.  You have been able to rollback a changeset in TFS 2010 without the Power Tools but it was something that you had to do from the command-line.  Another handy feature is comparing two build definition’s using the tfpt.exe builddefinition /diff tool that is now available.  You can also use tfpt.exe builddefinition /dump to give you a nice listing of all of a build definition’s details.

If you hated having to uninstall a Power Tools release before you could install a new version in the past, we don’t have to worry about it any longer!  You can now fire up the installer for newer versions and it will upgrade the previous version appropriately.  No excuses now for not having the latest version installed. Smile

For all of those that wished they could just search through some work items, we finally have “the search box” that we have all been waiting for!  Look at the help file (C:\Program Files (x86)\Microsoft Team Foundation Server 2010 Power Tools\Help\WorkItemSearch.mht) for some interesting tricks & tips you can use to make searching for work items quicker for you.

Ed Blankenship

Posted in TFS | Tools | VSTS


Speaking at Austin TFS User Group – Customizing TFS Builds



I’m pretty excited about being in Austin this week (one of my favorite cities) and while I’m here, I’m going to be speaking at the Austin TFS User Group this Thursday night.  Here are some more details:
Special Event: TFS 2010 Build Customization with Ed Blankenship

Date: Thursday, August 4th, 6:30 to 8 PM at Overwatch Systems, 5301 SW Parkway

To attend please register at: http://tfsaustinbuild.eventbrite.com/

Don't miss this one-time event and deep dive on "Customizing the Build Process with TFS 2010 Build and Workflow Foundation." In TFS 2010, the automated build infrastructure has been revamped to use Windows Workflow Foundation (WF) instead of MSBuild. Ed will present and answer questions on how to customize the default build process template and how to leverage multiple aspects of the workflow implementation for TFS 2010 Build.

Location:

Overwatch Systems, 6:30 to 8 PM

NOTE: park in the parking garage, signs will direct you to the meeting

5301 Southwest Parkway

Austin, TX 78735

 

Looking forward to seeing everywhere in the area there!

Ed Blankenship



First Release of Community TFS Build Extensions



Wow – I’ve been seeing the discussions in the last few weeks from the team members but I’m happy to announce that they have done a great job and released the first release of the Community TFS Build Extensions on CodePlex!  There have been several months of effort put into putting this collection together and you’ll see some of the best contributors that are available.   You’ll find all sorts of custom build activities and there are many more included on the backlog.  Be sure to vote for you favorite.  The best part of this CodePlex project is that the source code is fully available for your use internally.

Release Notes

  • This is our first Stable release providing in the region of 100 Activities / Actions
  • This release contains assemblies and a CHM file.
  • We anticipate shipping every 2 to 3 months with ad-hoc updates provided to the documentation.
  • We welcome your candid and constructive feedback and look forward to improving the quality with and for you.
  • Please use the Discussion and Issue Tracker tabs for providing feedback.

The Visual Studio ALM Rangers have also released a set of guidance documents for customizing builds in TFS 2010 including the use of the Community TFS Build Extensions.  Check out more details here:  http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/06/17/toc-build-customization-guide-blog-posts-and-reference-sites.aspx

If you are looking for a book with information about how to customize build definitions, check out Professional Team Foundation Server 2010 as well which goes through one example which uses an activity from the Community TFS Build Extensions to stamp the version number on assemblies.

 

Ed Blankenship



Visual Studio ALM and TFS vNext Announcements at TechEd 2011



I’m here at Microsoft TechEd 2011 North America and just wanted to fill you in on some of the news coming about in the TFS and Visual Studio ALM space for the next major release.

  • Stakeholder Feedback Tools
    • Storyboarding Assistant – Add-In for PowerPoint that allows for rich storyboarding
    • “Feedback Tool” – Very similar to Microsoft Test Runner in Microsoft Test Manager and allows for stakeholders to perform feedback sessions and collect rich data.  Easy to provide rich feedback including creating bugs in the Feedback Session
      • Collects Audio & Video Recording
      • Action Step
    • Microsoft Test Manager – “Create Test Case from Bug”
  • Additional Agile Planning Tools
    • New Team Web Access (TWA) for TFS  (Metro UI)
    • “Teams”
    • Product Backlogs in New Team Web Access – Re-prioritizing quickly and live updates
    • Sprint Backlogs in New Team Web Access
      • Capacity Planning (by Team and Person)
      • Work Breakdown into Tasks
      • Moving Backlog Items to New Sprints (Drag & Drop)
    • New Task Board
      • State Changes Using Drag & Drop  (Cameron even showed a touch-enabled monitor)
    • Iteration/Sprint Burndown Charts in New Team Web Access
  • New “Team Navigator” Window in Visual Studio
    • “Pause” Working with Visual Context Saving
    • “Start” Working on New Task
      • Tracks individually edited files with pending changes.  Allows checking-in just those files that were edited for that new work session.
    • “Resume” Working on Previous Task and Resets Visual Studio Context
  • Code Review Tools  (Just Mentioned by Cameron)
  • Tools for Interacting with the Operations Team
    • Based on System Center
    • “TFS Connector”
    • Escalate Monitoring Issues to Engineering Team in TFS
    • Create Rich Work Item in TFS with Collected Information from Production
    • Shows TFS Work Item ID in System Center
    • Full Call Stack, Parameters, Navigate to Source Code
    • IntelliTrace Logs from Production!
  • Rich Text in Work Items Including Screenshots & Pictures Smile (Shown with Feedback Collection Tool)

More information about each of them coming soon!  I’ll update as more information is publicly announced.

If you are in town for the conference and want to learn more, there are several great sessions that you can attend as well as meeting up with several of the MVPs and Microsoft product team members at the TFS and Visual Studio ALM booths in the Exhibition Hall.  Come find us and we’ll be happy to chat!

 

Ed Blankenship

Posted in TFS | VSTS


Project Server 2010 and TFS 2010 Integration VM with Labs



I’m pretty excited that a new virtual machine is now available that has everything you need to start working with the integration between Project Server 2010 and Team Foundation Server 2010 SP1.  A lot of work by a good group of people has gone in to get this VM out and now it should be super easy to learn & play with the integration.  Not only is everything setup and configured already (which is half the battle when trying out new things) but you also get:

  • Four hands on labs that walk through the main scenarios that are supported by the integration.
    • One of them that is particular interesting is how to give visibility to the Project Management Office (PMO) when you have development teams practicing one of the many Agile methodologies.  Those two concepts can come at odds with one another and I think the integration plays nicely with that scenario if your company finds itself in this position.
  • Tons of sample active directory users that are available in both Team Foundation Server and the Project Server Enterprise Resource Pool that allow you to setup lots of different scenarios.
  • Sample data, team projects, and enterprise project plans to get you started.

If you are interested more about this topic and are attending TechEd North America, be sure to catch our talk: Application Lifecycle Management: Microsoft Project Server 2010 and Microsoft Team Foundation Server 2010, Better Together

Both Brian Keller and Christophe Fiessinger have some additional information available on their blogs:

Project Server TFS Integration Topology

 

Virtual Machine Download Details

 

Download for the Virtual Machine

Project Server TFS Integration VM Download - Microsoft Tag

Here’s some other resources if you are interesting in learning more:

 

Have fun!

Ed Blankenship



Speaking at TechEd North America 2011 - TFS and Project Server ALM Integration



Really excited to announce that Christophe Fiessinger and I will be speaking at TechEd North America 2011 about the new ALM integration between Team Foundation Server and Project Server!  Here is the session details so be sure to add it to your conference schedulehttp://northamerica.msteched.com/topic/details/OSP203?fbid=8_iz7QOIYNT#showdetails

 

OSP203 Application Lifecycle Management: Microsoft Project Server 2010 and Microsoft Team Foundation Server 2010, Better Together

Session Type:  Breakout Session

Level:  200 – Intermediate

Track:  Office & SharePoint

Speakers:  Christophe Fiessinger, Ed Blankenship

The Microsoft Visual Studio Team Foundation Server 2010 and Project Server Integration Feature Pack further strengthens the Microsoft Application Lifecycle Management Solution by bridging the gap between Project Portfolio Management and Application Development. By bringing the best of these two worlds together, it creates a win-win situation that enables developers and project managers to use the tools and processes of their choice and collaborate at the granularity they desire. Bi-directional data synchronization between Team Foundation Server and Project Server allows the PMO and Development teams to share project information transparently and provide management with insight into resource utilization, portfolio execution and alignment with strategic objectives. This session provides an overview and demonstrates the Team Foundation Server and Project Server Integration feature pack.

Product/Technology:  Microsoft® Visual Studio® Team Foundation Server

Key Learning:  How to bridge the gap between agil/scrum and waterfall teams by facilitating better coordination

 

Ed Blankenship

Posted in Community | EPM | Project Server | Speaking | TFS | VSTS


Book – Professional Team Foundation Server 2010 from Wrox



tfs2010_book

I am really pleased to announce that we have finished our new book for Team Foundation Server 2010! I really want to thank all of the authors (Martin Woodward, Grant Holliday, and Brian Keller) as well as all of the technical editors (Mickey Gousset and Steve St. Jean) for all of their hard work that was put into this book over the past ten months. I also wanted to thank Brian Harry for his help by writing a great foreword for the book. We would love for you to get a copy and let us know what you think! It’s really not so much for the royalties but more to let our publisher know that you are interested in future books about Team Foundation Server.

I have some additional information below about the book and I’ll come back and update this blog post as I get even more information.

ISBN: 978-0470943328

Availability

TFS2010Book_QRCodeTFS2010Book_Directions

Paperback http://bit.ly/TFS2010Book Now!
imageDRM-Free PDF http://bit.ly/TFS2010BookPDF Now!
Amazon Kindle http://bit.ly/TFS2010BookKindle Now!
Apple iBooks TBD TBD
Google Books http://bit.ly/TFS2010BookGoogle Now!

Promotional Code

Web commerce_40percent_64 We are also pretty excited to announce that Wiley has put together a promo code that will allow you to order either the printed copy or the DRM-free PDF copy of the book for 40% off. Here are the details for that promo code: To purchase, call 1-877-762-2974 and mention promo code WPTFS, or go to www.wrox.com (http://bit.ly/gwnw9G) and upon checkout, enter WPTFS in the Promotion Code field. Click the “apply discount” button and finish the checkout process. Offer valid until May 31st, 2011.

Source Code Downloads

We have put together a source code download package and it is available from here: http://www.wrox.com/WileyCDA/WroxTitle/Professional-Team-Foundation-Server-2010.productCd-0470943327,descCd-DOWNLOAD.html

Sample Chapters

Wrox will have two chapters available to download for free.

Book Description

Authoritative guide to TFS 2010 from a dream team of Microsoft insiders and MVPs!

Microsoft Visual Studio Team Foundation Server (TFS) has evolved until it is now an essential tool for Microsoft s Application Lifestyle Management suite of productivity tools, enabling collaboration within and among software development teams. By 2011, TFS will replace Microsoft s leading source control system, Visual SourceSafe (VSS), resulting in an even greater demand for information about it. Professional Team Foundation Server 2010, written by an accomplished team of Microsoft insiders and Microsoft MVPs, provides the thorough, step-by-step instruction you need to use TFS 2010 efficiently so you can more effectively manage and deliver software products in an enterprise.

  • Provides a broad overview of Team Foundation Server for developers, software project managers, testers, business analysts, and others wanting to learn how to use TFS
  • Gives TFS administrators the tools they need to efficiently monitor and manage the TFS environment
  • Covers core TFS functions including project management, work item tracking, version control, test case management, build automation, reporting, and more
  • Explains extensibility options and how to write extensions for TFS 2010
  • Helps certification candidates prepare for the Microsoft Team Foundation Server 2010 certification exam (Exam 70-512)

The clear, programmer-to-programmer Wrox style of Professional Team Foundation Server 2010 will soon have you thoroughly up to speed.

Authors

  • Ed Blankenship is an ALM consultant with Notion Solutions and the Microsoft MVP of the Year (Visual Studio ALM & Team Foundation Server)
  • Martin Woodward is a program manager on the Microsoft Visual Studio Team Foundation Server product team and a former Microsoft MVP of the Year (Visual Studio Team System & Team Foundation Server)
  • Grant Holliday is a program manager on the Microsoft Visual Studio Team Foundation Server product team and a former Microsoft MVP (Visual Studio Team System & Team Foundation Server)
  • Brian Keller is a senior technical evangelist for Microsoft, specializing in Visual Studio, ALM, and Team Foundation Server

Table of Contents

  • Foreword by Brian Harry
  • Introduction
  • Part I: Getting Started
    • Chapter 1: Introducing Team Foundation Server 2010
    • Chapter 2: Planning a Deployment
    • Chapter 3: Installation and Configuration
    • Chapter 4: Connecting to Team Foundation Server
  • Part II: Version Control
    • Chapter 5: Overview of Version Control
    • Chapter 6: Using Team Foundation Version Control
    • Chapter 7: Ensuring Code Quality
    • Chapter 8: Migration from Legacy Version Control Systems
    • Chapter 9: Branching and Merging
    • Chapter 10: Common Version Control Scenarios
  • Part III: Project Management
    • Chapter 11: Introducing Work Item Tracking
    • Chapter 12: Customizing Process Templates
    • Chapter 13: Reporting and SharePoint Dashboards
  • Part IV: Team Foundation Build
    • Chapter 14: Overview of Build Automation
    • Chapter 15: Using Team Foundation Build
    • Chapter 16: Customizing the Build Process
  • Part V: Administration
    • Chapter 17: Introduction to Team Foundation Server Administration
    • Chapter 18: Scalability and High Availability
    • Chapter 19: Disaster Recovery
    • Chapter 20: Security and Privileges
    • Chapter 21: Monitoring Server Health and Performance
    • Chapter 22: Testing and Lab Management
    • Chapter 23: Upgrading from Earlier Versions
    • Chapter 24: Working with Geographically Distributed Teams
    • Chapter 25: Extending Team Foundation Server

Bulk Orders

If you are purchasing in bulk, feel free to contact me using the Contact Me link on my blog and I can get you the details for purchasing bulk orders directly from Wiley.

Ed Blankenship



Lab Management Deploy TFS Build Process Process Template for Physical Environments



imageWith the Lab Management features of Visual Studio 2010 and Team Foundation Server 2010, you can create a build definition that deploys a build to a virtual environment being managed by Lab Management.   However, it doesn’t work if you have setup a physical environment that is being managed by Lab Management.


FYI – If you don’t have servers to host Hyper-V machines you can create “physical environments” and register them for use with Lab Management.  This allows testers to run tests and collect information coming from those physical environments just as they would from the virtual environments.  This is a good intermediate step for those organizations wanting to take advantage of Lab Management, haven’t invested in the virtual infrastructure necessary, and want to leverage existing physical environments (like QA, DEV, Staging, etc.).


Darshan, from the Lab Management product team at Microsoft, released a new build process template (XAML) file that adds limited support for deploying to physical environments and is similar to the standard deploy build process template available out of the box.  However, there are some shortcomings in that implementation including not being as rich of an experience since it doesn’t use a custom designer.

Not a problem… Colin Dembovsky who is one of our newer ALM/TFS Consultants at Notion Solutions helping customers in South Africa has put together a Lab Management deploy build process template for physical environments that attempts to address those shortcomings and provides for a rich experience that is similar to the experience that is used for deploying to virtual environments.

Check it out!  http://colinsalmcorner.blogspot.com/2011/02/build-deploy-test-workflow-for-physical.html

[clip_image0024.jpg]

Ed Blankenship



Source Server and Symbol Server Support in TFS 2010



As Jim Lamb announced in June 2009, TFS 2010 introduces support for Source Server and Symbol Server as part of the default automated build process template. This is a really key feature addition but I have found that many developers ask about why it would be so important and why it would help them. Ultimately, we are starting to have more and more tools that need access to the symbol file information and the original source code that was used for compilation. For example, some of the tools that come to mind are:

By setting up Source Server and Symbol Server support during your build process, you’ll be able to work with assemblies & executables that come from the build servers and still use tools that need information from them.

What are Symbols?

imageJohn Robbins has an excellent blog post to get started about learning what symbols are titled: “PDB Files: What Every Developer Must Know.” I highly recommend you take a moment to read through it.

So to summarize from John’s article, the symbol files are the .PDB files that match a particular assembly and contain important information that’s necessary for debugging tools. Specifically for .NET assemblies, the symbol files include:

  • Source File Names and Line Numbers
  • Local Variable Names

He also reminds us one very important statement about symbol files: “PDB files are as important as source code!” That is absolutely true! I cringe any time I hear from a developer that says “oh, those .PDB files take up so much space so I’m going to delete them.” Ouch – The sad thing is those are developers that keep people like John in business whenever they run into problems in production. Smile Save yourself some time, money, and effort and keep your symbol files around. Not to say that John doesn’t earn every penny but I’m sure his life is much better whenever you do have your symbols!

This is exactly where Symbol Server helps out. Essentially, the Symbol Server is a central location for your company that keeps the .PDB files for you. Therefore, you can install your application (without symbols) that was compiled from a build server and whenever you want to use a debugging tool like Visual Studio, it will know how to contact the Symbol Server location to get the matching set of symbols. More about how to configure Visual Studio to look for a Symbol Server further down in this blog post.

John also mentions how to manually perform the steps necessary for completing the loop with Source Server and Symbol Server. Thankfully, since you are using TFS 2010 Build, you don’t have to go through those steps. The functionality is included in the default build build process template (but not the Upgrade Template).


Aside: If you are performing obfuscation using your favorite .NET obfuscation utility, you will want to make sure you produce symbol files that match the newly created assemblies. This is because the variable names and other information change by the obfuscator. What I will normally do will do is keep both the original assemblies with their matching symbol files in addition to the obfuscated assemblies with match symbol files. I store the artifacts for the obfuscated assemblies in a sub-folder called “Obfuscated.”

imageimage


How to Setup Symbol Server

A common misconception about Symbol Server is that you actually have to set up a server and install the Symbol Server software. Not at all! All you have to do is setup a file share on another server. If you are using my suggestion about using friendly DNS names with TFS, you might extend that for the symbol server as well:

\\symbols.contoso.local\Symbols

On my particular demonstration machine, I have a local file share that contains some of the symbols that were published from my TFS 2010 Builds:

image

How to Configure Build to Index for Source Server and Publish to Symbol Server

Configuring the build definition to use the new Symbol Server location, couldn’t be easier. Open up the build definition editor and navigate to the Process tab. There, you will see all of the process parameters. If you are using the default build process template then you will find the Source Server and Symbol Server settings underneath the “2. Basic” category as shown below.

image

The build process will then do all the work for you!

Source Server Indexing

What actually happens when the build process is actually running it’s Source Server indexing? Let me first start by discussing the problems with symbols that come from a build server (or another machine.) One of the pieces of information that is stored inside of the symbol file is the location of the original source file that was used for compilation into the assembly you are debugging. This can be a problem because for my particular case, the local location of the source code file on the build server is:

C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Form1.cs at version 32 from the MAIN branch

Not only do you to have put all of the source files in the same exact spot but you would have to get it from the right branch and even the exact same changeset version from the TFS version control repository. That’s a lot of manual work… This is where the indexing for Source Server helps you out. You’ll also notice that if you are producing symbols from your obfuscation utility, those can indexed for Source Server support as well.

image

When the TFS 2010 Build runs the source indexing for Source Server, it writes an alternate stream of information in the symbol files that will provide the following information for each source file:

  • Source Control provider’s information and the command-line utility to use to get the file (In our case that would be using tf.exe)
  • Full TFS Version Control Repository Server Path including the branch name
  • Version

The default build process template uses the srctool.exe command-line utility first to list all of the local source file locations that are stored in the symbol file. Then, it generates a temporary file that contains the exact alternate stream information for Source Server. The Source Server stream is named srcsrv. Finally, the build process uses the pdbstr.exe command-utility to add that stream information to write the relevant information. If you are ever curious about what that srcsrv stream actually contains, you can run this command-line utility:

C:\Builds\Calculator MAIN\Calculator MAIN_11.02.11.06\Debug\Obfuscated>pdbstr.exe –r -p:Calculator.pdb -s:srcsrv
SRCSRV: ini ------------------------------------------------
VERSION=3
INDEXVERSION=2
VERCTRL=Team Foundation Server
DATETIME=Fri Feb 11 00:41:58 2011
INDEXER=TFSTB
SRCSRV: variables ------------------------------------------
TFS_EXTRACT_CMD=tf.exe view /version:%var4% /noprompt "$%var3%" /server:%fnvar%(%var2%) /console >%srcsrvtrg%
TFS_EXTRACT_TARGET=%targ%\%var2%%fnbksl%(%var3%)\%fnfile%(%var5%)
SRCSRVVERCTRL=tfs
SRCSRVERRDESC=access
SRCSRVERRVAR=var2
VSTFSSERVER=http://localhost:8080/tfs/DefaultCollection
SRCSRVTRG=%TFS_extract_target%
SRCSRVCMD=%TFS_extract_cmd%
SRCSRV: source files ---------------------------------------
C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Form1.cs*VSTFSSERVER*/Calculator/MAIN/Source/Calculator/Calculator/Form1.cs*32*Form1;C32.cs
C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Form1.Designer.cs*VSTFSSERVER*/Calculator/MAIN/Source/Calculator/Calculator/Form1.Designer.cs*30*Form1.Designer;C30.cs
C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Program.cs*VSTFSSERVER*/Calculator/MAIN/Source/Calculator/Calculator/Program.cs*30*Program;C30.cs
C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Properties\Settings.Designer.cs*VSTFSSERVER*/Calculator/MAIN/Source/Calculator/Calculator/Properties/Settings.Designer.cs*11*Settings.Designer;C11.cs
SRCSRV: end ------------------------------------------------

Publishing to Symbol Server

Publishing the symbols is the easier part of it. Essentially, the default build process template calls the symstore.exe add utility to publish the symbol files to the specified symbol server path. Additionally, there is some metadata added for the build information in TFS that will specify that symbols were published. This will be useful whenever the build retention policies kick in which we’ll cover further down.

Configuring Visual Studio to Use Symbol Server and Enabling Source Server Support

The next step is for each of the developers to configure Visual Studio 2010 to look for symbols if they aren’t found in the symbol server location for the company. You can get to it by going to Tools –> Options and then the Debugging –> Symbols options pages as shown below. Other debugging tools have similar options.

SNAGHTML23f64f5

The next thing you will want to do is to enable source server support in Visual Studio. You can do that by going to the Debugging –> General options tab as shown below.

SNAGHTML243d0c1

Now, just start using your debugging tool and in my case I have attached my Visual Studio Debugger to the process of my application that came from the build drop folder. Visual Studio gives me a small warning before it attempts to grab the source code from the TFS Version Control repository as shown below. You can see the exact command-line utility including arguments that is used by the debugger to retrieve the correct version of the file. Pure magic…

SNAGHTML226bcf3

Update:  (2/14/2011) John Robbins has helped out by letting us know how we can disable this really annoying Source Server security dialog any time the debugger wants to get something from Source Server.  Thanks John!


Aside: If you notice, in my situation I have a particular problem. Since the TFS 2010 Build services are installed on the same machine as my application tier on my laptop, the default configuration for the build service to connect to TFS used http://localhost. Sad smile That’s not going to be good whenever I have another developer start debugging using the assembly from my build server and the symbols. Their Visual Studio Debugger instance will try to hit localhost on their machine (where the source doesn’t exist).

For this reason, it’s important to make sure when you are configuring the build service to use the fully-qualified friendly DNS name for your application tier server. (Check out the blog post that’s linked to find out more information about this topic).

image


How Does Visual Studio Know Which Symbols Match for the Executable?

You have to always have symbol files that exactly match the assemblies you are debugging. How does Visual Studio know this though? There is actually a GUID that is embedded to both the assembly and the symbol file. You can find out what that GUID is by running the DUMPBIN command-line utility as shown below.

C:\Builds\Calculator MAIN\Calculator MAIN_11.02.11.06\Debug>dumpbin Calculator.exe /HEADERS

Microsoft (R) COFF/PE Dumper Version 10.00.31118.01
Copyright (C) Microsoft Corporation. All rights reserved.


Dump of file Calculator.exe

Debug Directories

Time Type Size RVA Pointer
-------- ------ -------- -------- --------
4D54CC09 cv 69 00003864 1A64 Format: RSDS, {B7C62014-02BD-4F35-9718-104CE8CFB14C}, 1, c:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\obj\Debug\Calculator.pdb

You can see the GUID highlighted above. If you were to go check out the Symbol Server file share, you can also find the GUID used to differentiate between all of the different versions of the symbol files that are stored for a particular assembly.

Update:  (2/15/2011) I learned something new from Chris Schmich from the Visual Studio Diagnostics team.  He indicated that the PDB age (which is highlighted above in green) is also used to match the symbols.  You’ll notice that the PDB age for all of my symbols is 1 and is appended to the end of the GUID when stored in Symbol Server.  Thanks Chris for the extra information!

image

IntelliTrace Files and Symbol Server

I also wanted to mention that when testers use Microsoft Test Manager and run manual test cases where they have collected IntelliTrace logs, you’ll notice that when you open one of those IntelliTrace logs (for example attached to a bug work item) you will see the Symbol Server location that was collected from the assembly being tested as well:

image

This green-light should be awesome for you as a developer now because you can connect to the Symbol Server location and start debugging using the IntelliTrace log and the Source Server information contained inside of the symbols.

Retention Policies

One other thing to consider: as you have more and more builds performed using TFS 2010 Build, you’ll want to set up your retention policies. The Symbol Server file share can start to go up in size pretty quickly so you can have the retention policies also delete the corresponding symbols from Symbol Server if you choose by setting the “What to Delete” option.

image

SNAGHTML25e109f

You want to also make sure, however, that any “Released” builds should be marked as “Retain Indefinitely” to ensure that the retention policies never delete the symbols (or anything else about the build for that matter!)

image

Summary

There you go! Your developers will be very appreciative whenever all of this is setup. You’ll have a system that stores your symbols for whenever you need them and those symbols will have information to let the debugging utilities know where to grab the original source code from the TFS version control repository.

Ed Blankenship



Replying to TFS E-Mail Alerts



If you have been using the Alerts Editor that is part of the TFS Power Tools, you will notice that you can get e-mail alerts from the TFS server based on subscriptions that you create.  You may not have noticed but there is a subtle feature that allows you to easily reply to the person who made the change (such as creating a new work item).

I just got a notification that my colleague Chris at Notion has just confirmed a task for me to go to the ALM Roadshow in Dallas next month.  I have a few questions about the assignment so if I click “Reply” in my e-mail program, you’ll notice that the new e-mail doesn’t reply to the TFS Service Account but instead to the person who made the change that triggered the e-mail.  Quite handy.

SNAGHTML1463597

image

Ed Blankenship



Third-Party Support for Visual Studio Coded UI Testing



Bookmark this page!  I’ll be updating this blog post article as I am informed of support for Coded UI testing in each of the products.  Let me know if I’m missing any that should be in the list!

If you have been using Visual Studio 2010 and Microsoft Test Manager for automated UI testing, you may have experienced some issues with building the Coded UI tests if your application is using third-party components.  It has been quite frustrating having been to several customer sites over the past year and running into this issue.  My suggestion for anyone that has run into these issues is to open a support case with the component vendor and request that they add the necessary accessibility support to their component libraries.  This will allow each of them to track the interest for this type of support in their products and then also provide a way to inform you whenever it is supported.

FYI – This is also the necessary implementation to get the “Fast-Forward” functionality from Microsoft Test Manager to work to record the actions of manual test cases.

There doesn’t seem to be a definitive list of the third-party controls that do or don’t support Coded UI testing at the moment.  I have attempted to gather all of the information to provide a one-stop shop for this support.  I’ll include links to updates, add-ons, etc. as I receive them.

Product Infragistics DevExpress Telerik ComponentOne Xceed
ASP.NET Controls Green Green Green Green N/A
Windows Forms Controls Red Red Green3 Red Red2
Windows Presentation Foundation (WPF)Controls Red Red Red Red Green1
Silverlight Controls Red Red Red Red Red2

Notes

  1. Added support Xceed WPF Controls:  http://twitter.com/#!/Kosmatos/status/32527169318027264
  2. Added updates for other products for Xceed:  http://twitter.com/#!/Kosmatos/status/32527901526065153
  3. Added update for Telerik Windows Forms controls.  Now available in each release of Windows Forms after 2011 Q1. http://www.telerik.com/products/winforms/whats-new-full-story.aspx

Updates

  • 2/1/2011:  Updates for Xceed.
  • 2/1/2011:  Added some links for implementing the appropriate accessibility hooks.  Thanks to Jeff Levinson!
  • 2/16/2011:  Added additional information about the Accessibility Checker.  Thanks to Vinod Malhotra!
  • 3/24/2011:  Update for Telerik Windows Forms controls.

 

Accessibility Support for Custom Controls

If you are building custom controls that are for internal use in your organization, you’ll want to make sure you implement the appropriate accessibility hooks to get full support from the Visual Studio Coded UI testing platform.  Here are some links for you to get started:

Additionally, there is a tool called the UI Accessiblity Checker (also known as AccChecker) that is available to help you check your controls to make sure that the necessary accessibility implementation is correct.  The tool can check for both MSAA and UIA implementations.  It even has a plug-in architecture so that third parties can add additional verifications to the tool.  All the source code and the binaries are available on the CodePlex site.

 

Ed Blankenship

Posted in TFS | VSTS | VSTS Testing


Hiring ALM Consultants at Notion Solutions and Imaginet



Thankfully, the business at Notion Solutions and Imaginet has just been booming for the last couple of years with Visual Studio Application Lifecycle Management, Team Foundation Server, and the legacy Visual Studio Team System products.  We have been hiring left and right over the past few months and still looking for plenty more ALM Consultants in the United States and Canada.  If you are interested, just shoot an e-mail over my way and I’ll be happy to answer any questions:  edb AT notionsolutions.com.

Here’s the official posting

Application Lifecycle Management (ALM) Consultant

Notion Solutions, Inc. is looking for a dynamic individual to join our team. For the past six years, Notion Solutions has been leading the way in implementing Team Foundation Server and the Microsoft ALM tools at companies across the country. We work with our clients to help them to define an improved software development processes for their organization and then help them implement that software process using the Microsoft tools and follow that up with mentoring on how to use their process.

We are looking for someone that enjoys a challenge and adapts to working in a rapidly changing environment. All applicants should have a strong interest in software development process and TFS. If you think of software development more as an engineering discipline, and less of an art - and would like to help companies become more successful at building software, then this could be the job for you. A knowledge of software process is a must, whether it's waterfall, SCRUM, Agile, CMMI, etc.  An understanding of Quality Assurance, Project Management, Business Analysis, and Development are all needed.

This position will work with clients nationally, your location is flexible.

Travel: Approximately 80%

Responsibilities:

  • Software Development Process Consulting
    • Project management
    • Risk management
    • Change management
    • Defect tracking
    • Developer workflow
    • Automated build
    • Automated Testing
    • Release management
    • Database management
  • Be self disciplined to learn new technology

Requirements:

  • Knowledge of Visual Studio Premium and Ultimate features and Team Foundation Server
  • Familiarity with a variety of software processes
  • Experience with automated build, source control and testing tools

Helpful Skills

  • Knowledge of .NET 2.0+ architecture and development practices
  • Knowledge of C# and VB.NET

Ed Blankenship

Posted in Community | TFS | VSTS

Customizable Output Directories for TFS 2010 Build



By default, when you are setting up a new build definition in TFS 2010 that uses multiple Visual Studio solutions and projects, you end up with a drop folder with all of the compiled assemblies dropped in the root.  One notable exception to this is for web application projects where you will end up with a subfolder underneath the _PublishedWebsites folder for each of the web application projects.  You may not want everything to be in the root and instead want it organized.  There were several methods for how to do this using TFS 2005 or TFS 2008 but let me show you a way to do it for a TFS 2010 Build.

Create Workflow Parameter

Open up your build process template file and go to your “Arguments” tab (available in the lower-left hand corner of the workflow designer) to add a new workflow parameter.  My suggestion would be to use a new Boolean argument named “CustomizableOutputDirectory” as shown below.

image

Next, open up the Process Parameter Metadata Editor by clicking on the editor button for the Metadata workflow argument that is already defined.  Next, give your new process parameter some extra information so that someone editing the build definition will understand what this parameter is for.  You’ll notice that I’m also putting this parameter in the Advanced category since I don’t really need to create another category for only one new parameter.  Feel free to create a new grouping if you have more custom parameters in your build process template.

SNAGHTML627addb

Once you finish these steps and check-in the file to version control, you’ll see your new parameter in the build definition editor as shown below.

clip_image002

Add Functionality to the Workflow

The next step is to add in the appropriate functionality for the customizable output directory.  What we will end up doing is adding an alternate path for when MSBuild is called to compile the Visual Studio solution or project each time.  I want to leave the default functionality though if the process parameter we created above is set to False.  So, the first step is to find the default functionality for compilation.  You can find it by navigating deep into the workflow and finding the “Compile the Project” sequence activity that contains the MSBuild activity that is used for compilation.  You can find it by navigating through these activities:

  • Sequence
  • Run on Agent (AgentScope)
  • Type Compile, Test, and Associate Changesets and Work Items (TryCatch)
  • Sequence
  • Compile, Test, and Associate Changesets and Work Items (Parallel)
  • Try Compile and Test (TryCatch)
  • Compile and Test (Sequence)
  • For Each Configuration in BuildSettings.PlatformConfigurations (ForEach<T>)
  • Compile and Test for Configuration (Sequence)
  • If BuildSettings.HasProjectsToBuild (If)
  • For Each Project in BuildSettings.ProjectsToBuild (ForEach<T>)
  • Try to Compile the Project (TryCatch)
  • Compile the Project (Sequence)

image

The next step I would take is to drag and drop a new If activity and place the existing MSBuild activity in the Else container.  This allows for the default functionality to still continue if the value of the custom process parameter is False.  Set the Condition parameter for the If activity to the name of the custom process parameter that was defined earlier as shown below.

image

You will notice in the MSBuild activity that exists for default functionality, the CommandLineArguments workflow activity argument is set to the following.

String.Format("/p:SkipInvalidConfigurations=true {0}", MSBuildArguments)

To implement our custom output directory functionality, we are essentially going to modify this one activity parameter to pass in a new value.  This will be the new expression that we will use for the MSBuild activity parameter:

String.Format("/p:SkipInvalidConfigurations=true;TeamBuildOutDir=""{0}"" {1}", outputDirectory, MSBuildArguments)

The easiest way to do this would be to copy the existing MSBuild activity and paste it in the Then container for our If activity.  You can then set the CommandLineArguments parameter for the copied activity to the new value that defines the new MSBuild parameter.

image

Extra Credit Aside:  Anyone know why we used outputDirectory instead of BinariesDirectory?

Opt-In for Visual Studio Projects

Once you have done all of the steps, you’ll notice that it didn’t actually change anything Smile.  For each of the Visual Studio projects that you want to use the new functionality, you will need to “opt-in” by editing the .csproj or .vbproj Visual Studio project files and adding the new MSBuild property group shown below.

<!-- Customizable Output Directory Opt-In for TFS Build (non-web application projects) -->
<
PropertyGroup Condition="$(TeamBuildOutDir) != '' "
>
  <
OutputPath>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)</OutputPath
>
</
PropertyGroup
>

The change does break the _PublishedWebsites functionality for any web application projects though and you will need to use a different opt-in below for every web application project that is included in the build.

<!-- Customizable Output Directory Opt-In for TFS Build (web application projects) -->
<
PropertyGroup Condition="$(TeamBuildOutDir) != '' "
>
  <
OutDir>$(TeamBuildOutDir)</OutDir
>
</
PropertyGroup
>

There you go… Check those project file changes into version control and you can now queue a new build and the outputs for each of the projects that are opting-in to this new functionality are created in subfolders in the drop folder.  It was also still continue to put web application projects into the _PublishedWebsites folders.

 

Ed Blankenship



Using Friendly DNS Names in Your TFS Environment



Over the past few years of dealing with plenty of TFS environments, one thing that I am glad to have done is setup friendly DNS names for TFS to use for it’s individual parts. This has helped extremely to make for a smooth transition for administrators & end users when needing to move TFS to a new hardware environment, upgrading TFS to a new version, or in several disaster recovery scenarios. Not to mention having to tell new users to connect to some odd server with a weird name like ADGKSDFU308234NT. Smile You can obfuscate all of the connection points that TFS uses. The concept is easy and if you haven’t done it already, it’s never too late.

Why use Friendly DNS Names?

I mentioned a few examples above but let me expand on it a little further by presenting two scenarios that I have run across. There are plenty of other scenarios that have been handy in the past as well. You’ll be surprised the options you have for different types of changes to the infrastructure and topology that you’ll run across in the future by using friendly DNS names.

Hardware Migration Upgrade

During a future upgrade, it is decided that new hardware is to be used for scaling out to increase the availability and performance of the TFS environment. By using friendly DNS names, end users and custom tools can continue to point to the same address (tfs.contoso.local) without making any changes. This allows for having the old environment up at the same time as having the new upgraded environment up. This helps out with rollback plans in case the upgrade was not successful.

Scale Out Analysis Services

A company has noticed that heavy usage of the OLAP warehouse cube in SQL Analysis Services has started to use a lot of the RAM on the data tier server. They would like to separate SQL Analysis Services from the database services in SQL Server to a separate server. By changing the friendly DNS name (warehouse.tfs.contoso.local) to the new Analysis Services instance, end users who have created custom Excel pivot table reports in workbooks won’t have to update each workbook.

Any others you can think of?

DNS Entries

First, you will want to create either A or CNAME records in your DNS infrastructure. If you are using Active Directory then your DNS infrastructure will more than likely be managed by your domain controller(s).

This guide assumes that you are using the following friendly DNS names throughout the configuration. In this example, the internal network uses the DNS suffix of contoso.local. You could also have contoso.com addresses point to internal servers if they are setup appropriately in DNS. Check with your DNS administrator to discuss which format should be used. Be sure to use fully-qualified DNS names especially for those clients that use VPN or have remote offices. You will want to be sure to follow the guide in order since some steps are dependent on previous steps to have been performed.

DNS Entry

Points To

tfs.contoso.local

Application Tier or Network Load Balance IP for TFS AT Farm

Used For: TFS Web Services, Team Web Access, SQL Reporting Services, and SharePoint (if on same box)

data.tfs.contoso.local

Data Tier or SQL Server Cluster IP

Used For: Location of Configuration, TPC, and Relational Warehouse Databases

warehouse.tfs.contoso.local

SQL Analysis Services Instance

india.proxy.tfs.contoso.local

One friendly DNS entry for each remote location. (Optional)

sharepoint.tfs.contoso.local

Separate friendly DNS entry for the SharePoint server if separate from the application tier. (Optional)

lab.tfs.contoso.local System Center Virtual Machine Manager Server for TFS Lab Management (Optional)
builds.tfs.contoso.local Drop folder share for build outputs.  When setting up a build definition I will use a file share like this in the settings:  \\builds.tfs.contoso.local\Builds
symbols.tfs.contoso.local Symbol Server file share for builds.  When setting up a build definition, I will use a file share like this in the settings:  \\symbols.tfs.contoso.local\Symbols

In my particular example below, I have a single server that has both the application tier components and the data tier components. SQL Analysis Services is also installed on the same server. However, I am using a separate SharePoint server and a different server for TFS Lab Management.

SNAGHTMLf5981e

Disable Loopback Check

Often when you are logging into a server and using a friendly DNS name that resolves back to itself (localhost) you will find that you end up having authentication issues because of a security feature in Windows Server. You can disable this security feature by following the directions in this KB support article: http://support.microsoft.com/kb/896861. You will want to do this for each of the servers that may resolve back to itself using the friendly DNS name. For example: application tier servers, data tier, Analysis Services server, SharePoint servers, etc.

To set the DisableLoopbackCheck registry key, follow these steps:

  1. Click Start, click Run, type regedit, and then click OK.
  2. In Registry Editor, locate and then click the following registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  1. Right-click Lsa, point to New, and then click DWORD Value.
  2. Type DisableLoopbackCheck, and then press ENTER.
  3. Right-click DisableLoopbackCheck, and then click Modify.
  4. In the Value data box, type 1, and then click OK.
  5. Quit Registry Editor, and then restart your computer.

Installing TFS to use the Friendly DNS Name for the Data Tier

When initially configuring Team Foundation Server, use the fully-qualified friendly DNS name for the data tier server: data.tfs.contoso.local. If this is done correctly, then the Application Tier information page on the TFS Administration Console will show that friendly DNS name in the connection string.

image

Also use this location for each team project collection that is created as well. If it done correctly then you will see it shown for the connection string to the team project collection database.

image

If TFS has already been setup and configured not using the friendly DNS name, you can alternatively use the TFSConfig.exe RemapDBs and RegisterDB command on each application tier server to update its data tier server connection string to use the friendly DNS name.

tfsconfig.exe remapdbs /DatabaseName:data.tfs.contoso.local;Tfs_Configuration /SQLInstances:data.tfs.contoso.local

More information about the RemapDBs command can be found on MSDN: http://msdn.microsoft.com/en-us/library/ee349262.aspx

image

tfsconfig.exe registerDB /SQLInstance:data.tfs.contoso.local /DatabaseName:Tfs_Configuration

More information about the RegisterDB command can be found on MSDN: http://msdn.microsoft.com/en-us/library/ms252443.aspx

image

Configuring Reporting Services to Use Friendly DNS Name

  1. Open the Reporting Services Configuration Manager by clicking Start –> All Programs –> Microsoft SQL Server 2008 R2 –> Configuration Tools –> Reporting Services Configuration Manager
  2. Connect to the appropriate SQL Reporting Services instance.
  3. Click on Report Manager URL settings page.
  4. Click on the Advanced button.

image

  1. In the Advanced Multiple Web Site Configuration dialog click on the Add button.
  2. Enter the fully-qualified DNS name: tfs.contoso.local. You can optionally remove the other entry if it is not needed.

image

image

  1. Click OK and the URL should be reserved.

image

  1. Go to the Web Service URL settings and repeat steps 4-7 and use the same fully-qualified friendly DNS name: tfs.contoso.local.
image

Configuring SharePoint to Use Friendly DNS Name

  1. Open SharePoint Central Administration by clicking Start –> Administrative Tools –> SharePoint Central Administration
  2. Click on the Configure alternate access mappings command under the System Settings section

image

  1. Click on Edit Public URLs in the toolbar.

image

  1. On the Edit Public Zone URLs page, enter the fully-qualified friendly DNS name into the Internet field for the separate SharePoint server or the friendly DNS name for the application tier server if it is installed there.

image

  1. Click on Save
  2. Verify that you are able to resolve the friendly DNS address and that the SharePoint web application recognizes it appropriately. You can do this by opening an Internet Explorer browser and navigating to http://tfs.contoso.local or http://sharepoint.tfs.contoso.local depending on your configuration.

You may want to also update the public URL for SharePoint to use for the Central Administration site as well. Perform the same steps except choose the SharePoint Central Administration in the Alternate Access Mapping Collection combo box.

image

Configuring TFS to Use Friendly DNS Name

  1. Open the TFS Administration Console and navigate to the Application Tier settings page.
  2. Click on the Change URLs action.

image

  1. On the Change URLs dialog, enter the fully-qualified friendly DNS name: http://tfs.contoso.local:8080/tfs.

image

  1. Don’t change the Server URL since it is used for intra-server communication (like warehouse adapter jobs, etc.)
  2. Click OK. Verify that the TFS Administration Console page has been updated and that e-mail alerts now use the friendly DNS name in the URL links within the e-mail.

Configuring TFS Reporting to Use Friendly DNS Name

  1. Open the TFS Administration Console and navigate to Application Tier –> Reporting.
  2. Click the Stop Jobs action before editing the configuration.

image

  1. Click OK on the warning dialog.

image

  1. Click on the Edit action.
  2. On the Warehouse tab, type the fully-qualified friendly DNS name for the data tier server that houses the relational warehouse database: data.tfs.contoso.local.

image

  1. Click on the Analysis Services tab and enter the fully-qualified friendly DNS name for the Analysis Services server: warehouse.tfs.contoso.local.

image

  1. Re-enter the password for the Account for accessing data sources.
  2. Click on the Reports tab and click on the Populate URLs button.
  3. In the URLs for Report Server group, select the URLs that were setup in the Reporting Services Configuration utility that were setup earlier.

image

  1. Re-enter the password for the Account for accessing data sources.
  2. Click OK.
  3. Click the Start Jobs action.

The Team Foundation Server Administration Console should now display the appropriate information as shown below.

image

Configuring TFS SharePoint Integration to Use Friendly DNS Name

  1. Open the TFS Administration Console and navigate to Application Tier –> SharePoint Web Applications.
  2. Click on the SharePoint Web Application item in the list box and click Change.

image

  1. On the SharePoint Web Application Settings dialog box, change the Web Application URL to the fully-qualified friendly DNS name you used earlier. (You can optionally set the Friendly Name to this address as well but this is more for a friendly label that distinguishes the SharePoint web application from multiple SharePoint web applications if configured.) Click OK.

image

  1. You should receive an information dialog box. Click OK on that dialog.
  2. The SharePoint Web Applications list should be updated with the entry that lists the friendly DNS name.
image

Build Servers & Proxy Servers

Be sure to also configure all of the build servers and proxy servers to point to the friendly DNS name when connecting to the application tier server(s). This will allow for the same type of flexibility whenever you need to make any TFS environment topology changes.

image

Let me know if you have any additional questions!

Ed Blankenship

Microsoft MVP for Visual Studio ALM in 2011



Microsoft Most Valuable Professional (MVP) LogoI am really happy to announce that I received the Microsoft Most Valuable Professional award again for 2011!  The award is for the Visual Studio ALM products which includes Team Foundation Server.  This will be my fourth year as an MVP and it has been truly an honor working with all of the great colleagues and the product teams that I work with pretty much every day!  I’m r.ally looking forward to going to the MVP Summit next month and handing off the MVP of the Year award to the next new awardee and for another exciting year!

 

Thanks to everyone who has helped support me with my developer community contributions!

Ed Blankenship

Posted in Community | TFS | VSTS


Locating Controls Using UI Map Editor for Coded UI Tests



One of the great new features of Visual Studio 2010  and Microsoft Test Manager is the ability to record action recordings and then covert them into automated UI tests called “Coded UI Tests.”  The recorded steps turn into a UI Map that is an XML-based file format that is used by Visual Studio to generate source code.  Editing the UIMap was pretty tedious before so Microsoft released a new UI Map Editor in the latest feature packVisual Studio 2010 Feature Pack 2.  Feature Pack 2 is available to active MSDN Subscribers and contains the following additional features;

Cumulative feature pack that extends testing, code visualization and modeling capabilities in Visual Studio 2010.

Testing features:

  • Use Microsoft Test Manager to capture and playback action recordings for Silverlight 4 applications.
  • Create coded UI tests for Silverlight 4 applications with Visual Studio 2010 Premium or Visual Studio 2010 Ultimate.
  • Edit coded UI tests using a graphical editor with Visual Studio 2010 Premium or Visual Studio 2010 Ultimate.
  • Use action recordings to fast forward through manual tests that need to support Mozilla Firefox 3.5 and 3.6.
  • Run coded UI tests for web applications using Mozilla Firefox 3.5 and 3.6 with Microsoft Visual Studio 2010 Premium or Visual Studio 2010 Ultimate.

Code visualization and modeling features (requires Visual Studio 2010 Ultimate):

  • Use the Generate Code command to generate skeleton code from elements on UML class diagrams. You can use the default transformations, or you can write custom transformations to translate UML types into code.
  • Create UML class diagrams from existing code.
  • Explore the organization and relationships in C, C++, and ASP.NET projects by generating dependency graphs.
  • Import elements from UML sequence diagrams, class diagrams, and use case diagrams as XMI 2.1 files that are exported from other modeling tools.
  • Create links and view links from work items to model elements.
  • Create layer diagrams from C or C++ code and validate dependencies.
  • Write code to modify layer diagrams and to validate code against layer diagrams.

Once you get the Feature Pack installed, you will be able to open the UI Map and in a new editor as shown below.  It’s great because it allows you to see each of the methods that have been created and allows you to rename, remove, and edit the actions that have been recorded.  It even shows you all of the windows, controls, etc. that are included in the UI Map that describe the UI components in your application that are used by the Coded UI Tests.  You can also edit the properties for those so that you can maintain the automated tests to continue to work after UI changes are made in the application you are testing.

FeaturePack2-UIMapEditor

Some really cool features that I found today was the ability to locate a control on your application and also to verify that the UI Map is still correct by locating all of the controls.  First, you can find a specific UI control or element by choosing the “Locate the UI Control” toolbar button after you select the control you are interested.

FeaturePack2-LocateControl

You’ll want to have the particular application and window running before you do this (so it can find it) but it will put a little blue rectangle around the control as shown below.

FeaturePack2-LocateControlOnForm

Nice!  If you want to make sure that all of the UI control or elements on a window are still valid in the UI Map then you can select the window in the UI control’s tree and then choose the “Locate All” toolbar command.  You’ll see it go through each of the controls in the window and verify that it can still find it and mark it with a green check mark if it can be found.  How about that?

 

FeaturePack2-LocateControlsDialog

FeaturePack2-LocateControlsResults

 

Have fun!

Ed Blankenship

Posted in TFS | VSTS | VSTS Testing


Set Associate to Default Action Instead of Resolved for TFS Work Item Changeset Associations



In Team Foundation Server 2010, a new registry key was added to provide the ability to specify that “Associate” should be the default when associating work items to a changeset instead of the “Resolve” action.  This needs to be applied to each development machine that would like to change the default instead of editing the process template and work item type definitions.

image

All you have to do is set the ResolveAsDefaultCheckinAction value to False in this registry key:  HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Behavior

 

Nice!

Ed Blankenship



Raffle for Two MSDN Subscriptions with Visual Studio 2010 Ultimate at Charleston Bar Camp



Charleston Bar Camp Logo

Earlier this year following the Visual Studio 2010 release, I got a great package from Microsoft (MVP Program and Visual Studio Product Team) that included some complimentary Visual Studio 2010 Ultimate with MSDN Subscription activation cards to give away.  I hadn’t found the right opportunity but this Saturday I will be attending (and have submitted a session proposal) the Charleston Bar Camp.  This should be a very interesting experience since it will be my first bar camp.  Anyhow, I have been looking for ways to contribute and foster our local software development community in Charleston and decided I would like to give two MSDN subscriptions out during the event.

What is Included?

Two winners will receive a prize package that contains:

Professional Application Lifecycle Management with Visual Studio 2010 Book Cover

One (1) copy of Professional Application Lifecycle Management with Visual Studio 2010 by Wrox

VS_2010_ALM_Book_2010111117313

http://bit.ly/VS2010ALMBook

clip_image001

One (1) MSDN Subscription with Visual Studio 2010 Ultimate (Not for Resale) Includes:

· Team Foundation Server 2010

· SQL Server 2008 R2

· Windows 7

· Windows Server 2008 R2

· Office 2010

· Office 2011 for Mac

· One-year of updates

Professional Team Foundation Server 2010 Book Cover

One (1) copy of Professional Team Foundation Server 2010 by Wrox

(When Released)

TFS_2010_Book_20101111185155

http://bit.ly/TFS2010Book

 

 Total Retail Value for Prize Packages: $24,007.96

 

Option 1 - Lab Management Session Attendees

Attendees to the Virtual Lab Management with Team Foundation Server 2010 session (if selected and scheduled) will have an opportunity to win one of the prize packages. Bring a business card with your name, company/occupation, city, e-mail address, and Twitter account. One lucky winner will be selected from the submitted business cards after the session has completed.

 

Option 2 - All Bar Camp Charleston Attendees

On the back of this page, write your “pitch” for why you think you should win one of the prize packages and what you would do with it if you were to win. The best pitch, as determined by the judge(s) will be selected to win the prize package. Bonus points are given for impactful local projects, giving back to the local developer community, or volunteering time & talents for a local non-profit organization.

 

Good luck!

Download Flyer

 

MSDN Subscriptions donated by the Microsoft MVP Program, Visual Studio Product Team, and...

MVP_FullColor_ForScreen

Ed Blankenship

Microsoft MVP of the Year, Visual Studio ALM
Co-Author, Professional Team Foundation Server 2010 by Wrox

 

Application Lifecycle Management & Team Foundation Server Consultant
Notion Solutions

Blog: http://www.edsquared.com
Twitter: @EdBlankenship
LinkedIn: http://www.linkedin.com/in/edblankenship
E-Mail: edb@notionsolutions.com

MCTS(rgb)_1390



Displaying Release Status Dashboard Information Around Office Using Ethernet



I just noticed an interesting product that I could see used for those folks wanting to shine some light and transparency with their release status around the office.  You can use one of the many third-party products that show a “dashboard” of information, like TeamPulse or the TFS Project Dashboard,  from Team Foundation Server or you can always roll your own.  However, in several office layouts, I have always found it awkward to get a computer situated near enough the high traffic areas.  I didn’t realize it but they actually make VGA extenders that allow you to push a monitor signal across your Ethernet infrastructure (CAT5 or CAT6) up to 490 feet!  This particular one even splits the VGA and audio signals so that you can have two monitors with a duplicate signal at the receiving end.  Neat.

 

VGA Extender across Ethernet CAT5 or CAT6   Telerik TFS Project Dashboard

 

I’m wondering if you could couple it with a huge multi-touch monitor and then have an awesome Scrum or Kanban board?

 

Ed Blankenship



Offline SharePoint TFS Team Portal Sites with SharePoint Workspace



Office SharePoint Workspace 2010 Box ShotI recently re-discovered a feature of Office SharePoint Server 2010 and Office SharePoint Workspace 2010 that allows you to create local workspaces stored on your computer that syncs with a SharePoint site like the team portal site that gets associated with a Team Foundation Server project.  The nice thing about this is you can access synchronized SharePoint libraries and lists even when you are disconnected from the SharePoint server.  This allows you to read and edit content which become cached so that it will synchronize whenever you

You have access to this Office application if you have Office Professional Plus 2010.

History

The Office SharePoint Workspace product originally came out of Microsoft’s acquisition of a product formerly known as Groove back in around March 2005.  Groove was kind of neat because it essentially created these workspaces that could be shared across multiple computers and synced anytime you had an Internet connection.

Fast forward to Office 2010 and Microsoft has enabled synchronization with a SharePoint site!

Connecting to Your TFS Team Portal Site

First thing you will need to do is make sure you get to the team project’s portal site.  You can do this by opening Visual Studio 2010 and choosing “Show Project Portal…” on the context menu for the team project you are interested in.

image

Next, choose “Sync to SharePoint Workspace” from the Site Actions drop-down available in the top-right corner of your SharePoint 2010 team portal site.

image

Once you do that Office SharePoint Workspace 2010 will prompt you about whether you want to sync the site.  By default it will sync all document libraries and lists but if you choose “Configure…” then you can select the libraries and lists that you want to synchronize with your local SharePoint workspace.

SNAGHTML23130d50

SNAGHTML2313ae7f

After you confirm your configuration, the workspace will immediately begin to synchronize!

image

Quite a handy utility for users of SharePoint 2010 sites!

Ed Blankenship

Posted in TFS | Tools | VSTS


Speaking at the Visual Studio ALM Virtual User Group about TFS 2010 Build



Recording AvailableView Recording
Recording Details
    Subject: VSALM UG - Customizing the Build Process with TFS 2010 Build and Workflow Foundation
    Recording URL: https://www.livemeeting.com/cc/usergroups/view
    Recording ID: H274M4

 

Okay… Let’s try this again.  Last time we had some issues with Live Meeting and needed to reschedule this user group presentation.  The cool part is that I already have slides and my demo created!  I have included my slides again below for future reference.

 

November 1st: Customizing the Build Process with TFS 2010 Build and Workflow Foundation

Date: November 1st, 2010
Times:

  • Central European Standard Time [CEST] - 19:00
  • UTC [without Summer Time] – 17:00
  • Eastern Daylight Time [EDT] - 2:00 PM
  • Pacific Daylight Time [PDT] – 11:00 AM

Add to Calendar: http://tinyurl.com/2vcue9n
Join meeting: http://tinyurl.com/37c4bh3

In TFS 2010, the automated build infrastructure has been revamped to use Windows Workflow Foundation (WF) instead of MSBuild. In this session, we will explore how to customize the default build process template and how to leverage multiple aspects of the workflow implementation for TFS 2010 Build.

We will cover:
• Explore the basics of Windows Workflow Foundation as it is used in TFS 2010 Build
• Review the high-level parts of the default build process template in TFS 2010 Build
• Adding new functionality to the build process using out of the box workflow activities
• Creating variables and process parameters that can be exposed to the end user
• Thoughts about designing & architecting your build process for reuse
• Building a custom activity for use in the build process template
• Deploying the custom activity to all of the build servers in the build farm

 

Slides

 

Ed Blankenship



CodePlex Team Web Access Site



I was looking through my blogging backlog and noticed that I never published this one!

 

I recently just finished up listening to the latest episode for the Radio TFS podcast and really enjoyed the discussion.  They had Jonathan Wanagel from the CodePlex team to talk about their use of TFS for the CodePlex site.  One interesting tidbit that I had never realized is that since they upgraded to TFS 2010, we all now have access to a load-balanced Team Web Access site as well!  Take a look below.

CodePlex Team Web Access Sitehttps://tfs.codeplex.com/tfs/web

CodePlex TFS Team Web Access Site

We haven’t ever really needed a web access site since the CodePlex web software does a lot what we would need but just in case you have a use for it then it is completely available for you.

 

Ed Blankenship

Posted in Community | TFS | VSTS


Postponed: User Group Talk about Customizing TFS 2010 Builds and Slides Available



Recording AvailableView Recording
Recording Details
    Subject: VSALM UG - Customizing the Build Process with TFS 2010 Build and Workflow Foundation
    Recording URL: https://www.livemeeting.com/cc/usergroups/view
    Recording ID: H274M4

 

Thomas and I were sitting in the Live Meeting conference room for today’s user group presentation and waited for about ten minutes without any new attendees.  We decided to go ahead and postpone the meeting but unsure of the new date at the moment.  Stay tuned to the Visual Studio ALM User Group website for the details of the postponed meeting.

We ended up discovering, thanks to some on Twitter, that the attendees were in a completely separate Live Meeting room!  We’re unsure how that exactly happened but in the meantime, I went ahead and posted my slides which are available below.  (Visit this post’s page if you are reading this inside a blog reader.)  We apologize for the mix up!

Slides

Please forgive the formatting of some of the slides.  The conversion process doesn’t seem to work out too well with layout issues.

 

Ed Blankenship



Speaking at the Visual Studio ALM Virtual User Group about TFS 2010 Build



Recording AvailableView Recording
Recording Details
    Subject: VSALM UG - Customizing the Build Process with TFS 2010 Build and Workflow Foundation
    Recording URL: https://www.livemeeting.com/cc/usergroups/view
    Recording ID: H274M4

 

Tomorrow, I’ll be speaking at the Visual Studio ALM Virtual User Group European chapter about TFS 2010 Build.  The full details are below.  Hope to see you there with your questions!

 

October 7th: Customizing the Build Process with TFS 2010 Build and Workflow Foundation

Date: October 7th, 2010
Time: 19:00 Central European Standard Time [CEST] (17:00 UTC without summertime)
Add to Calendar: http://tinyurl.com/2wmsfgu
Join meeting: http://tinyurl.com/2v3u8at

In TFS 2010, the automated build infrastructure has been revamped to use Windows Workflow Foundation (WF) instead of MSBuild. In this session, we will explore how to customize the default build process template and how to leverage multiple aspects of the workflow implementation for TFS 2010 Build.

We will cover:
• Explore the basics of Windows Workflow Foundation as it is used in TFS 2010 Build
• Review the high-level parts of the default build process template in TFS 2010 Build
• Adding new functionality to the build process using out of the box workflow activities
• Creating variables and process parameters that can be exposed to the end user
• Thoughts about designing & architecting your build process for reuse
• Building a custom activity for use in the build process template
• Deploying the custom activity to all of the build servers in the build farm

 

Ed Blankenship



DevSmackdown Podcast Episode about TFS Migrations with Ed Blankenship



Awesome!    I found out over the weekend that the Developer Smackdown podcast show where I was a guest has been posted online!  Go check it out.  Clark Sell and Mark Nichols are the co-hosts for the show and it was a fun chat about migrating to Team Foundation Server from legacy systems.

Show: TFS Migrations with Ed Blankenship

image

Here is the list of sites and\or resources mentioned in this show:

When doing a TFS Migration make sure you think about some of the following items:

  • Are you a big TFS project or little TFS Project kind of guy?  Think about your organization and their reporting structures when considering "the size" of your TFS projects.
  • Think about how you would report on things?  What types of questions are you trying to answer with your reports?
  • Did you know that Branch Visualization doesn't work across Team Projects ( at least as of the time of writing this )
  • Treat the migration just like any other product development you would do.
  • 1 GB of source typically takes 24 hours to migrate.  That is execution time.  (Conservative Estimate)
  • How much history do you really need?  Was it worth the cost to migrate?

Follow Show On Twitter

Subscribe to Podcast in Zune

Subscribe to Podcast in iTunes

 

 

Ed Blankenship



Increase Performance When Editing TFS 2010 Build Process Templates



For the longest time, opening a build process template (.xaml) file for TFS 2010 has been pretty painful.  It took a while for the workflow designer to eventually show up and the toolbox to be populated with the TFS Build Activities.  Nearly 30-45 seconds at times!

Recently, I applied a workaround that has dramatically reduced the time down to around 2 seconds!  Try it out:

    1. Create a file called empty.xaml and place the following text in it:
      <Activity xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities">
      </Activity>
    2. Open this file in Visual Studio.
    3. In the toolbox panel, add a new tab called “Team Foundation Build Activities”.  Note that it is important to get the tab name correct because if it is not correct then the activities will be reloaded.
    4. Inside the new tab, right click and select “Choose Items”
    5. Click the Browse button
    6. Load the file C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.TeamFoundation.Build.Workflow\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.TeamFoundation.Build.Workflow.dll
    7. Click OK to add the toolbox items to the tab.
    8. Create another new tab called “Team Foundation LabManagement Activities”.
    9. Inside the new tab, right click and select “Choose Items”
    10. Click the Browse button
    11. Load the file C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.TeamFoundation.Lab.Workflow.Activities\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.TeamFoundation.Lab.Workflow.Activities.dll
    12. Click OK to add the toolbox items to the tab.

 

Ed Blankenship



Connecting to TFS from Microsoft Office Outlook



Office Outlook 2010 LogoWe recently got awesome new laptops at work (which are just awesome BTW) and on the standard image included a Team Foundation Server tool that I haven’t used in a while:  TeamCompanion 3.0.  I had used earlier releases of the tool but always seem to forget to install it whenever I pave my machine as I do quite frequently.  It’s been a while and I must say… the 3.0 version is just awesome.  I’d like to go over a few things that I really like in the latest release.

Experience

The experience of connecting to TFS inside Outlook is just first-class.  The same icons that are used in Visual Studio Team Explorer are the ones that appear in Outlook.  That really does make a difference for me…  Notice that I can also add certain work item queries that I’m interested in to the Favorites area as well.
imageimage

If you are using Outlook 2010, you’ll notice that TeamCompanion adds a handy ribbon tab:

image

Work Items Galore

There are so many things you can do whenever working with work items with TeamCompanion!  For instance, let’s say you get an e-mail for a customer of a great feature request.  It’s super quick to create a new feature request work item or attach the e-mail to an existing work item.

image

What’s even cooler is that if the e-mail refers to a specific work item in the content (i.e. “Bug 1234”) then TeamCompanion can let you open the rich work item form to look at the details or edit the work item.  This is especially helpful for alert e-mails that you may get from TFS.

image

Even cooler is that all of the normal Outlook features work like replying, forwarding, flagging, categorizing, setting alerts, etc.

Other Work Item Features:

  • Offline Work Item Support
  • Scheduling Work Item Queries to Run
  • Great Rendering of a Work Item
  • Creating Tasks/Meeting Requests from Work Items
  • Printing
  • Editing Areas & Iterations
  • Bulk Editing
  • Searching Work Items
  • “Query By Example”

Reports

I think my favorite feature of TeamCompanion has to do with handling reports.  By default, the rich reports you get with TFS are all scoped at the Team Project level.  However, I find myself frequently needing to filter to a particular Area Path and Iteration Path.  TeamCompanion actually allows you to save those common filters that you perform every day and store them.  Allows you to have all of the presets that you want.

Another handy feature is the ability to send an e-mail with the report easily within Outlook.  Nice!

image

I’m certainly not doing the latest release of the product justice.  They did a great job with improvements and new features from previous versions that I have used.  I’d suggest you’d download the trial and kick the tires.

 

Ed Blankenship

Posted in TFS | Tools | VSTS | VSTS Process

Proposed New Visual Studio ALM Stack Exchange Site



Stack Exchange Area 51 LogoSome of the Visual Studio ALM MVPs have gotten together to drive the creation of a new Stack Exchange site dedicated to the Visual Studio ALM family of products (which includes Team Foundation Server.)  We were able to get past the “Definition” phase and now need to enough people to “Commit” to using it so that we can get the site off the ground.  If you aren’t familiar with the Stack Exchange concept, it’s an interesting way to ask questions and help answer them as well.  One of the sites that has been around for a while that I have participated in from time to time is Stack Overflow.  You basically end up with high-quality answers because others can agree/disagree with the answer and provide feedback or more information.

Help us out by indicating that you are going to commit to contributing to the site whenever it gets created.  Thanks for all your help!

Link:  Commit to Visual Studio ALM at Stack Exchange

 

Ed Blankenship

Posted in Community | TFS | VSTS


Microsoft’s Islands in the Stream



There is a great article in the August 1, 2010 edition of the SD Times by Dave Worthington (@dcworthington) about the Visual Studio 2010 ALM tools including Team Foundation Server 2010.  It’s titled Microsoft’s islands in the stream.”  Some really great colleagues in the ALM community have been interviewed and provided some pretty honest feedback from what we have been seeing over the last year or so.  Check it out!

 

Ed Blankenship



Lab Management Released and Included with MSDN Subscriptions



This is some really exciting news for customers of Visual Studio 2010 and Team Foundation Server 2010!  Today, Microsoft has announced that customers who have purchased Visual Studio 2010 Ultimate with MSDN or Visual Studio 2010 Test Professional with MSDN now receive the Lab Management capabilities for Team Foundation Server!  That means no per-processor licensing fees for your physical host servers that will be hosting your virtual machines!

Earlier this year, I passed on Lab Management news that indicated that it would cost $1,599 per processor (retail.)  Microsoft has listened to the feedback and has also made it a “feature” in the Visual Studio family instead of a completely separate product.

Microsoft has also announced an update to the Lab Management functionality in the different products to bring it to full RTM/RTW status.  You’ll recall that when Visual Studio 2010 released earlier this year that the Lab Management features ended up still being released in a “Release Candidate” status.  The product team has spent the last few months gathering feedback and include updates to improve performance throughout the product.  The “patch” will be available later this month.  I highly recommend updating to the latest version by installing the patch as soon as it becomes available.

When it is released, you will see the following “extra” installation media become available in your MSDN Subscriber Download listings:

  • System Center Virtual Machine Manager* (SCVMM)
  • Visual Studio 2010 Agents

*A grant of “limited use” rights for SCVMM are included.  This means that you can only use SCVMM for your Visual Studio 2010 Lab Management test lab.

This is a great move for customers.  Creating a virtual lab management can be an expensive endeavor for business.  I recall visiting customers who have spent tens of thousands of dollars on competing products like VMWare Lab Manager.  This is really bringing virtual lab management to everyone!

If you are curious about more information, see Brian Harry’s announcement.

 

Ed Blankenship



Milestone: Microsoft Developer Division and TFS 2010 Build



For quite a while, the Developer Division at Microsoft continued to use their internal build systems to build Visual Studio.  TFS Build had only been used by certain teams within the division but not standard across the division.  I had the opportunity to visit one of the huge build labs last time I was in Redmond and it’s impressive.  It was just one of them too. Smile  I really got an appreciation for the complexity that was involved in building .NET, Visual Studio, and Team Foundation Server.   We’re talking huge builds that take up a lot of time.

Brian Harry just mentioned that they had hit a huge milestone for the division during their MQ phase and have gotten a build to run through the TFS 2010 Build system!  Sounds like they still have some work to go to get it tuned but getting a Visual Studio build through TFS Build is huge accomplishment!  Looks like they have even taken some of the experiences they gathered and already integrated improvements into the next version of the product.  That just benefits all of us as customers whenever Microsoft is eating their own dogfood. 

Congratulations!

 

Ed Blankenship



Recursively Finding Files in TFS Build 2010



One of my favorite new build workflow activities is the FindingMatchingFiles activity.  It’s an activity that is provided out of the box for use during Team Build that returns an IEnumerable<string> of all of the files that match a particular wild card string.

It’s available in the toolbox under the Team Foundation Build Activities tab.  The full name of the activity is:  Microsoft.TeamFoundation.Build.Workflow.Activities.FindMatchingFiles.

TFS 2010 Build Workflow Activities Toolbox

Here is a typical usage if you are looking for all .CSS files in a particular folder.

TFS 2010 Build Workflow FindMatchingFiles Activity

The problem I was attempting to solve is how to find all of the files recursively in all of the subfolders as well.  All I had to do was change the match pattern argument to include a “**” in front of the original pattern and it worked like a charm!

TFS 2010 Build Workflow FindMatchingFiles Activity

Ed Blankenship



Comparing with the Latest Version in the Pending Changes Window



Usually before checking in to TFS Version Control, I will navigate to the pending changes window and compare/diff with the latest version to see what changes I have made.  It’s a good habit to go through just to make sure you aren’t checking anything in that you don’t intend to be committed.

I’ve just been doing it the long way every time by choosing the option from the context menu.

Compare with Latest Version in TFS Pending Changes Window

A client asked if there was a quicker way and I ended up finding out that there are two undocumented features to diff the files in the pending changes window:

  • Shift + Double-Click on the Item
  • Shift + Enter on the Item

Updated – (7/1/2010 11:45 AM)

You can use a registry key to even swap the view/diff behavior in the Pending Changes tool window.  Setting this registry key will make double-click/enter run compare, and shift+double-click/enter view the file.

  • Path:     HKCU\Software\Microsoft\VisualStudio\<ver>\TeamFoundation\SourceControl\Behavior
    • <ver> = 10.0 for Visual Studio 2010 & Team Foundation Server 2010
    • <ver> = 9.0 for Visual Studio 2008 & Team Foundation Server 2008
    • <ver> = 8.0 for Visual Studio 2005 & Team Foundation Server 2005
  • Value:   DoubleClickOnChange (DWORD)
    • 0 for view as the primary command (default)
    • 1 for compare as primary command

How about that?

 

Ed Blankenship



Deploying Process Template Changes Using TFS 2010 Build



I mentioned in my last blog post about using TFS to manage TFS that I’d talk a little about how I use TFS 2010 to manage and deploy process template changes.  I’m excited to be able to provide some more details about it!

Background

I use to create batch files for deploying process template changes and store them in version control.  There’s certainly nothing wrong with that approach but I really wanted have an easier way to maintain this process that allowed reusability and even continuous integration.  Whenever I checked in a change to the process template branch for the test environment, I wanted it to immediately deploy those changes to that environment.  I also wanted to make it super easy for others to be able to make changes and then queue a deployment.

I need a build definition using TFS 2010 Build!

Build Process Template

So I have created a build process template that does exactly this.  My goals for this process template were to not require any custom workflow activities or custom assemblies to be required to get the build process template to work.  You simply only need to check-in the XAML file and begin using it.  That one requirement ended up being tougher to follow than I originally thought.  I had to take a few alternate methods that didn’t always end up with the best user experience but I think you’ll see that the template is still helpful.  (If you have ideas for improvements, please let me know!)

I hope you’ll see it as an example for creating “builds” that don’t necessarily compile & run tests.  Using Windows Workflow Foundation in Team Build 2010 makes it extremely useful for any type of process you want to automate.

Overview

At a high level, here is what this build process template attempts to accomplish:

  • Standard Build Features:
    • Build Versioning
    • Label the source using the version number
    • Getting Latest Version or Specific Version
    • Associate Changesets & Work Items
    • Gated Check-In, Continuous Integration, etc.
  • Ability to specify multiple team projects to update
  • Ability to specify multiple work item types to update
  • Backup each of the the work item type definitions that are currently being used in each team project (just in case!)
  • Copy the version of the work item type definitions that are used and backups to a drop folder

Disclaimer:  I’m going to give this template the “works on my machine” label.  This template may not perform as advertised including blowing up your server, deleting everything on your hard drive, or cause your hair to fall out.  Use at your own risk!  You have been warned.  If it works for you, awesome!  If not, please let me know about any issues or areas of improvement.

How to Use the Build Process Template

After you downloaded the template and check the XAML file into your build process templates folder, you’ll want to create a new build definition to use it.  Make sure you have also checked in your process template to a version control folder.

Workspace Definition

Specify the version control folder that contains your process template.  By default it will download the entire team project and scoping down the build process template allows your build to run quicker since it is not downloading everything in the team project.

image

Process Tab

Choose the new build process template file from the available process templates:

Note:  If you don’t see the build process template as an available item in the combo box, you’ll want to click New and then choose the XAML file you checked in as the existing build process template.

image

The next thing you’ll want to do is specify the team projects you want to update and the URL for your TFS 2010 team project collection.

image

The last two required process parameters are extremely important.  You need to specify the work item type names and the server path locations to the work item type definition (XML) files.  Each of the process parameters are string lists so you’ll want to make sure you match them up in the exact order in both lists.

Work Item Type Names (for MSF Agile)

SNAGHTML996183

Work Item Type Definition Files

Make sure you specify the server path location for each of the WITD files!  I ended up reusing a dialog for this purpose that you may have been used to seeing in other builds you have configured.  It’s the same editor that allows you to choose solution and project files to build.  We can use it for this purpose too!  Just be sure to select the “All files (*.*)” filter for the Items of Type combo-box.

SNAGHTMLa1fa96

Again – make sure you put each of the XML files in the same order that you used for the work item type names.  For example, your Bug.xml file will be the first in the collection and UserStory.xml will be the last if we are using the same WITs as the figure above.

Other Details

Make sure that your build agents have Visual Studio Team Explorer 2010 installed so that witadmin.exe will be located.  You can always use the new build agent tagging functionality to identify which agents have Team Explorer available and then use the Agent Settings process parameters to limit the build to only reserve agents with the tags you specify.

Finally, make sure your build service account has the appropriate permissions to be able to import new work item type definitions to your team projects.

[Updated – 3/24/2011]

Thanks for reporting feedback and bugs!  Latest version includes the following bug fixes and improvements:

  • 10/26/2010:  Will properly associate work items and changesets correctly now.
  • 10/26/2010:  Discovers location of witadmin.exe on build servers with a 32-bit OS installed.
  • 10/26/2010:  Detects error on import and writes as build error instead of message.  Allows for the build to not succeed in this circumstance.
  • 3/24/2011:  Reduced the verbosity of some of the build workflow activities.  This should reduce the noise in the build log and show what is most important.  Be sure to set the entire build’s verbosity higher if you need to troubleshoot issues.  (If you are interested in how to lower a particular workflow activity’s tracking verbosity, check out page 402 in our new TFS 2010 book).

 

Download the Build Process Template

 

Let me know if you have any feedback about things you like or areas for improvement!  Feel free to comment below so I don’t lose track of the suggestions. Smile

Ed Blankenship



Managing TFS Artifacts Using TFS



Many years ago, I really thought the fact that SQL used itself to manage itself was pretty cool (i.e. master database.)  For the past several years, I have been doing something pretty similar and someone just reminded me that it was an interesting concept.  I use TFS to manage the artifacts needed to manage TFS.

TFS Team Project

The first thing I end up doing is creating a team project usually named “TFS” to hold all of the artifacts.  I personally only give the TFS Administrator permissions to the project.  As you’ll see, there may be security sensitive content that may be stored in this team project.  From time to time, other developers may help out with some of the custom tools that can be created to extend TFS.  I’ll create special team project security groups and permissions to those security groups for those particular scenarios.

Reporting Service Encryption Key Backup

After I have setup the TFS team project, the first thing I check-in is the backup of the encryption key from SQL Reporting Services.  It’s extremely important for disaster recovery scenarios that you have a backup of the key since the encrypted contents of SQL Reporting Services won’t be recovered if you don’t have the key.  By checking the key file into version control, you can always make sure you’ll have it backed up with the regular SQL backup process of the databases.

image

See for more information:  Back Up the Reporting Services Encryption Key

Process Templates

image Managing changes to process templates is one of the main reasons I had originally had the idea of creating a team project to manage TFS artifacts.  I think version control is the perfect place to manage changes to all parts of your process templates, especially work item type definition files.  I even create two branches of the process template folders:  one for the production environment and one for the test environment.  This allows you to manage changes just as you would your software releases.  Work item type definition changes definitely require some testing especially since there are risks in causing issues with certain changes.  (Has anyone ever messed up the warehouse?) :)

Build Process Templates

I keep all of the “golden” copies of build process templates in this team project.  I usually perform my actual development work for build process templates in this team project as well and will usually have some test build definitions to try them out.  You could also easily use your staging or test TFS server for this effort too.

Custom Build Assemblies for Build Controllers

One of the awesome new features for TFS 2010 is the ability to store custom build assemblies (like workflow activities, build tasks, build process parameter custom editors, etc.) in a version control folder that the build controller can notify build agents to monitor to deploy those assemblies to each of the build servers in your build lab.

If you want to deploy a new version of those assemblies, just check in the new version and all of the controllers & agents will use them for the next build they perform.  Pretty awesome if you ask me.  I create a folder in the TFS team project just for this purpose.

SNAGHTML6d53cc

Source Code

imageThe TFS team project is usually the main location where I will store source code for all of the different extensibility points for TFS and Visual Studio.  This list of custom tools isn’t exhaustive by any means but should give you some ideas of the type of source code that could be contained in this team project:

  • Custom Check-In Policies
  • Custom Build Workflow Activities and Build Tasks
  • Custom Work Item Controls
  • Web Service Event Handlers for TFS Events
  • Custom Testing Data Collectors (Diagnostic Data Adapters)
  • Migration Utilities and Adapters
  • Custom Code Analysis Rules
  • Global Code Analysis Spelling Dictionary
  • Custom IntelliTrace Event Collectors
  • Other Visual Studio or TFS Tools

Builds

As I already mentioned above with testing out build process templates, I have several build definitions in this team project:

  • Testing Team Build 2010
  • Deploying Process Template Changes to Test & Production TFS Servers (I plan on having more information about this process in a future blog post.)
  • Custom Tool Builds

Other

Don’t stop with this list.  If it’s something that helps to manage TFS, feel free to store it in this team project.  Here are a few other examples of the types of artifacts I use this team project for:

  • SQL Queries to manage the data tier
  • Custom SQL Reporting Services Reports

 

What other types of things do you think, dear reader, are important to store in this team project for managing TFS?

Ed Blankenship

Need a List of Strings as a TFS 2010 Build Process Parameter?



I’ve been hitting my head against the table today trying to have a nice experience for editing a collection of string values as a custom build process parameter in my TFS 2010 build definition.  The problem comes with what editor is actually used to edit the process parameter at design time.  You can specify a custom editor for any of your custom build process parameters which is really handy but I needed the ability to use editors that were out of the box but still provided a sufficient experience to the end user.

My journey towards a solution…

Attempt 1

I began really wanting to have one build process parameter that had the type of Dictionary<string, string>.  That didn’t work out so well because when I went to edit it in my build definition, I received this editor and the add/remove members buttons.

TFS 2010 Build String Collection Editor

Attempt 2

I gave up on the Dictionary<T, T> approach and decided that I could handle it by specifying two collections of type Collection<string>.  I also attempted to try List<string> and even a String[] but ended up with this editor that seemed to not like System.String.

TFS 2010 Build String Collection Editor

Attempt 3

I found Microsoft.TeamFoundation.Build.Workflow.Activities.StringList.  It is a custom type that is known to Team Build 2010 and even has a custom editor that is registered to it that shows up.  That editor is Microsoft.TeamFoundation.Build.Controls.WpfStringListEditor.  Works great for me!  Take a look:

TFS 2010 Build String List Editor

 

Ed Blankenship



TFS 2010 Microsoft Certification Exam (70-512) Available



Looks like this past weekend Don from Microsoft Learning announced the public availability of the Team Foundation Server 2010 Microsoft certification exam.  I had several people ask about what happened to the Beta exam for 70-512 and the only thing I can see is that it was released directly to the public without a Beta phase.

If you pass this exam, you will receive the Microsoft Certified Technical Specialist certification for TFS 2010.  Officially it will indicate:
MCTS: Visual Studio 2010 Team Foundation Server, Administration

I’ll be taking the exam this weekend so I’ll let everyone know how it goes.  Well… as much as I can!  Exam candidates agree not to disclose details about the exam when they take it.

There aren’t any preparation materials available just yet as listed on the Exam Details site.  It does however list the topics that are covered on the exam:

About this Exam

This exam is designed to test the candidate's knowledge and skills on installing, configuring and maintaining Visual Studio 2010 Team Foundation Server.

Audience Profile

This exam is intended for candidates who install, configure, and manage a Microsoft Visual Studio Team Foundation Server (TFS) 2010 implementation. Candidates typically work in an enterprise development organization that provides process automation services by using TFS.

The qualified candidate has:

  • a solid understanding of the TFS architecture and components.
  • experience installing and configuring a TFS in both single-server and multi-server configurations.
  • experience managing security for TFS components.
  • experience configuring and using Team Build.
  • experience adapting process templates to an organization.
  • experience managing project artifacts with TFS version control.
  • experience configuring and using work item tracking.

Skills Being Measured

This exam measures your ability to accomplish the technical tasks listed below.The percentages indicate the relative weight of each major topic area on the exam.

Installing and Configuring TFS (27%)

  • Install TFS.

    This objective may include but is not limited to: SQL Server version support, installing TFS in a multi-tier or multi-machine environment, installing TFS in a load-balanced environment, setting up version control proxy

  • Configure application tier

    This objective may include but is not limited to: validating an installation, configuring SMTP for TFS, changing the URL (friendly name), changing the default SharePoint Web application, setting up reporting (SQL Server Analysis Services)

  • Migrate and upgrade TFS.

    This objective may include but is not limited to: upgrading TFS 2005 or TFS 2008 to TFS 2010, importing a source base from Microsoft Visual Source Safe (VSS), a third-party revision control system, or a sub-version

  • Install and configure team lab.

    This objective may include but is not limited to: set up environment templates, installing and configuring test agents, installing and configuring Virtual Machine Manager (basic Virtual Machine Manager installation), creating library shares or resource pools

  • Install and configure multiple build agents and controllers.

    This objective may include but is not limited to: tagging, binding a controller to a project collection, adding as build agent

Managing TFS (27%)

  • Manage Team Project Collections.

    This objective may include but is not limited to: moving project collections, managing team collections and projects, creating and configuring team project collections, moving team projects from one collection to another, creating a team project with SharePoint and SQL Server Reporting Services, cloning (splitting team project collections, partitioning)

  • Configure for backup and recovery. 

    This objective may include but is not limited to: backup and recovery of TFS and related components, recover a failed application tier, recover a failed database tier, implement a disaster recovery plan

  • Monitor server health and performance.

    This objective may include but is not limited to: application tier logs, monitoring the server for performance issues (monitoring activity logging database and TFS server manager), monitoring job infrastructure for failed jobs (monitoring warehouse adapters and warehouse jobs), cleanup of stale workspaces and shelvesets, cleanup builds (applying retention policies), setting up team build to use a version control proxy server

  • Administer TFS application tier.

    This objective may include but is not limited to: retiring or archiving projects and purging the system, rebuilding a warehouse, configuring user permissions by using Active Directory Domain Services  and TFS groups, moving a TFS instance to a new server or a new domain, configuring security for TFS Work Item Only View

  • Manage reporting for TFS.

    This objective may include but is not limited to: basic reporting using Microsoft Office Excel Services, adding a custom report to a SharePoint project portal, uploading a new SQL Server Reporting Services TFS report, configuring to enable a report to appear in a SharePoint project portal

  • Set up automated functional and UI tests.

    This objective may include but is not limited to: setting up a build definition, configuring the build definition to use the proper lab environment, setting up tests to work on an installed agent, setting up a service as interactive, setting up data collectors

Customizing TFS for Team Use (24%)

  • Configure a team build definition.

    This objective may include but is not limited to: setting up for a Symbol Server and Source Server, setting up for test impact analysis, setting up for custom build numbers, configuring build log verbosity, setting up for code analysis, setting up for automated unit testing, setting up for architecture validation

  • Configure and execute a build. 

    This objective may include but is not limited to: queuing a build with parameters, reconciling workspaces as part of a gated check-in workflow, setting up build triggers (gated check-in, continuous integration, scheduled build)

  • Modify a process template.

    This objective may include but is not limited to: customizing a process template by changing the workflow for a work item, adding a new work item type as a child of an existing work item (WI), uploading and downloading process templates

  • Configure a team project.

    This objective may include but is not limited to: areas and iterations, default security groups, portal settings (team project portal site URL, process guidance URL)

  • Apply work item customizations.

    This objective may include but is not limited to: link types, Global list, creating a new WI category and adding existing WI types to the new category, adding or removing fields, transitions, queries, customizing a workflow, creating or editing a work item type, importing and exporting work item types, renaming work item types

  • Create Work Item Query Language (WIQL) queries.

    This objective may include but is not limited to: query folders and permissions, query types (tree, flat, directed), defining WIQL keywords, adding fields to a query, creating a WIQL query by using Team Explorer, identify built-in macros

  • Configure client connectivity to TFS.

    This objective may include but is not limited to: configuring Visual Studio, Team Explorer, Microsoft Excel, Microsoft Project, and other tools to connect to TFS, configuring clients for proxy server

Administering Version Control (23%)

  • Create and manage workspaces.

    This objective may include but is not limited to: cloaking, undo delete, modifying a workspace, deleting a workspace, specifying the workspace visibility, restoring deleted items, unlocking other users’ checkouts, pending changes, and code

  • Configure shelvesets. 

    This objective may include but is not limited to: private builds, creating a shelveset, deleting a shelveset, opening another user’s shelveset

  • Branch and merge source artifacts.

    This objective may include but is not limited to: track change visualizations, converting a folder into a proper branch and creating a new branch, merging and resolving file conflicts, viewing branch hierarchy, creating a branch, deleting a branch

  • Configure version control proxy.

    This objective may include but is not limited to: cache hit ratio, setting up the cache size, setting up for multiple TFS servers

  • Configure team project version control settings.

    This objective may include but is not limited to: enable multiple checkout, enable get latest on checkout, configuring check-in policies for a team project (work items, builds, code analysis, testing policies)

Good luck!  Let me know how you end up doing on the exam.

Ed Blankenship



Book Review for Wrox Professional Application Lifecycle Management with Visual Studio 2010



During the first week of April, a little package was sitting on my front porch with the first book to be released on the Visual Studio 2010 release that deals with the new Application Lifecycle Management (ALM) features.  For those of you who don’t know, this essentially means the former “Team System” line of products as we were exposed to it in the 2005 and 2008 releases.  Although the entire Visual Studio suite of products is considered something that helps you with ALM, the book primarily focused on Visual Studio 2010 Ultimate, Visual Studio 2010 Premium, Visual Studio 2010 Test Professional, Visual Studio 2010 Lab Management, and Team Foundation Server 2010.  During the Introduction, I even appreciated how the authors discussed about “where Team System went.”  It’s the best explanation of the branding change that I’ve seen to date.

I was extremely excited to start immediately reading the book.  Even though I have been closely involved with the 2010 release as a Microsoft MVP, when I started to read this book my goal was to be exposed deeper in the feature set being introduced in the 2010 release.

At the time of writing this blog post, the book was selling for $34.64 at Amazon.  The suggested retail price is $54.99.  It is currently #7 in the Software Development books category!

Strengths

If you are new to the ALM features in Visual Studio, I felt this book really offered you the ability to get the high-level overview of all of those features.  It’s essentially similar to a “survey” course that you would have taken in college.   It’s 696 pages that ends up going through all of the Visual Studio client and server features at just the right level of detail. There were even some areas that I felt that I learned more about and hadn’t been exposed to heavily in the past.

The architecture features were something that I had hoped to learn the most from.  They have just never been something that I dived into great detail during the 2010 release cycle.   All of the new UML diagrams that are available including the new architecture features like Use Case, Activity, Sequence, Component, Class, Dependency, and Layer Diagrams.  There was a also a great introduction to the Architecture Explorer.

The testing features have really been what has made up a majority of the Visual Studio 2010 release and the book definitely reflects that.  Going through the testing features, I really felt like I understood the end to end story.  It felt very rounded out!  These chapters are where I picked up a majority of the nuggets of information.  I can’t tell you how many times I said “wow, I didn’t know you could do that.”  I also feel like this is a great place to pick up some introductory knowledge about how Visual Studio Team Lab Management fits into the ALM story.  I also kept thinking how great this book would be for the testers on your team that are new to the Microsoft testing platform and Team Foundation Server.

There are so many changes to TFS, I can’t even begin to start describing them.  Thankfully, the book did a great job.  Especially with the revamp of Team Build to use Windows Workflow Foundation.  You can even download the Team Build chapter from the book for free here:  Team Foundation Build.  Other than automated builds, you’ll get a good pass by all of the rest of the new TFS 2010 features and architecture/topology changes.

There was a whole chapter dedicated to debugging with IntelliTrace!  That’s awesome.  I’m very much a fan of IntelliTrace and think that will truly change the way you develop.

Criticisms

I have been hoping to have a book available out there that really only discusses TFS.  The book definitely has a few chapters available on TFS and spends a good amount of time but that discussion is not the nitty gritty that I think some readers out there are really looking for.  With that said, I don’t think this book was positioned for the “TFS Administrator” exclusively.  Again, I really think this is a survey-level review of the entire ALM stack of features for Visual Studio.  That doesn’t allow you to go into the depths of any particular product.  There currently isn’t a book available for TFS 2010 with the level of detail that I am sure some readers out there are hoping for.  We’ll see what happens in the months to come…

My next criticism isn’t so much for the content of the book as what is media choices are available.  I own a Kindle DX and I imagine a few other techies in the world have some type of eBook reader as well.  I was hoping to have a CD that contained a DRM-free PDF that I could copy over to my Kindle DX whenever I’m traveling and need a quick resource for reference.  Wrox certainly does allow you to get a PDF of books but you have to order them separately even if you had purchased the hard copy.

Finally, the only other thing that I noticed was in that chapter about IntelliTrace (see above) there wasn’t a mention of Symbol & Source Server.  I couldn’t believe it.  There is definitely a discussion later in the book about Team Build’s integration with Symbol & Source server but I was hoping to have seen some more detail in the IntelliTrace chapter about the importance of having them setup for your organization.  You’ll want to put two and two together.

 

Now that I’m finished scrounging from the bottom of the barrel to find some criticisms… :)

My Recommendation

Hands down, get this book.  I think it’s well worth it.   I know each of the authors and it really looks like they put a tremendous amount of effort into writing the book.  The topics are really presented well and at the right level of detail for someone really wanting a crash course in all of the Visual Studio ALM features.  I can’t even tell you how many new nuggets of information that I ran across of things that I didn’t even realize were in the product.

It certainly gets my stamp of approval! :)  Kudos to the authors.

 

Very respectfully,

Ed Blankenship

Microsoft MVP of the Year, Visual Studio ALM and Team Foundation Server



Can I Use Microsoft Test Manager for User Acceptance Tests?



Microsoft Visual Studio Test Professional 2010 Box

That answer is a resoundingly yes, in my opinion, and I believe you would find some real value in having your UAT testers using Microsoft Test Manager to perform those UAT tests.  However, I think the real question that should be asked is do you have to purchase a license for Microsoft Visual Studio 2010 Test Professional to use Microsoft Test Manager to perform those User Acceptance Tests (UAT?)

 

Background

What are you talking about, Ed? 

There is a licensing exclusion that exists that really helps out when business users connect to development/test environments to perform user acceptance testing.  This exclusion really kicks in and helps when those development/test servers have used Operating Systems, SQL  Server, etc. licenses that conform to the MSDN EULA.  The exclusion basically says those non-technical business users don’t require an MSDN subscription to connect to those development/test servers if they are only performing user acceptance tests.  Normally, each person who connects to a development/test environment that has MSDN software installed on it (like the OS) requires that each of them has an active MSDN subscription.

Here’s the full description directly from the Visual Studio 2010 Licensing Whitepaper:

User Acceptance Testing

At the end of a software development project, end users (or team members acting as proxies for end users) typically review an application and determine whether it meets the necessary criteria for release—a process sometimes called user acceptance testing or UAT. MSDN software may be accessed by end users who do not have MSDN subscriptions for purposes of acceptance testing, provided that the use of the software otherwise complies with all MSDN licensing terms.

Under MSDN subscription licenses, user acceptance testing must not use live production data. If a copy of any live production data is used, then that copy of the data must be discarded after the testing is complete and cannot be incorporated back into the live production data.

So back to the real question…

 

Do you have to purchase a license to use Microsoft Test Manager to perform UAT?

Well that’s the question that a client brought up.  Did they have to purchase a license of at least Visual Studio 2010 Test Professional for those business users if they wanted to use Microsoft Test Manager to perform the UAT tests?

Microsoft’s answer is:  Yes

The fact that you are using Microsoft Test Manager, in their opinion, is that you are doing more technical & formalized testing than what they would consider to be in the UAT licensing exclusion for MSDN software.

 

Ed Blankenship



Team Explorer Everywhere Announced and Launched



One of the announcements made yesterday was the new product Microsoft Visual Studio Team Explorer Everywhere 2010!  If you are not familiar with the former Teamprise products that were purchased late last year by Microsoft, this new product is essentially the Microsoft branded version of Team Explorer that works inside most Eclipse-based IDEs.

Visual Studio Team Explorer Everywhere 2010 Logo

You can download this new product from the Microsoft Downloads site or from  MSDN Subscriber Downloads.  There is even a new forum dedicated on the MSDN Forums site.

If you are curious about this product, be sure to follow Martin Woodward’s blog site for more information.  Martin Woodward is now the Program Manager on the TFS Product Team who works with this line of tools.

 

Ed Blankenship

Posted in TFS | VSTS

Team Explorer Included in Visual Studio 2010 Installation



One of the really great things about the Visual Studio 2010 installers is the fact that Team Explorer is installed with all of the Visual Studio editions (except Express.)  This even includes Visual Studio 2010 Test Professional.  In previous versions of Visual Studio, you would have to install Team Explorer additionally after you installed Visual Studio.  Thankfully those days are long past us…

However, if you do have users that only need the functionality of Team Explorer 2010 (like the add-ins and integration for Microsoft Office Excel and Microsoft Office Project) then you can download them separately either from MSDN Subscriber Downloads or from the Microsoft Downloads site

Visual Studio 2010 Team Explorer on MSDN Subscriber Downloads

Just a reminder, you can download Team Explorer 2010 for free but you still need to make sure that each user has a TFS 2010 CAL (unless they meet certain exclusions.)   If you purchased Visual Studio 2010 with a full MSDN subscription then you already receive a TFS 2010 CAL included.   The complimentary MSDN Essentials subscription that is included with Visual Studio 2010 Professional does not include a TFS 2010 CAL though.

 

Ed Blankenship

Posted in TFS | VSTS


Visual Studio 2010 and TFS 2010 Launch Today



imageEven more important news… is that Visual Studio 2010, .NET Framework 4,  and Team Foundation Server 2010 are being launched today!  It’s been a really long time coming but super excited that this day is here.

Microsoft .NET Framwork LogoVisual Studio 2010 Logo

You can watch the launch event live from Las Vegas here. I believe the coverage will start at 8:30 AM (PDT) / 12:30 PM (EDT.)

Trial downloads should be available sometime today at the Visual Studio 2010 Marketing Site.  MSDN Subscribers will be able to download the CDs for Visual Studio and TFS later today starting at 10:00 (PDT) / 2:00 PM (EDT.)  I doubt that Volume Licensing customers will be able to download the 2010 CDs today from the Volume Licensing Center.  It may take some time before it is available through the VL channel.  If you are unable to get the media through MSDN, you can always download the trial CDs today and then apply the product key later on when you get it from MSDN or the Volume Licensing site.  It doesn’t require you to uninstall and reinstall.  You can just activate your trial copy!

  • In Visual Studio 2010, go to Help –> Register Product
  • In Team Foundation Server 2010 Administration Console, click the root node in the navigation pane and then click Update License.

Visual Studio 2010 Product KeyTFS 2010 Product Key

Happy Launch Day!

Ed Blankenship

Posted in TFS | VSTS

Notion Solutions acquired by Imaginet Resources Corp



In other news today… Imaginet Resources Corp has announced that they will be acquiring Notion Solutions.  Branding has even been updated on the Notion website already:

Notion Solutions An Imaginet Company

I have been working with the ALM folks over at Imaginet for a few years now including their co-founder Joel Semeniuk who is also an MVP in Visual Studio ALM (Team System) and a Microsoft Regional Director.  They’re a good group and definitely looking forward to working with them closely after the acquisition.  The Imaginet folks are also the ones who have been doing the software development effort around the freely available tools for TFS (Work Item Manager, Project Dashboard) and newly available TeamPulse.

TeamPulse

Posted in TFS | VSTS


Which Edition of Visual Studio 2010 Do I Buy?



Visual Studio 2010 LogoThe launch of Visual Studio 2010 and Team Foundation Server 2010 is just around the corner and I’m starting to hear this question quite a bit:  Which edition of Visual Studio 2010 do I need to buy for my team members?  My usual attempt at humor  would be responding with the question “How much money do you have?” but that doesn’t usually go very well for those with tight budgets. 

The first thing I want to say before we move any further in this discussion is:

  • The first rule of buying any type of Microsoft license is don’t buy retail if you don’t have to.  Say that a few times to yourself.  There are so many different volume licensing programs available that would end up working well for your team and organization size.  Do a little work and phone up your local Microsoft Sales representative to see about your options.  You’ll find that you could save a ton of money and most of them that I have worked with on behalf of my clients are willing to work out what’s best for you and your budget.  Give it a try – it’s really not difficult and could save your team quite a bit of money.

Earlier this year, the suggested retail prices were announced for each of the Visual Studio 2010 editions.  This should be a baseline of how to relatively compare the prices between each edition; not that you would ever pay retail prices right?

 

The Editions

Thankfully, we don’t have all of the editions that we had in the 2008 and 2005 releases.  In the 2010 release, there are essentially now three editions plus a new edition for generalist/non-technical testers.

Visual Studio 2010 Ultimate BoxVisual Studio 2010 Premium BoxVisual Studio 2010 Professional BoxVisual Studio 2010 Test Professional Box

I won’t spend time talking about which features are available in each edition and how to compare them because I believe the Microsoft Visual Studio marketing site is doing a really great job with the high-level overview.

Personal aside/opinion:  I believe IntelliTrace, alone, is worth the cost of Visual Studio 2010 Ultimate for you junior/senior developers.  I’m talking about both the local debugging scenario and the ability for testers to gather IntelliTrace logs while testing and then opening those up to troubleshoot a bug.  Both scenarios have been extremely valuable to me personally when I have both my developer & tester hats on.  I do understand that it takes some work getting the latter scenario to work correctly (symbol server, source serverTFS builds, etc.)  and also takes some effort around getting developers to actually learn how to use it well but it’s totally worth it in the long run.  Don’t hesitate to find some help from an excellent Microsoft Partner specializing in the Visual Studio ALM products, like Notion Solutions, if you want some assistance getting your developers/testers trained and setting up all of the nuts & bolts to get everything working.  (Shameless plug, I know, but what can I say?)

 

MSDN

Seriously, just be sure to get the MSDN Professional subscription included when you purchase your Visual Studio licenses.  (More information about MSDN Subscriptions)

Not only that, make sure your IT department (officially, the volume licensing administrator at your organization) gives all of your team members the “benefit access number” so that each team member can register for the MSDN benefits.  I can’t believe how many IT organizations don’t want their team members to access their benefits because “they might download the software at home” or heaven forbid “install it on their machines themselves.”  Come on…  You can tell I’ve heard several excuses.

Some of the new benefits of an MSDN Professional subscription are now that you receive priority forums support in addition to the included technical support calls, a real TFS 2010 CAL and a real TFS 2010 production license among many of the other benefits.

 

 

Scenario-Based Purchase Decisions

Microsoft did a good job reducing the number of editions but for some reason I’m still getting the question about what to purchase.  That tells me that people are still confused about deciding what’s appropriate for each team member especially when they have to consider the cost difference.  (Aside:  BTW, comparable ALM products on the market are SO much more expensive for what they deliver.)

More than likely, you are going to want to look at what scenarios you want to enable for your team.  Earlier this week, some colleagues at work and I were able to put together this presentation that goes through the different scenarios that I think most people would be interested in taking advantage of when adopting Visual Studio 2010 and TFS 2010.  You can look at each individual scenario and it will point out what you need to purchase for the different roles on your team.  After each of the individual scenarios are mentioned, you can even start to look at the most common combinations and see what that looks like.  Of course, I couldn’t go through every combination but if you don’t see one, post a comment.

Final Thoughts

I hope that you were able to get some information to help you make a better purchase decision.  Any suggestions?  I’ll be happy to update this blog post or the PowerPoint deck from time to time with those suggestions or other common combination requests.  Just leave me a comment below!

 

Take care,

Ed Blankenship

Posted in TFS | VSTS


Feature Support for Unmanaged Code in Visual Studio 2010 and TFS 2010



Just got exposed to a great table about what features are available in Visual Studio 2010 and Team Foundation Server 2010 for unmanaged code (C++.)  Thanks to Anna Russo for sharing!  Anyone know the source of this information?

Product Features (Visual Studio 2010 Ultimate)
Team Foundation Server
Version Control Yes
Work Item Tracking Yes
Build Automation Yes
Team Portal Yes
Reporting & Business Intelligence Yes
Agile Planning Workbook Yes
Test Case Management Yes
Visual Studio Team Explorer 2010 Yes
Development Platform Support
Windows Development Yes
Web Development N/A
Office and SharePoint Development N/A
Cloud Development N/A
Customizable Development Experience Yes
Testing
Unit Testing No
Code Coverage No
Test Impact Analysis No
Coded UI Test No
Web Performance Testing N/A
Load Testing N/A
Database Development
Database Deployment Yes
Database Change Management Yes
Database Unit Testing Yes
Database Test Data Generation Yes
Debugging & Diagnostics
"Pinnable" DataTips for easier data inspection N/A
Post-mortem debugging support for .NET (dump debugging) No
Breakpoint improvements (search in Breakpoints window, label, import/export) No
New WPF Visualizer N/A
Enhancements for debugging multi-threaded applications (Parallel Stack and Tasks) Yes
64-bit support for mixed-mode debugging Yes
Static Code Analysis Yes
Code Metrics No
Profiling Yes
IntelliTrace (Historical Debugging) No
Architecture and Modeling
UML & Layer Diagram Viewer Yes
Architecture Explorer Yes
UML 2.0 Compliant Diagrams (Activity, Use Case, Sequence, Class, Component) Yes
Layer Diagram and Dependency Validation No
Lab Management
Microsoft Test Manager Yes
Virtual environment setup & tear down Yes
Test Case Management Yes
Manual Test Execution Yes
Manual Test Record & Playback Yes
Lab Management Configuration Yes

 

Ed Blankenship

Posted in TFS | VSTS


When Will Microsoft Test Manager and Testing Tools Support Silverlight?



Microsoft Visual Studio Test Professional 2010 Boxsilverlight_logoA lot of people have been asking about whether the new Coded UI automated testing & Microsoft Test Manager test runner features would support Silverlight and I haven’t really had a good answer for them other than “not at 2010 RTM.”  There’s been a ton of reasons why that wasn’t the case but thankfully we received a little more information about timeline for that type of support.  We were also able to make this information available publicly so check out the raw info coming in below.  Notice my particular emphasis added around the release mechanism that was mentioned.

Whenever we talk about platform coverage for UI automation one of the frequent requests is support for Silverlight app testing. We have been hard at work trying to cater to this need and I wanted to update you all on where we are with this effort and provide a roadmap.

We are working on adding support for Silverlight controls for “Fast forward for manual testing” and “Coded UI Tests”. The focus is on line-of-business applications built with Silverlight 4 for both in-browser and on the desktop. The initial investigation is in progress and we are working with the Silverlight team to close on the overall design. We are planning to release a CTP version of a plug-in by Q2CY2010. This will be delivered out of band to active MSDN subscribers (Visual Studio Test Professional or Visual Studio Ultimate) customers only. […]

- Ram Cherala, Visual Studio Team Test Product Team

Make sure you have active MSDN subscriptions if you want to get out of band value from the product teams.  Anyone have any questions?

Ed Blankenship

Speaking at the TFS Product Team All Hands Meeting



Once of the nice things about having moved to Charleston, SC is being relatively around the corner from half of the Team Foundation Server team in Raleigh, North Carolina.Microsoft Corporation Office in Raleigh North Carolina TFS Product Team  I get plenty of opportunities to talk with the TFS product team in Redmond, WA but rarely get the opportunity to talk with the side that’s in Raleigh.  It’s good being close now.

Yesterday, I had the privilege and honor of talking at the TFS Product Team’s All Hands meeting at the Microsoft Office in Raleigh, North Carolina.  Each quarter, the entire team split between Redmond, WA and Raleigh, NC get together to talk about different topics to review the last quarter and looking forward to the future about work they want to do.  It’s very similar to some “All Hands” meetings that each of our companies put together.  They have had a tradition in the past to invite a customer in to talk about how they have used TFS in their daily work and I imagine that gives the entire team some insight into how people outside of Microsoft are actually using the products they spend every day creating.  I was invited to be that customer for this quarter.

They also really like for you to spend some time talking about what your feature requests are for the product.  I had the opportunity to discuss some of my personal areas that I’d like to see some investment made.  Normally when going to events like the Microsoft MVP Summit or providing other private feedback, I take the approach of being objective and provide feedback on behalf of the people I took to and the customers that I help.  I rarely bring up anything that I personally would like to see since some of the things I want are things that most people would never even touch or appreciate.  However, this was my one time that I didn’t feel bad about being totally subjective and asking for my personal feature desires :)

I also had some time to spend talking with the Build team and Version Control team about problems areas that I think people will run into when TFS 2010 launches next month as well as discussing some of those things that some people really hate about TFS version control.  You know who you are on Twitter :)  It was a really great conversation about the problem scenarios really are that people face before arriving to frustration with the product.

I’ve said this before but I really admire and appreciate the team for the amount of effort they put into listening and acting on feedback.  I promise and can tell you that they’re listening.  There are plenty of features and changes even coming out in TFS 2010 that were things that I know that one of the MVPs, customers, or I had originally suggested.  That means they’re not only listening but they are doing something about it.

Anyhow, it was a very productive day and really enjoyed the time.  I’m so glad to be an MVP that is tied to such a great product group.

 

Ed Blankenship

Posted in Community | Speaking | TFS | VSTS


Branching and Track Changes Visualization in TFS 2010 is Awesome



I’m up early working on a problem that’s been nagging me and just had to stop for a second to show how friggin’ awesome the new Branching & Track Changes visualization tools in TFS 2010 are.  This is on a demo TFS 2010 environment but I wanted to use the APIs to find out information about what changesets were included in a merged changeset.  I needed to find a good candidate that allowed me to follow some changes throughout the branches.  I quickly found changeset 103 in my MAIN branch which included several (but not too many) individual changesets that were included with it.  I went ahead and tracked that changeset and got the following diagram below.

TFS 2010 Branch Visualization Track Changes Hierarchy View

However, I noticed that I ended up having some kind of partial merge as indicated in the Feature A branch with changeset 78 (as indicated by the yellow shading on the track changes visualization.)  That got me curious… What happened there?  It was pretty easy to figure out because all I had to do is change to the “Timeline View” instead of the “Hierarchy View” that I was currently in and I ended up receiving the visualization below which shed some light on things.

TFS 2010 Branch Visualization Track Changes Timeline View

The reason the Feature A branch was indicated as a partial merge was because not all of the changes that are included in changeset 103 (which is the changeset we’re pivoting off of for visualizations) has been merged into that branch.  It only contains changesets 76 & 77 but not 101 & 102.  Pretty handy!

 

Ed Blankenship



Easily Show and Track Dependencies for Work Items in TFS 2010



Dependency management can be tough.  One way you can help visualize dependencies is by using the new Predecessor & Successor link type in TFS 2010 Work Item Tracking.  The way this particular link type works is that it is of type “Dependency” topology.  Here’s some more information about the Dependency topology:

Link types of this topology are like Directed Network links in that they have directionality, but an additional constraint to prevent circular relationships.

image

Example XML:

   1: <LinkTypes>
   2:     <LinkType ReferenceName="MyLinks.LinkTypes.MyPred" ForwardName="My Successor" ReverseName="My Predecessor" Topology="Dependency" />
   3: </LinkTypes>

You can list the link types currently on your TFS server by using the following command at a Visual Studio command prompt:

witadmin listlinktypes /collection:http://YourTfsServerName:8080/tfs/YourTeamProjectCollectionName

The details about the dependency link type that we’re interested as listed from witadmin.exe is:

Reference Name: System.LinkTypes.Dependency
Names: Successor, Predecessor
Topology: Dependency
Is Active: True

Gregg Boer has some more great information about customizing link types in TFS 2010 available here:  http://blogs.msdn.com/greggboer/archive/2010/03/01/tfs-2010-customizing-work-item-link-types.aspx

Adding a Dependencies Tab on the Work Item Form Layout

If you would like to add a tab in the layout for the work item type definition, you can add the following XML segment to the WITD Layout Section:

   1: <Tab Label="Dependencies">
   2:   <Control Type="LinksControl" Label="Dependencies Information for this Bug:" LabelPosition="Top" Name="Dependencies">
   3:     <LinksControlOptions>
   4:       <LinkColumns>
   5:         <LinkColumn RefName="System.Id" />
   6:         <LinkColumn RefName="System.WorkItemType" />
   7:         <LinkColumn RefName="System.Title" />
   8:         <LinkColumn RefName="System.AssignedTo" />
   9:         <LinkColumn RefName="System.State" />
  10:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.OriginalEstimate" />
  11:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.RemainingWork" />
  12:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.CompletedWork" />
  13:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.StartDate" />
  14:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.FinishDate" />
  15:         <LinkColumn LinkAttribute="System.Links.Comment" />
  16:       </LinkColumns>
  17:       <WorkItemLinkFilters FilterType="include">
  18:         <Filter LinkType="System.LinkTypes.Dependency" />
  19:       </WorkItemLinkFilters>
  20:       <ExternalLinkFilters FilterType="excludeAll" />
  21:       <WorkItemTypeFilters FilterType="includeAll" />
  22:     </LinksControlOptions>
  23:   </Control>
  24: </Tab>

It will then show up on your work items something like this:

Dependencies Tab for Work Items in TFS 2010 

New Links Control Options

The LinksControl work item control has always existed but now that we have link types in TFS 2010, you can specify multiple links controls in the layout but have them specify certain filters.  Notice the User Story/Requirement, Test Case, and Bug in the MSF Agile and MSF CMMI process templates all take advantage of specifying multiple links controls.

There is more very early information about the new options of this control here:  http://blogs.msdn.com/teams_wit_tools/archive/2007/08/20/rosario-filtering-link-types-on-a-work-item-form.aspx

Dependencies Integration with Microsoft Office Project

One of the benefits of using the built-in Predecessor/Successor link type is that if you are pulling your work items into Microsoft Office Project, you end up seeing those dependencies in the project plan.  You can even change the dependencies in Project and publish your changes back to the TFS where they’ll show up on the new Dependencies tab you just created.  They are essentially round-tripped between Project and TFS 2010.

Microsoft Office Project Integration with TFS 2010 Tasks and Dependency Links Predecessor Successor

More Resources

 

Take care,

Ed Blankenship



Where is the Alerts Editor / Explorer in the TFS 2010 Power Tools?



I’ve had a few questions about the missing Alerts Editor node in Team Explorer after installing the TFS 2010 RC Power Tools so I thought I’d share with everyone.  First, Alerts Editor has been renamed to Alerts Explorer in the TFS 2010 Power Tools release.  Next, you’ll notice that in the TFS 2008 Power Tools, that a node existed underneath each Team Project shown below.

Alerts Editor in TFS 2008 Power Tools Visual Studio Team Explorer 

You’ll see that in the TFS 2010 Power Tools, it’s no longer available as a node under each team project but rather available from the context menu of the Team Project Collection node and named “Alerts Explorer.”

Alerts Explorer in TFS 2010 Power Tools Visual Studio Team Explorer

What is the Alerts Explorer?

There is a rich eventing & alerting system in TFS that allows end users to self-subscribe to alerts that meet different criteria.  These alerts can either be e-mail alerts or SOAP-based alerts to a web service URL.  (SOAP subscriptions can only be created by Team Foundation Server Administrators.)  By opening up the Alerts Explorer, you can see any of the subscriptions that you currently have created on the server.

Alerts Explorer in TFS 2010 Power Tools

Also, you can create new alerts based on some out of the box templates like “Work Items Assigned to Me” or “Failed Builds.”  This is a good starting off point for creating alerts and allows you to further customize the filter criteria to your specifications.

Tip:  As shown in the screenshot above, if you don’t want to receive an e-mail alert whenever you actually change something, be sure to include the “Authorized As <> Your Name” clause.

You also get some handy context menus around the Team Explorer UI to help you to easily create subscriptions.  For example, if there is a particular work item (like a bug) that you want to get e-mail alerts anytime someone changes it, just choose “Alert on Change..” from the context menu on that work item.  You’ll find some other context menu items for Alerts in other places so have fun finding them!

Work Item Alert On Change Context Menu TFS 2010 Power Tools

Ed Blankenship

Posted in TFS | Tools | VSTS


Microsoft MVP of the Year for VSTS & TFS



One of the most exciting parts of last week’s Microsoft MVP Global Summit was the surprise announcement that I was chosen as the MVP of the Year for Visual Studio Team System (Visual Studio ALM now) and TFS.  I can’t tell you how humbled I was to find out!  One of the special parts of this particular award is that each of the Visual Studio ALM MVPs nominated our peers for the award.  We have an exceptionally great group and to have been chosen from this great group is the most humbling part.  Thanks to each and every one of you for this honor!

Martin Woodward was selected as the MVP of the Year last year so I hear we’re going to start the tradition of passing on the “MVP of the Year” belt buckle :)  That should be fun to hold on to for 2010.

23451_1385878770534_1338983185_31125576_7070668_n 

(Thanks to Sunder Raman for taking the picture!)

One of the exciting “features” of the award was an invitation to a dinner with Soma Somasegar, Brian Harry, Scott Hanselman, Brad Abrams, Chuck, Sara Ford, and the other top-notch MVPs selected from the other Developer Division MVP groups.  It was truly a great dinner and we had a lot of great conversation.  Ewald Hofman (another VSTS MVP) also joined us for the awesome amount of contributions to the VSTS MSDN Forums.

Ed Blankenship: MVP Of The Year Belt Buckle

Thanks again to everyone for the awesome honor!

 

Very respectfully,

Ed Blankenship

Posted in Community | TFS | VSTS


News Update on Team Lab Management with TFS 2010



Just got some news about Team Lab Management in TFS 2010 hot off the press:

Q: How will support work for customers who are already using Lab Management with the Go-Live License in Beta 2 or RC?

A: We will continue to support customers that have already gone live with Lab Management 2010 pre-release go-live licenses.

 

Q: What are the pricing details for Lab Management 2010?

A: Suggested FPP retail price for Visual Studio Lab Management 2010 is US$1599. Of course, the majority of customers are likely to qualify for a lower price point based on volume licensing discounts. Lab Management 2010 will be priced per physical processor (each processor of each lab server must be licensed for Visual Studio Lab Management 2010). Visual Studio 2010 Ultimate or Visual Studio Test Professional 2010 is required to manage lab environments.

 

Q: Have we changed our shipping plans for the general availability of Lab Management 2010?

A: Quality has always been and remains a top priority for Visual Studio. Being definitive about RTM dates is always very difficult and doubly so for brand new v1 products. For this reason, until we are very close, we generally only forecast release timeframes rather than specific dates. While it’s true, early on, we had hoped to release the new Lab Management product at the same time as the rest of Visual Studio 2010. It became clear through the Beta cycle that it was taking a bit longer to get sufficient, detailed feedback. Excitement has been very high but there’s also a huge amount of new value in the 2010 wave; we made the decision that it was better for Lab Management to ship a little later in the 2010 wave if that means we can incorporate additional feedback to ensure it’s the terrific product everyone wants it to be. 

 

Remember, customers can deploy it with a supported pre-release go-live license!  If customers have any feedback during the pre-release process, please send that to the product group using Microsoft Connect.

 

About Visual Studio Lab Management 2010

Visual Studio Lab Management 2010 is a new offering in the Visual Studio 2010 release wave. Lab Management 2010 enables teams to configure and manage a virtual lab environment. Lab Management works with System Center Virtual Machine Manager for enabling teams to create environment templates, provision ring-fenced environments, and checkpoint those environments. Using Lab Management, you can accelerate setup, tear down and restoration of complex virtual environments to a known state for test execution and build automation. It extends build automation by automating virtual machine provisioning, build deployment and build verification in an integrated manner. It also enables testers to file rich bugs with links to environment checkpoints that developers can use to recreate complex environments, effectively reducing wasted time and resources in your development and test life cycle. Those checkpoints can be attached to bugs filed using the Microsoft Test Manager enabling the person fixing the bug to open the environment right to the appropriate point in the application flow.

 

Related Links

· Visual Studio Lab Management Team Blog

· Visual Studio Team Test Blog

· Microsoft Virtualization VHD Test Drive Program

 

Ed Blankenship



TFS 2010 and Visual Studio 2010 Release Candidate Available



The Release Candidate for Visual Studio 2010 and Team Foundation Server 2010 was made available a few days to MSDN Subscribers.  It’s now going to be made available to the rest of the world today:  http://go.microsoft.com/fwlink/?LinkID=151797

The first impression I have is that Visual Studio has been super super snappy and lot more purple :)  You can really take advantage of all of the performance work that has been performed by the product groups.  What’s funny is that I have was too slow several times to grab the screenshot below! :)

image

I have also done several TFS 2010 Beta 2 to RC upgrades so far and all of them have gone super well including a super complex setup that we have at Notion Solutions.  If you are planning on upgrading from Beta 2 to RC, be sure to read the Upgrade Guide before you get started.

As with the Beta 2, the RC of TFS, Visual Studio, and .NET Framework 4 can be used in production with a “Go-Live” license.  Be sure to check out Jeff Beehler’s blog post that has more information about the “Go-Live” license including how to register for complimentary support in case you need it.

After you get everything installed and used it for a few days, please be sure to give feedback about whether you think the release is ready to go by taking the RC survey.  There is only a limited time to give any feedback and the bar is high for things that will change before RTM so don’t delay!

Visual Studio Feedback Survey

Ed Blankenship

Posted in TFS | VSTS


Rollback or Undo a Changeset in TFS 2010 Version Control



Updated – 8/19/2011 – New Rollback Features Available in the UI with TFS 2010 Power Tools (See Below for More Details)

One of the new features for TFS 2010 Version Control is the ability to rollback or undo a changeset or check-in inside the product and see it as a new pending change type (and new change type in the history) inside Team Explorer. This feature has been available in TFS 2008 but you had to use the TFS Power Tools. The only gotcha for the TFS 2010 implementation is that you have to use the command-line application tf.exe to actually perform the rollback operation. More information about the tool is available here in the MSDN Library: http://msdn.microsoft.com/en-us/library/dd380776(VS.100).aspx

The syntax is:

tf rollback /changeset:changesetfrom~changesetto [itemspec] [/recursive]
[/lock:none|checkin|checkout] [/version:versionspec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

tf rollback /toversion:versionspec itemspec [/recursive]
[/lock:none|checkin|checkout] [/version:versionspec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

Versionspec:
Date/Time D"any .Net Framework-supported format"
or any of the date formats of the local machine
Changeset number Cnnnnnn
Label Llabelname
Latest version T
Workspace Wworkspacename;workspaceowner

image

image

Rollback Available in the UI Now

If you have the August 2011 or later version of the TFS 2010 Power Tools installed, you now have the ability to fire off a rollback straight from Team Explorer without having to use the command-line approach.  The main way would be to fire it off from the Source Control Explorer window.

image

However, you can start the rollback process from the Changeset History window as well.

image

 

Ed Blankenship

Slides Available for Lap Around Visual Studio 2010 Ultimate and TFS 2010



As promised, I have published the slides from my PowerPoint Deck for my talk on Saturday at the Columbia Code Camp.

Thanks to everyone I bugged during the week before to grab a hold of these slides! Contact me (using the contact form on the website) if you'd like to get a copy of the PowerPoint deck.

 

Ed Blankenship

Posted in Community | Speaking | TFS | VSTS


geekSpeak: Migrating from Visual SourceSafe to Team Foundation Server 2010



Tomorrow, I’ll be presenting in this month’s geekSpeak about migrating from Visual SourceSafe to Team Foundation Server 2010.  I’m sure we’ll get through the VSS content pretty quickly so with the time left we’ll talk about new branching & merging features, branch visualization, and gated check-in.

In this geekSpeak, Microsoft Most Valuable Professional (MVP) Ed Blankenship discusses migrating source code from Visual SourceSafe, including the history. There has not been a better time to migrate to the newest Microsoft source control offering, Microsoft Visual Studio 2010 Team Foundation Server, because Microsoft Visual SourceSafe support is ending soon and Team Foundation Server will be part of Microsoft Developer Network (MSDN) subscriptions in 2010. Ed discusses specific version-control features to help you become more productive like branching and merging visualization, annotate, shelving, and gated check-in. This geekSpeak is hosted by Glen Gordon and Brian Hitney.

Registration for the event available here:  http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&EventID=1032438525

BTW – The end-of-life support date for Visual SourceSafe is mid-year 2011.  Don’t get stuck on an unsupported product :) especially one that’s holding your source code!

 

Update:  The recording of this presentation is now available on Channel 9 here:  http://channel9.msdn.com/shows/geekSpeak/geekSpeak-Recording-Migrating-to-Team-Foundation-Server-from-Visual-SourceSafe/ .  Sorry about the dropped call in the middle of the presentation.  Also, here’s some links that I mentioned during the talk:

 

Ed Blankenship



Speaking at Columbia Code Camp about Visual Studio Ultimate and TFS 2010



I’m going to be doing a session at the Columbia Code Camp about Visual Studio 2010 Ultimate and Team Foundation Server 2010 and really looking forward to it!  Looks like Cameron Skinner already beat me by speaking out in Charlotte earlier this week but hopefully I’ll still have some people who haven’t seen the new features just yet!

Check out the other 32 sessions in the Agenda and be sure to Register.  Already looks like a big crowd so I’m hoping it ends up being successful.  There’s a lot to get through for a one-hour overview session but I plan on sticking around to chat if anyone ends up having any questions that we can’t get answered during the presentation.

Columbia Code Camp 2010

Session:  Lap Around TFS and Visual Studio 2010 Ultimate

Time:  11:15 AM – 12:15 PM  (Right before lunch!)

Track:  Framework

Room:  Amoco Hall (1C01)

Location:  University of South Carolina, Swearingen Building, 301 Main St., Columbia, SC 29201

Cost:  Free!

 

Update: Slides are now available below.

 

Ed Blankenship

Posted in Community | Speaking | TFS | VSTS


Pricing Announced for TFS and Visual Studio 2010



I'm pleased to announce that we now have pricing information that is publicly available for the Visual Studio 2010 and Team Foundation Server 2010 products!  Remember, these are Retail prices and if you are in a company you should never be paying retail :)  Always talk to your Microsoft Sales team and ask for volume licensing deals.

Also, if you didn’t hear, a production license for TFS 2010 and a TFS 2010 CAL is included with every MSDN subscription!

 

Suggested Retail Pricing (USD) for Visual Studio 2010

With 1-Year MSDN Subscription*

Product

Buy

Upgrade

Buy

Renew

Visual Studio 2010 Ultimate

-

-

$11,899

$3,799

Visual Studio 2010 Premium

-

-

$5,469

$2,299

Visual Studio 2010 Professional

$799

$549

$1,199

$799

Visual Studio Test Professional 2010

-

-

$2,169

$899

Visual Studio Team Foundation Server 2010

$499

$399

-

-

Visual Studio Team Foundation Server 2010 CAL

$499

-

-

-

Visual Studio Load Test Virtual User Pack 2010 (1000 Virtual Users)

$4,499

-

-

-

* Subscription contents vary by purchased product.

 

Ed Blankenship



TFS 2010 Branching Guidance



Thanks to the Visual Studio ALM Rangers, we have a new release of the TFS Branching Guidance!  Think of it like TFS Branching Guidance 3.0… it was developed specifically for TFS 2010 including tidbits on best practices using all of the new branching & merging hierarchy and visualizing change features.

I often talk about branching & merging strategies with my clients and it’s always great to have some diagrams and content to go back to and leave with them so that they can delve into Configuration Management a little more.

TFS 2010 Branch Hierarchy Visualization TFS 2010 Tracking Changes Merge Visualization

Head on over to their CodePlex site:  http://tfsbranchingguideiii.codeplex.com/

Project Description
The purpose of this project is to build some insightful and practical guidance around branching and merging with Visual Studio Team Foundation Server 2010. The new release focuses on Hands on Labs and includes lots of lessons learnt from the community Q&A.
Visual Studio Team Foundation Server Branching Guide 2010
Branching and merging of software is a very large topic. It is an area where there is a lot of maturity in the software industry. This Ranger solution focuses on applied and practical examples of branching that you can use right now. The 2010 release includes discussions around branching concepts and strategies but also focuses on practical hands-on labs.
Visual Studio ALM Rangers
This guidance is created by the Rangers who have the mission to provide out of band solutions for missing features or guidance. This content was created with support from Microsoft Product Group, Microsoft Most Valued Professionals (MVPs) and technical specialists from technology communities around the globe, giving you a real-world view from the field, where the technology has been tested and used.
What is in the package?
The content is packaged in 8 separate zip files to give you the choice of selective downloads but the default download is the TFS_Branching_Guide_2010_Complete_Package_v1 if you are interested in all parts.

  • TFS_Branching_Guide_Main_2010_v1.zip --> Start here
  • TFS_Branching_Guide_Scenarios_2010_v1.zip
  • TFS_Branching_Guide_Scenarios_2010_Poster_v1.zip
  • HOL_Quick_Start_Basic_Branch_Plan_2010_v1.zip
  • Lab_Files_HOL_Quick_Start_Basic_Branch_Plan_v1.zip
  • TFS_Branching_Guide_Q&A_2010_v1.zip
  • TFS_Branching_Guide_Diagrams_2010_v1.zip
  • TFS_Branching_Guide_2010_Complete_Package_v1
Team
Bill Heys, James Pickell, Willy-Peter Schaub, Bijan Javidi, Oliver Hilgers, Bob Jacobs, Sin Min Lee, Neno Loje, Mathias Olausson, Matt Velloso
How to submit new ideas?
The recommended method is to simply post ideas to the community or to contact the Rangers at http://msdn.microsoft.com/en-us/teamsystem/ee358786.aspx.

Ed Blankenship



geekSpeak: Migrating from Visual SourceSafe to Team Foundation Server 2010



Tomorrow, I’ll be presenting in this month’s geekSpeak about migrating from Visual SourceSafe to Team Foundation Server 2010.  I’m sure we’ll get through the VSS content pretty quickly so with the time left we’ll talk about new branching & merging features, branch visualization, and gated check-in.

In this geekSpeak, Microsoft Most Valuable Professional (MVP) Ed Blankenship discusses migrating source code from Visual SourceSafe, including the history. There has not been a better time to migrate to the newest Microsoft source control offering, Microsoft Visual Studio 2010 Team Foundation Server, because Microsoft Visual SourceSafe support is ending soon and Team Foundation Server will be part of Microsoft Developer Network (MSDN) subscriptions in 2010. Ed discusses specific version-control features to help you become more productive like branching and merging visualization, annotate, shelving, and gated check-in. This geekSpeak is hosted by Glen Gordon and Brian Hitney.

Registration for the event available here:  http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&EventID=1032438525

BTW – The end-of-life support date for Visual SourceSafe is mid-year 2011.  Don’t get stuck on an unsupported product :) especially one that’s holding your source code!

 

Ed Blankenship



How to Point to Report Builder 2.0 in SQL 2008 Reporting Services



Report Builder is an awesome tool in lieu of using Microsoft Office Excel or Business Intelligence Studio to create custom reports with SQL Server 2008 Reporting Services.  The version of Report Builder that shipped with SQL Server 2008 is Report Builder 1.0.  Report Builder 2.0 was later released with plenty of new features and a better report writing experience.

The only issue though is that the most discoverable way to install Report Builder using Click-Once is through Report Manager but it points to Report Builder 1.0 even after you install Service Pack 1 for SQL Server 2008.

SQL 2008 Reporting Services Report Manager Report Builder Link

If you installed Service Pack 1 for your Reporting Services instance, there is actually a way to change the behavior though to point it to the Report Builder 2.0 Click-Once install.  Click “Site Settings” in the upper-right hand corner and then fill out the Custom Report Builder Launch URL to “/ReportBuilder/ReportBuilder_2_0_0_0.application” if your server is setup in Native mode (which it should be if it is the RS instance for TFS) or “/_vti_bin/ReportBuilder/ReportBuilder_2_0_0_0.application” if it is in SharePoint Mode.

Custom Report Builder Launch URL

 

Alternately, if you want to download the full MSI installer you can over at Microsoft Downloads:  http://www.microsoft.com/downloads/details.aspx?FamilyID=9f783224-9871-4eea-b1d5-f3140a253db6&displaylang=en.  Thanks to the Reporting Services Team Blog for the handy information.

 

Ed Blankenship

Posted in Reporting | SQL | TFS

TFS 2010 and Visual Studio 2010 Launch Date



Visual Studio 2010 LogoIt wasn’t long ago that an original launch date (March 22, 2009) was announced for Team Foundation Server 2010, Visual Studio 2010, and the .NET Framework 4.0.  It then got postponed after the product teams realized that they weren’t going to meet that date and have a solid product up high release standards.  A new launch date has been announced to be April 12, 2010.

Now remember that launch date doesn’t mean release date!  I had a little discussion about it on a previous blog post but hopefully everything will get wrapped up, RTM, and will be available to MSDN Subscriber Downloads before the launch date.  Fingers crossed!

[Updated] Also, a Release Candidate will be available for all of these products in February and will include a public  “Go-Live” license just like Beta 2.  Be sure to upgrade to the RC as soon as possible and report any issues that you may be experiencing quickly since the time between RC and RTM will be very short.  I’m sure the product group’s largest goal is to make sure there are no show-stoppers being discovered in the RC.

 

Ed Blankenship

Posted in TFS | VSTS


Test Scribe: Test Plan Documentation for TFS



Surprisingly, I’ve heard from several people that they still want a hard-copy document form of artifacts that are getting stored in TFS like Test Plan documents or Requirements documents.  I can understand some situations like if you need to follow certain regulatory requirements as so forth but don’t really see the need beyond that why you would ever want a hard-copy :)  Help me understand more if you happen to be in that boat!

Anyhow, if you need a hard-copy test plan document then you are in luck!  Test Scribe has just been released which will take your test plan information, artifacts, and progress from TFS and generate a nice Word document.  Quite handy!  If only we can get the Requirements document power tool now then we’ll satisfy that other group of people!

I'd like to announce the beta availability of Team Test's first Power Tool release for Visual Studio 2010: Test Scribe.  This tool allows users of Visual Studio 2010 Ultimate Beta 2 to generate a Word 2007-compatible Test Plan Document from their plan, suites, test cases, and other artifacts.  Using the tool is a fairly straightforward process, including:

   1. Launch the Test Scribe tool.
   2. Enter your server/collection URL (e.g. http://myserver:8080/tfs/DefaultCollection)
   3. Select a Project.
   4. Select a Test Plan (previously created in MTM).
   5. Click the Generate button.

The resulting document will contain (among other things) a list suites with test cases and steps detail and pie charts detailing the overall progress of your Test Plan.  You can see a screenshot below showing several sections of a generated document.  Feedback is welcome and appreciated, and you can find the tool download at http://visualstudiogallery.msdn.microsoft.com/en-us/d18873c7-909d-4788-a56e-0c496a1d8bb9.

image

Many thanks and appreciation to everyone who helped get this tool out the door.

More information available here:  http://blogs.msdn.com/vstsqualitytools/archive/2010/01/11/test-scribe-test-plan-documentation-for-mtlm-plans.aspx

 

Ed Blankenship

Posted in TFS | Tools | VSTS | VSTS Testing


Custom Workflow Activities for TFS Build 2010



Not sure if you have seen this but some of the product managers on the TFS Build team at Microsoft have been putting together some great blog posts for how to create custom build activities and get a little background about Windows Workflow 4.0 and how it relates to TFS Build 2010.

CP_banner_111x111_gen.jpgAlso, we’ve been trying to put together a CodePlex project that’s designed to be a central location for contributions of Team Build 2010 customizations like custom activities, build process template customizations, build tools, etc.  You can take a look here:  http://teambuild2010contrib.codeplex.com/.  I’d encourage you to think about contributing any of your customizations to this project.  I know I’m personally hoping that it will be the “go-to” place for some of the common build activities that people need.  If you happen to have any feature requests for build activities, feel free to request one in the discussions and we’ll add it to the backlog:  http://teambuild2010contrib.codeplex.com/Thread/List.aspx

 

Thanks!

Ed Blankenship



TFS - Shared Resource Scope Activity in Team Build 2010



In Team Foundation Server 2010, you know have the ability to (easily) have multiple build agents on the same build server.  You were able to do this in TFS 2008 but it really wasn’t supported.  However, this raises an interesting challenge:  some processes and executables aren’t designed to handle being run simultaneously in multiple contexts on the same build machine.  Some applications can’t or have a difficult time handling concurrent access from multiple build servers at the same time as well.

I’ve listed a few of the scenarios that I can I remember off the top of my head:

  • Automated UI Testing – running automated UI tests from two different builds on the same build machine can lead into utter confusion!  :)  Mouse clicks going everywhere!  Let’s just stick to one set of automated UI tests running on an individual machine at the same time.
  • Running Automated Tests that Collect Code Coverage Information -  This was an interesting limitation that I found in the 2008 release.  It seems that the code coverage data collector did not support collecting from more than one automated testing run happening concurrently on the same machine.  (This might actually have been addressed in the 2010 release but I’m not quite sure.)
  • Dotfuscator – As far as I remember, this was another tool I remember having concurrency issues on the same build machine.
  • Symbol Server Store Access – This is something new to me and I’m not intimately familiar with all of the details behind this limitation.  It looks like you can not use the symbol server publishing tools against the same symbol server storage location at the same time even on multiple machines.  (See example below.)
  • Other Tools – I’m sure there are other build processes and tools we use that have limitations.  I’m sure many will be found out now that concurrent usage is more easily possible now.  Leave a comment below if you find any other examples and I’ll add them to this list.

Thankfully, the Team Build folks have provided us the ability to handle those specific scenarios where concurrent access isn’t supported as part of the build process.  That’s through the use of the Shared Resource Scope activity.  (Microsoft.TeamFoundation.Build.Workflow.Activities.SharedResourceScope)

Basically what it does is define a region of the build process that will only be allowed to be entered by one build across the entire Team Project Collection (even multiple build machines/agents) that share a matching resource name string.  It’s very similar to how we use the lock statement in C# or creating mutex objects.  (You might have to dust off those old computer science books from school.)

However, if you only want to limit the scope to a particular build server (instead of the entire Team Project Collection) then you can just put the build server machine name into the resource name string.  Don’t hardcode the machine name though and instead use one of the properties that are provided for you (in case the build doesn’t run on the same build machine every run because of the new agent pooling feature.)  Instead you could use an approach like this for the resource name expression:

=String.Format(“{0}_{1}”, BuildAgent.BuildServer, “AutomatedUITesting”)

Example in the Default Build Process Template in TFS 2010

Interestingly, there is an example usage of this activity and pattern available for us to look at in the default build process template file that’s available out of the box.  It’s usually located in version control here:  $/TeamProjectName/BuildProcessTemplates/DefaultTemplate.xaml.  Lower down in the default process, there is a section that attempt to publish the symbols to a symbol server storage location if you have specified it in your build definition properties.  My Assumption:  However, since only one build server can be publishing to a particular location at the same time, then a controlled scoped region is created based on the location property. (SourceAndSymbolServerSettings.SymbolStorePath)

That way you don’t have to worry about any build agent inside a Team Project Collection ever publishing to the same symbol server location at the same time.

Recently added:  It looks like this particular issue has already been discussed and that my assumption above is correct.  Adam blogs about it here.  Check it out.  How about that?

One more thing to note about symbol server publishing is the use of the SharedResourceScope activity in the build process template. The purpose is to make sure that concurrent instances of symstore.exe aren’t adding symbols at the same time, as the tool doesn’t support concurrent access to a symbol server share. SharedResourceScope uses the Team Foundation Server to control access to an arbitrarily named resource, in this case the share. That way, if multiple builds are trying to publish symbols at the same time, the requests are queued and only one will publish at a time, while the others wait (instead of fail due to file access errors or “step on each others’ toes”). PublishSymbols does not care about shared resource locks, but it is contained within the SharedResourceScope, so won’t be executed until the lock is appropriately acquired.

image 

image

Other Properties Available for SharedResourceScope Activity

As you can see above there are a few other properties available for you to configure for this activity:

  • MaxExecutionTime:  This is a TimeSpan that can be specified to limit the amount of time that a particular agent has control of the scope.  This is particularly useful for a resource scope that is going to be heavily used and can help you prevent a rogue build from eating up that resource indefinitely.  If the process inside the scope can’t complete before this time period has expired then an exception gets thrown.
  • MaxWaitTime:  This is a TimeSpan that can be specified to limit the amount of time to wait for control of the scope.  The example above limits the amount of waiting to one hour and if it doesn’t reserve the scope within that time period an exception gets thrown.

 

Thanks to Aaron Hallberg for all of the background information and existence of this activity!

 

Ed Blankenship

New Visual Studio 2010 Stadium Diagram for ALM Features



Just saw the new stadium diagram for the ALM features (Visual Studio “Team System”) in Visual Studio 2010 and Team Foundation Server 2010.  Enjoy!

 

Visual Studio 2010 ALM and TFS 2010 Stadium Diagram

Ed Blankenship

Posted in TFS | VSTS


Tip: Data Collectors Behave Differently Based on Test Pass or Fail – IntelliTrace and Test Impact



I learned a very important tip today about Microsoft Test & Lab Manager.  The data collectors that you can specify in your test runs (which by the way are extremely helpful) don’t necessarily attach data to the test run or bug all of the time.  It depends on the actual success of the test case during the test run.  Two example were mentioned today:Visual Studio Data Collectors in Microsoft Test and Lab Manager

  • IntelliTrace – The IntellIiTrace data collector will only output a trace log if the test case fails.
  • Test Impact Analysis – The Test Impact data collector will only publish test impact data back to Team Foundation Server if the test case succeeds.

So this leads us to the fact that we won’t ever see both of them together at the same time.  If you see an IntelliTrace trace log file for a test case then you won’t be getting any test impact data published to the server (and vice versa.)  Be sure to have both of them enabled though if you would like to get that type of data when the test case ends.  This also helps me in figuring out why I haven’t been getting impacted tests in my build reports and the handy view of “recommend tests” based on choosing a build in MTLM.  I need to actually pass some tests to get that data published back up to the server!

 

How about that?  Very handy to know.  The Visual Studio Quality Tools team has a blog that has been very active lately.  If you would like to learn more about Microsoft Test & Lab Manager head on over to the site.

Ed Blankenship

Posted in TFS | VSTS | VSTS Testing


User Display Name Changes and New Attribute for Work Item Type Definitions in TFS 2010



If you’ve had the responsibility of administering a TFS 2005 or TFS 2008 server you may have run in the “Display Name” problem before.  In March 2007, the TFS Work Item Tracking team put a great post together about what’s exactly going on and it’s available here:  http://blogs.msdn.com/teams_wit_tools/archive/2007/03/15/handling-display-name-changes-in-team-foundation-server.aspx

Basically, in TFS work item types, you can specify a field to hold the name of a user like in the Assigned To field.  The value that gets stored is basically just a string value of the person’s Display Name in Active Directory.  Not so bad except it’s not a strongly-typed object of a user but is just a string.  The problem comes when the user’s display name gets changed in Active Directory like when an employee gets married and take’s their spouse’s last name.  This causes a problem because all of the work items are still assigned to “Jane Doe” instead of “Jane NewLastName".  Even worse, “Jane Doe” is not even a valid user any longer so the work item becomes in an invalid state.  It’s kind of a maintenance nightmare.

Background:  Every hour an Active Directory synchronization job gets queued up and processes changes to Active Directory like new users, group membership changes, etc.  TFS keeps a cache of AD locally to help with operations across several subsystems.  For users, it caches certain information like the primary e-mail address, display name, domain/user name, SID, distinguished name, etc.

Thankfully there was something that helped us out available in the TFS Power Tools release called “TFS Users.”  You had to know about the display name change so working closely with your IT department was important.  Thankfully, it looks like TFS 2010 has added some abilities to notice those display name changes and proactively help you out within your system.  One of those changes is a new attribute in your work item type definitions that tells TFS which fields to automatically update.  I’ve bolded and underlined all of the changes from the previous default definition of the MSF Agile Bug.

<FIELD name="Assigned To" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
  <VALIDUSER />
  <HELPTEXT>The person currently working on this bug</HELPTEXT>
</FIELD>
<FIELD name="Activated By" refname="Microsoft.VSTS.Common.ActivatedBy" type="String" syncnamechanges="true" reportable="dimension">
  <WHENNOTCHANGED field="System.State">
    <ALLOWEXISTINGVALUE />
    <READONLY />
  </WHENNOTCHANGED>
</FIELD>
<FIELD name="Changed By" refname="System.ChangedBy" type="String" syncnamechanges="true" reportable="dimension">
  <ALLOWEXISTINGVALUE />
  <VALIDUSER />
</FIELD>
<FIELD name="Closed By" refname="Microsoft.VSTS.Common.ClosedBy" type="String" syncnamechanges="true" reportable="dimension">
  <WHENNOTCHANGED field="System.State">
    <ALLOWEXISTINGVALUE />
    <READONLY />
  </WHENNOTCHANGED>
</FIELD>
<FIELD name="Created By" refname="System.CreatedBy" type="String" syncnamechanges="true" reportable="dimension" />
<FIELD name="Authorized As" refname="System.AuthorizedAs" type="String" syncnamechanges="true" />
<FIELD name="Resolved By" refname="Microsoft.VSTS.Common.ResolvedBy" type="String" syncnamechanges="true" reportable="dimension"> <WHENNOTCHANGED field="System.State"> <ALLOWEXISTINGVALUE /> <READONLY /> </WHENNOTCHANGED> </FIELD>

If you have custom process templates or you have modified the out of the box process templates, you’ll have to do some maintenance to your existing team projects to light up the new TFS 2010 features available including the ability to automatically sync the name changes from Active Directory.  If you are using the MSF Agile template you will want to update the following fields:

  • Assigned To
  • Activated By
  • Changed By
  • Closed By
  • Created By
  • Authorized As
  • Resolved By

For all other process templates, you’ll want to update the work item types that have fields that hold display name values.  There is actually some great information already available about this particular topic available in the MSDN Library:  http://msdn.microsoft.com/en-us/library/dd286562(VS.100).aspx

One of the other things we notice from the changes are the addition of the ALLOWEXISTINGVALUE rule to some of the fields.  This rule allows a previously entered value to still be valid even if that value is no longer a valid value.  In addition, there are also some state/transition rule changes for allowing the existing value.  Be sure to do a diff against your current work item type definition and the new MSF Agile work item type definitions to find all of the new changes.

For more information about managing work item type fields in TFS, see this MSDN Library Article:  http://msdn.microsoft.com/en-us/library/dd236909(VS.100).aspx

 

Ed Blankenship

TeamPrise Assets Purchased by Microsoft



I don’t know how many times I’ve heard this suggestion from people:  “Microsoft should just buy TeamPrise and make the Eclipse and non-Windows clients just part of the TFS product.”

That day is finally here.  Microsoft has purchased the TeamPrise-related assets from SourceGear.  More details about the acquisition announcement are available at Microsoft’s PressPass site and also the Pathways site for TeamPrise and Visual Studio.

Also, in addition to purchasing the TeamPrise assets, Microsoft has also hired a majority of the development team including, most notably, Martin Woodward who has been an absolutely fantastic part of the “Team System” MVP group.  It will be really sad to see Martin leave the group (as of today) but something tells me that he won’t be hiding :)  Congratulations to him and the entire team!

Now the one thing that i think people might be worried about will be what will happen to the future of the TeamPrise clients and will that development team be able to innovate as quickly as they had before?  I’m pretty sure the same “mission” will be in place and the team will be able to more closely leverage the other team members and assets within the Team Foundation Server product team.  As far as speed of innovation, that’s tough to tell.  Most other Microsoft products have tons of release requirements that slow them down such as localization, security reviews, etc.  All of which are great things but do end up slowing you down if you have to support those requirements.  Who knows if the TeamPrise development team will have to support them?  My guess is that if they’re going to be part of the “Visual Studio” product line that they will have the very similar if not the same requirements as the rest of the stack.  We will definitely see…  Another possible hang up is that Microsoft (specifically Developer Division) will have to learn how to sell & market a Java/non-Windows based product.  I can only imagine there will be some growing pains.

As far as licensing, right now you’ll need to still purchase the TeamPrise clients and get support from TeamPrise directly.  A Microsoft-branded “TeamPrise” client will become available with the 2010 release.  If you own a current license of the TeamPrise 3.3 software it looks like you’ll be upgraded to the new version when it is released.  Also, if you own a Visual Studio 2010 Ultimate with MSDN license at the time you’ll get access to download the new clients from MSDN Subscriber Downloads.  After the 2010 release, it looks like there will be a new SKU available to be able to purchase just the new clients that will also include a CAL for Team Foundation Server that will run somewhere around $799 retail.

I’m excited about the decision and it looks like both Martin and Brian Harry are as well.  I’m excited to see the platform broaden and truly support teams who have heterogeneous development environments!

 

Ed Blankenship



Test Case Migration Tool for TFS 2010 and Excel



Looks like there is a new migration tool being made available that helps you with importing test cases into TFS 2010 which now has Test Case Management as one of it’s new features.  It’s now available on CodePlex and works with the Beta 2 release.  Here’s some of the features available:

  • Imports Test case information (along with Test Steps) present in Excel into TCM/TFS server – Note: This is ONE way migration only
  • Provides a wizard based UI to run the tool one file at a time
  • Provides a command line support to run the tool in a batch mode
  • Allows you to save your selections/configurations into a mappings file to be reused later
  • Default mapping file that works across both Agile based and CMMI based projects are shipped along with the tool

http://tcmimport.codeplex.com/

I believe some systems allow you to export your test cases into Excel (HP Quality Center?) so this might be a good migration option.  You can also use the TFS 2010 SDK to build a custom migration utility that will import from another system without having to go through Excel at first.  Take a look at it and see if it might be helpful for you!

 

Ed Blankenship



Survey for Visual Studio and Team Foundation Server 2010 Beta 2



Over the past two weeks, I’ve really been hitting VS & TFS 2010 Beta 2 pretty hard.  I’ve found a few things and used Connect to report some suggestions & problems that I’ve found.  The product teams have been very active about responding to each of them and it’s been a very pleasant experience.

It looks like the product team wants even more feedback from everyone so if you could head over to the 2010 Beta 2 Survey and give your feedback, I know it will be greatly appreciated.  It’s pretty quick and easy with about 11 questions and about 3 optional free-fill questions that you can type longer responses in.

Visual Studio 2010 Beta 2 Logo Feedback

Ed Blankenship

Posted in Community | TFS | VSTS


What is Team Foundation Server and Why Would I Use It?



I get this question a lot.  People often wonder what Team Foundation Server (TFS) is and why would you use it?  I read a blog post earlier today from Jason Zander who has the best explanation of TFS that I know.  Also, he hits the nail on the head about the “well, can’t I just integrate all these other systems together?”  I love the analogy he uses (emphasis added:)

First let’s talk about “why TFS?”  The goal of Team Foundation Server is to create a central repository with a set of tools that make it really easy to collaborate between roles.  You could try to stitch together multiple disparate systems as follows:

image

In this case each system has its own storage, own set of identity for assets, own commands and tools.  Getting this going is like trying to hook up a set of custom stereo components:  you can pull it off but it’s going to be a lot of work and you are missing out on some stuff.

What I’d rather have is a system which can integrate these items together and then enable my default work flow through the system:

image

Even better, with TFS 2010 you get the opportunity to add even more pieces to the ALM puzzle under one roof:

image

A good Application Lifecycle Management (ALM) system has all of these systems integrated together and linked to provide you as much transparency, traceability, and metrics available about the relationships between the artifacts in those systems.  TFS is the best system available today that has all of that built together.

 

Ed Blankenship

Posted in TFS | VSTS

Visual Studio and Team Foundation Server 2010 Beta Available for Download



If you missed the news on Monday, Visual Studio 2010 and Team Foundation Server 2010 Beta 2 are available to download by both MSDN Subscribers and everyone else in the world!  This is really huge!  Beta 2 has already been a really solid release since I first downloaded and installed it.  The performance of the new WPF-based IDE has been dramatically improved from earlier builds.

Visual Studio

Visual Studio Extensibility

.NET Framework

Team Foundation Server

Test Products

Express

There was also a ton of news coming out ranging from Licensing and SKU changes, the launch data for the 2010 release (which is March 22, 2010,) what you get upgraded to if you have an active MSDN Subscription on a launch day, and a whole bunch of great things!  I’m really excited about this 2010 release wave.  There’s a ton of great stuff designed to make everyone’s life that much easier when they’re developing, testing, and building applications.

“Go-Live” License

One of the great things about the Beta 2 release is that Microsoft has announced that you can use Beta 2 in production environments and also to build production applications.  This “go-live” license includes .NET 4.0, Visual Studio 2010, and Team Foundation Server 2010.  Jeff Beehler blogged earlier about what “go-live” actually means so be sure to read through it closely.  Beta 2 is a very solid Visual Studio and TFS build.  However, there is always some risk with upgrading production environments using Beta software.  Be sure you understand the risks before taking the plunge. 

I’d suggest that if you are able to take the risk that you upgrade to both Visual Studio 2010 and TFS 2010 Beta 2 as soon as you can.  Remember that even if you don’t want to run .NET 4 for your production applications, you can still use Visual Studio 2010 to edit solutions/projects that target .NET 3.5, .NET 3.0, and .NET 2.0!

If you’re not able to take the risk to “go-live” during the Beta 2 timeframe then I would definitely suggest that you begin you testing & evaluation process now using the Beta 2 build.  You’re able to test out the upgrade process from your TFS 2008 databases and discover any possible hang-ups during the upgrade process. (I personally haven’t had any for the servers that I have upgraded but you never know!)  By getting your planning & testing done now, you’re in a better position to upgrade when TFS 2010 is released at the beginning of the year.  Another thing you could do to get ready is be sure that you’ve upgraded any prerequisites.  For example, even while you are running TFS 2008 you can upgrade your SQL Server instance to 2008 and upgrade your Windows SharePoint Services install to WSS 3.0.  Using SQL Server 2005 or WSS 2.0 is not supported in TFS 2010 so this will just make things a ton easier for you when it actually is time to upgrade.

Launch Date vs RTM

I mentioned about that the launch date was announced for March 22, 2010.  However, launch doesn’t necessarily mean Release to Manufacturing (RTM.)  Products usually RTM before launch day but there have been a few exceptions.  For example, SQL Server 2008 RTM’d much later than it’s launch date :)  Hopefully that never happens again.  What’s great about RTM is that if you’re an active MSDN subscriber, you usually get access to download the final build shortly after RTM based on past releases of products.  Launch day for Windows 7 is tomorrow but RTM was earlier this summer and MSDN Subscribers have had access since August 6, 2009.  (This does not mean in any way that there will be that much lead time for the Visual Studio 2010 release… I’d say it’s probably very unlikely!)

 

There’s really a lot of news to process so I’ll be posting some articles next week that goes into detail about several of them.  If there’s anything in particular that you’re not quite sure of, feel free to contact me or leave me a comment about something that needs more information.  In the meantime, please do help out by making this the best Visual Studio release ever.  If you find a bug or think a scenario could be improved (be reasonable) be sure to log it at the Microsoft Connect site.

Take care and have fun,

Ed Blankenship

Posted in TFS | VSTS


Test Categories and Running a Subset of Tests in Team Foundation Server 2010



Disclaimer:  I’m writing this at a time when only Beta 1 is available for Visual Studio Team System 2010 so the information may have changed by the time it has been released.  I have included links to the relevant MSDN articles which should remain valid after release time so just double-check.

This small little additional feature is actually one that I have been looking forward to for a long time.  In Visual Studio Team System and Team Foundation Server 2010, you will now be able to limit your test runs to specific test categories with a new command-line option on MSTest.exe and therefore in Team Build 2010 which calls MSTest.exe automatically for you.

Back in the day… You would need to create test lists (.VSMDI files) in VSTS 2005 and VSTS 2008 to basically “categorize” your automated unit tests by putting them into different lists.  One handy thing about them is that the lists could be hierarchical which helps out at build time.  When you wanted to run a specific subset of tests either locally using MSTest.exe or in Team Build, you would just specify the .VSMDI file to use and then the test list you wanted to run.  Not too bad, but it’s a pain to keep up with those test lists.  Serious pain.  However, the thing that I hated absolutely most about them is that you could only edit the .VSDMI files if you purchased Visual Studio Team Suite or the Tester Edition.  So that means that if you have just the VSTS Developer Edition then you are pretty much out of luck.  For most places that I have seen, it’s usually the developers maintaining those test list files not the testers.

For this reason I actually prefer and will be recommending the Test Container and Category approach going forward in 2010.  Test Containers are essentially files that contain tests in them.  For example, unit tests (and other compiled tests) are stored in .dll files and ordered tests are in .orderedtest files.  I like this approach.  In automated builds I just want to specify which files contain the tests that I want to run and then if I want to limit the test run to just a subset I can just list which categories to run. 

A great example of this is what I call the “BVT” category.  These are the tests that you have identified to be your “smoke” tests that make sure a build is okay.  If these tests fail then you’ve probably got a bad build.  (BVT = Build Verification Tests) So I would limit the test runs on any CI or even the new Gated Check-In builds to just those BVT tests.  Quick & dirty verification is really all you need for those builds leaving a more extensive automated test pass to happen during the nightly or weekly build.  If you’re not familiar with the new Gated Check-In feature in TFS 2010, check out Brian’s blog post or Patrick’s blog post for more information.  It’s a killer feature.

This does rely on one thing though… each “developer” of an automated test needs to make sure they add the correct attribute(s) to their test methods.  You don’t have to keep up with maintaining the .VSDMI files any longer but you do have to make sure you mark each method appropriately.

You can even use test categories with the new types of automated tests available in 2010 like Coded UI Tests.  It doesn’t just have to be unit tests.

How to Specify a Category in an Automated Test

This part is pretty easy.  You just add as many TestCategory attributes to the test method as you need.  Here’s an example in C# using multiple test categories for a test method called DebitTest:

[TestCategory("Nightly"), TestCategory("Weekly"), TestCategory("Monthly"), TestMethod()]
public void DebitTest()
{
}

Alternately, you can select a test in the Test View tool window and then set the category by using the Properties tool window in Visual Studio and it will add the appropriate attributes to the methods for you.

image

How to Specify which Categories to Run in an Automated Build with Team Build 2010

Okay… this part is easy too. :)  Build definitions now have build properties that can be exposed to the end user in the Build Definition Details dialog or in the Queue Build dialog.  This is handy because you could by default not set a filter to run under normal circumstances (triggered or default manual builds) or you can change it when manually queuing a build if you want that build to run differently.  Either way it’s the same for setting the categories.  If you’re using the default build process workflow that is available out of the box, then just scroll down through the property list until you reach the Testing section which includes a build property called Test Category.  Leave it blank if you want to run all tests or specify the categories you’d like to limit it too:

image image

According to the MSDN documentation for the Test Category switch, you can combine multiple categories in different combinations instead of just specifying one category.  Very handy – here’s some examples:

  • /category:group1 runs tests in the test category "group1".

  • /category:"group1&group2" runs tests that are in both test categories "group1" and "group2." Tests that are only in one of the specified test categories will not be run.

  • /category:"group1|group2" runs tests that are in test category "group1" or "group2". Tests that are in both test categories will also be run.

  • /category:"group1&!group2" runs tests from the test category "group1" that are not in the test category "group2." A test that is in both test category "group1" and "group2" will not be run.

  • What I’m not sure about is whether you can specify test categories when using the old Upgrade Build Workflow template .xaml file… I’ll check on that and then update the blog post.

    It’s worth noting that if you are going to use the test category method to limit test runs, you must use test containers.

    Limiting Test Runs Based on Test Priorities

    If you noticed in the screenshot above from Team Build, you can also limit your test run to tests that are in a specific priority range.  How do you specify the range for your test methods?  You can use the Properties window when selecting a test in the Test View tool window or you can add the Priority attribute manually to the test method.  After that you just specify the range of priorities to use in the test run.

    [TestCategory("Nightly"), TestCategory("Weekly"), TestCategory("Monthly")]
    [TestMethod()]
    [Priority(1)]
    public void DebitTest()
    {
    }

     

    Additional Note:  It appears that the product team is actually encouraging people to move away from the old .VSDMI approach in favor of categories.  Check their note out:

    NoteNote

    Test categories are recommended for use over the test lists functionality from earlier versions of Microsoft Visual Studio Team System Test, unless you have to create a check-in policy which requires a test list. For more information about check-in policies, see How to: Add Check-In Policies.

     

    Take care and happy testing,

    Ed Blankenship



    Workflow TFS Custom Work Item Control



    Now this is really cool!  There is a really cool visualization when using Team System Web Access that shows the workflow of the work item that I thought would be really cool if we could have in the Team Explorer client inside Visual Studio.  Well thankfully, Michel Perfetti (author of Fissum) just released a custom work item control that does exactly what TSWA does…

    clip_image002

    Remember, you can have different work item form layouts based on what client it is going to be loaded in so you could specify a layout for “WinForms” that would be the only one that would load this custom control.  Check out Neno’s blog post about this topic for more information.

     

    Check it out on CodePlex:  http://tfsworkflowcontrol.codeplex.com/

     

    Ed Blankenship



    PowerPoint Slide Deck for Real World TFS Sessions



    Just wanted to take a few seconds to post the slide deck I’m using for my Real World TFS sessions.  I’ll post a link to the recording of the MVP TV session earlier today when it’s made available!

     

    Ed Blankenship



    MVP TV with Ed Blankenship on July 15



    Also really excited about doing my first ever MVP TV set up by the Microsoft MVP program.  Hope to see you there!  We have an extra thirty minutes at the end so be sure to bring your questions.

    MVP TV: Real World TFS: Tips for a Successful Team System Implementation

    Wednesday, July 15th, 2009 | 9:00am – 10:30am (PDT, Redmond time) or 12:00pm – 1:30pm (EDT, New York City time)

    Targeted: This Product Group Interaction is open to  all Developer MVPs in all Technical Expertise and  public audience.

    So you’ve decided that Visual Studio Team System & Team Foundation Server is going to bring your organization added value (because it will :)) but what do you do now?  Please join Ed Blankenship as he covers the 2.5 years of successful implementation of VSTS and the experience of that journey at Infragistics, the world’s leading maker of software development tools.  The session intends to cover each phase of the implementation of all affected areas for a smooth adoption:  Version Control, Builds, Work Item Tracking, global deployment, moving multiple teams, training, automated testing, migration from legacy systems, and integration with other systems and TFS.  The goal will be to go through at a high-level of what it takes to make you successful by learning from the challenges and obstacles overcome.  We’ll also look in the future with VSTS 2010 and see how strategic planning will help make a successful adoption of the new features in the upcoming 2010 release.  The session is led by a Microsoft MVP (Team System) & Champ who has been in the trenches during the whole implementation.

    Prerequisites:  A healthy attitude in learning from other peoples challenges and a strong desire to make real change within your organization!

    About Ed Blankenship: Ed is a Microsoft MVP, Microsoft Certified Application Developer, and works as the Release Engineering Manager at Infragistics, makers of the world's leading presentation layer tools and components. His expertise consists of Microsoft Visual Studio Team System and Team Foundation Server. He is also a technical evangelist for Rich Client applications (primarily Windows Forms & Windows Presentation Foundation.) He has been a technical editor for several Silverlight books, an article author, and has spoken at various user groups, events, and conferences.

    PJ Forgione has invited you to attend an online meeting using Live Meeting.
    Join the meeting. (Link: https://www.livemeeting.com/cc/mvp/join?id=NP5FQZ&role=attend&pw=A49410Y0D )
    Audio Information
    Computer Audio
    To use computer audio, you need speakers and microphone, or a headset.
    Telephone conferencing
    Use the information below to connect:
    Toll-free: +1 (866) 500-6738
    Toll: +1 (203) 480-8000
    Participant code: 5460396

     

    Ed Blankenship

    Speaking at NYC VSTS User Group on July 28



    While I’m up in New Jersey working at the Infragistics headquarters office, I’m going to have the privilege of speaking at the New York City VSTS User Group on July 28, 2009 at 6:30 PM.  Come see me if you’re in the area!  Because of security concerns at the building, you do need to register ahead of time if you’re planning to attend.

    VSTS User Group

    Real World TFS: Tips for a Successful Team System Implementation

    Description:
    So you've decided that Visual Studio Team System & Team Foundation Server is going to bring your organization added value (because it will :)) but what do you do now? Please join Ed Blankenship as he covers the 2.5 years of successful implementation of VSTS and the experience of that journey at Infragistics, the world's leading maker of software development tools. The session intends to cover each phase of the implementation of all affected areas for a smooth adoption: Version Control, Builds, Work Item Tracking, global deployment, moving multiple teams, training, automated testing, migration from legacy systems, and integration with other systems and TFS. The goal will be to go through at a high-level of what it takes to make you successful by learning from the challenges and obstacles overcome. We'll also look in the future with VSTS 2010 and see how strategic planning will help make a successful adoption of the new features in the upcoming 2010 release. The session is led by a Microsoft MVP (Team System) & Champ who has been in the trenches during the whole implementation.

    Presenter: Ed Blankenship

    Bio:
    Ed is a Microsoft MVP, Microsoft Certified Application Developer, and works as the Release Engineering Manager at Infragistics, makers of the world's leading presentation layer tools and components. His expertise includes Microsoft Visual Studio Team System and Team Foundation Server. He is also a technical evangelist for Rich Client applications (primarily Windows Forms & Windows Presentation Foundation.) He has been a technical editor for several Silverlight books, an article author, and has spoken at various user groups, events, radio shows, and conferences.

    Date/Time:  07-28-2009 6:30 - 8:00 PM

    Location: Microsoft Offices in NYC at 1290 Avenue of Americas, 6th Floor

    Click here to Register

     

    Ed Blankenship



    Going Down Under – New Opportunity with Readify



    Dear Reader,

    I have decided to accept a Senior ALM Consultant position with the premier Australian consulting company, Readify.Australia Flag

    It’s always a tough decision to move on from a company you’ve really enjoyed being at.  I’ve really enjoyed the work that I have had the opportunity to do at Infragistics.  There are so many really great people at Infragistics that I truly will miss working with and hope to see in the future.  Some of my really good personal friends have been fellow colleagues at Infragistics which just shows you the type of culture that we have.  I’ve had an amazing team that I’ve worked with as the Release Engineering Manager and they have been truly able to make a positive change for the organization.  They’ve always been there to help make miracles and put in those really really long hours at release crunch time.  So really, I need to tip my hat to each of them for just being awesome:  Brian, Geoff, Kareen, and Jason.

     

    I’m really excited about this new opportunity.  I never would have thought in my wildest dreams that I’d be living abroad but the idea grew more and more on me as this opportunity came up.  I hear Australia is a beautiful country with an amazing culture.  I’m not currently planning for this to be a permanent move whatsoever but everyone I talk to about it says that I’m not going to want to come back! :) 

    I’ve heard about Readify for several years now as a Visual Studio Team System professional any time I hear about Australia & TFS/VSTS/ALM.  I’m really looking forward being able to visit multiple customer sites again and coming up with solutions to their ALM problems.  It’s been a while since I’ve been an ALM consultant so I’m looking forward to the variety.  Even more, as an MVP I’m looking forward to a whole new set of venues to get involved with the community on a new continent.  I think I’m going to have a busy schedule!

    There are tons of different things for me to solve as an American citizen living abroad.  It’s interesting that Grant Holliday just made the opposite move almost a year ago and I plan on doing the same thing as he has and try to write about the differences between the two countries.  Hopefully you’ll find it as interesting as I did with Grant’s story.

    I’m planning a really simple move:  packing up a few suitcases of clothes and jumping on a plane.  Hoping that works out well for me! :)

     

    I have decided to continue working with Infragistics until the beginning of August to wrap things up and hopefully train my replacement.  I guess the cat is out of the bag with the official job opening announcement on our website listed under Research & Development.  That position is listed to be the back-fill headcount for my current position.  Finally – I’d like to ask you to help us out:  If you’ve heard about our TFS instance and VSTS implementation from some of my user group talks or the Radio TFS episode and are interested (or know someone awesome who might be) in continuing this exciting work, please let me know!  You can send me a quick note to ed at infragistics dot com or use any of the contact links from my blog website.

     

    Take care!

    Ed Blankenship



    Radio TFS Interview – Using TFS at Infragistics with Ed Blankenship



    I’m up really early this morning.  I’m about to head to the airport to spend my Independence Day weekend in the Carolinas for some much needed beach vacation and visit with friends.  Thankfully, I didn’t miss Martin Woodward letting me know that the latest Radio TFS episode was made available just a few moments ago that includes my interview about our use of TFS and Visual Studio Team System at Infragistics.  It’s a longer episode than normal so it’s perfect if you’re going to be spending some time at the beach like me and listen to a fun talk.  We both really enjoyed chatting for this episode so we hope you enjoy it as well!

    Using TFS with Ed Blankenship

    In this episode we sit down and chat with Ed Blankenship about the use of Team Foundation Server at Infragistics. Ed has had some interesting challenges and experiences in running their TFS instance.  Additionally they have done some fairly advanced integration work which we discuss in detail.  This is a double-length show, so hopefully plenty of stuff to enjoy if you are sunning yourself on a beach somewhere.

    Ed is the Release Engineering Manager at Infragistics, makers of the world's leading presentation layer tools and components.  He is also a Microsoft MVP in Visual Studio Team System.

         Play Now: Using TFS with Ed Blankenship

    As the Release Engineering Manager, he leads the Release Engineering Department which is responsible for automated builds, creating product installers, packaging source code for customers, source configuration management/version control, metrics, release management, work item tracking, licensing enforcement, and development of internal productivity tools.  The department also is responsible for TFS Operations & Maintenance.

    Ed has been a technical editor for the Wrox Silverlight 1.0, Silverlight 2 Developer's Guide, and Silverlight 2 Bible books, author of numerous articles, and has spoken at various user groups, events, and conferences.

    Links from the show:

    As usual send any feedback to radiotfs@gmail.com.

     

    Feel free to let me know if you have any questions based on the Radio TFS chat.  I’m more than happy to get them answered for you!

     

    Take care,

    Ed B.



    Speaking at the Team System User Group Virtual Edition – EMEA Meeting in June



    Come join!  Here’s the website and the details.

    Website:  http://www.tsug-ve.com/

    JUNE EMEA Meeting
    Meeting Date: Thursday, June 18th, 2009
    Time: 10:00AM PDT/SLT (18:00 UTC)
    Location:  Microsoft Island in Second Life

    Real World TFS:  Tips for a Successful Team System Implementation

    OK, you’ve decided that Visual Studio Team System & Team Foundation Server is going to bring your organization added value (because it will :)) but what do you do now?  This session will cover the 2.5 year successful implementation of VSTS and the experience of that journey at Infragistics, the world’s leading maker of software development tools.  The session intends to cover over each phase of the implementation over all of the affected areas for a smooth adoption:  Version Control, Builds, Work Item Tracking, global deployment, moving multiple teams, training, automated testing, migration from legacy systems, and integration with other systems and TFS.  The goal will be to go through at a high-level what it takes to make you successful by learning from the challenges and obstacles overcome.  We’ll also look to the future with VSTS 2010 and see how strategic planning will help make a successful adoption of the new features in the upcoming 2010 release.  The session is led by a Team System MVP & Champ who has been in the trenches during the whole implementation.

    Prerequisites:  A healthy attitude from learning from other’s challenges and a strong desire to make real change at your organization!

     

    Take care,

    Ed B.

    Posted in Community | Speaking | TFS | VSTS


    First TFS iPhone App - TFSToGo



    This has been out for a little while but wanted to make sure that you knew about it as well!

    Our Director of Product Development here at Infragistics, Joe Croney, has been working on a personal side project of creating an iPhone app that will connect to Team Foundation Server.  He’s got a BETA posted in the Apple iTunes store now.  At the moment it only supports checking on Builds but I know he’s starting a backlog.

    More screenshots and an FAQ are available at the website:  http://www.tfstogo.com/

    clip_image001 clip_image003

    Joe is looking for some feedback and any bugs so if you find some feel free to report them at support@tfstogo.com.  Congrats Joe!

    FYI:  We’ve found that if you connect over VPN in the iPhone that sometimes a local DNS name isn’t resolved correctly.  You can correct this by putting in the hard-coded IP address of the TFS server instead.

     

    Have fun and enjoy!

    Ed B.

    Posted in Infragistics | TFS | Tools | VSTS

    Draining the Blog Topic Backlog



    It’s been pretty quiet around this blog for quite some time now.  Just been busy traveling to TechEd North America and back to our office in New Jersey.  Lots going on!  However, no one ever has enough time to get everything done :)

    I’m going to be a little more demanding on myself to get through my blog topic backlog that I’ve been keeping for a while.  I think I’m up to 19 at the moment so I need to get it flushed out!  I keep a list alongside my To-Do list in OneNote about different topics that I come across that I blog about.  Usually they are from problems that I see day to day that other people probably will want to solve at some point (I always archive the screenshots so I can use them in my blog posts later.)  Other topics that end up on the list are in response to something I’ve done while traveling.  For example, Martin Woodward and I had the chance to record a Radio TFS episode (not yet aired) where we talked about our implementation of Team Foundation Server and Visual Studio Team System at Infragistics.  I think it was a great session and definitely looking forward to it getting out in the wild.  There were a few topics that we talked of stumbles we’ve encountered over the last two years and how we ended up solving them.  The goal for us was to get those out in the public since others may be experiencing the same hurdles and looking for resources on how to solve them.  It’s more along the lines of “hey, here’s our story so you can learn from our mistakes.”  I hope you find them useful.  On this blog, I’ll start talking about some of those points that we brought up in more detail since the radio show has to be reduced to a reasonable amount of time :)  Some of the stuff we talked about was just down-right cool!  More details to come…

     

    So, dear reader, I am pledging to you to get through my current blog topic backlog by the end of June.  Let me know if you would like me to write about anything in particular!

     

    Take care,

    Ed B.

     

    P.S.  I cross-post between my Infragistics Blog and my personal blog.  Some posts don’t end up on my Infragistics Blog site so be sure to check http://www.edsquared.com/ from time to time where my long-time colleague Ed Kisinger and I blog.  If you’d like to subscribe to that feed, the RSS address is:  RSS for Posts

    Posted in Community | TFS | VSTS


    MPT Talk at Dallas VSTS User Group



    I had a really good time last night speaking to the Dallas VSTS User Group about the Microsoft Process Template.  If you want more information, I wrote a blog post shortly after the public release of the MPT.  I was really sick last month when I was supposed to speak so I’m really glad I got the opportunity to make it up.

    One of the things I really enjoy about the group was the open session time after the scheduled talk to discuss problems people were facing with Team System and the group attempts to come up with possible solutions.  That’s really a great use of time for a specialized user group like this one.

    As a fun extra, thankfully the Demo Gods were okay with me and saved this Blue Screen of Death (BSOD) until after I was finished using the VPC during my talk :)  Everyone insisted that I take a screenshot and share with the rest of the world so enjoy!

    image

    Ed B.

     

    P.S. As a side note, the experience whenever your evaluation license runs out in Windows Server 2008 has definitely improved.  It no longer gives you a BSOD.  I was using TFS 2008 SP1 installed in a Windows Server 2003 VPC for my demos.

    Posted in Community | MPT | Speaking | TFS | VSTS


    Microsoft Process Template



    In December, I had the privilege to be the “MVP in Residence” with the Team System product group.  Chuck blogged about the experience at the beginning and end of the week.  I felt really good about the accomplishments at the end of the week.  The main project I worked on was packaging up the Microsoft Process Template (MPT) so that it could used by the public community.  I’m happy to announce that it is live on CodePlex now so feel free to download and use it!

    Description

    The Microsoft Process Template (MPT) is a Microsoft internal, end-to-end project management solution that maps to the Microsoft product development cycle and works with Visual Studio Team System 2008 (VSTS). The MPT offers an out-of-the-box solution and includes all the work item types (forms), queries, documentation, engineering best practices, and reports required for Microsoft development teams to get up and running on Visual Studio Team System. The Engineering Excellence* and Visual Studio Development teams worked together closely over the last year to create this template by compiling the lessons learned from other teams that have implemented similar templates, incorporating engineering best practices, widely socializing the concepts, and finally piloting this template with several product groups.
    *The engineering excellence team is a Microsoft business unit that provides Microsoft business group employees with high-quality technical education, best practices and guidance.

    Be sure to check out the Introduction and the Getting Started guides to dive in and get the background information for the process template.  One of the main things that people will notice is that the MPT simulates work item hierarchy through the the use of some daemon services.  There are several ways to simulate hierarchy in TFS 2008 so if you’re looking for a solution the MPT has the services source code and reports created for them.

    image

    Here is a sample report that uses the hierarchy to rollup the progress by Feature:

    image

    There are a few known issues with the process template which are listed in the Getting Started guide.  I’ll be sure to keep the guide updated if I hear of any other known issues.

    Other MPT Resources

    Gregg Boer, Principal Program Manager on the TFS product group, wrote an excellent series of blog posts of how Microsoft uses the MPT internally along with an overview of the process around tracking progress throughout the release.

    · How Microsoft/DevDiv uses TFS - Chapter 1 (Our Process)

    · How Microsoft/DevDiv uses TFS - Chapter 2 (Feature Crews)

    · How Microsoft/DevDiv uses TFS - Chapter 3 (Implementing the Process)

    · How Microsoft/DevDiv uses TFS - Chapter 3 (Addendum)

    · How Microsoft/DevDiv uses TFS - Chapter 4

    · How Microsoft/DevDiv uses TFS - Chapter 5 (Tracking Progress)

    · How Microsoft/DevDiv uses TFS - Chapter 6 (Tracking multiple projects)

    · How Microsoft/DevDiv uses TFS - Chapter 6 (Addendum)

    · How Microsoft/DevDiv uses TFS-Chapter 7 (Tracking Risk)

    · How Microsoft/DevDiv uses TFS-Chapter 8 (Tracking Quality Gates)

    · How Microsoft/Dev Div uses TFS - Chapter 9 (Transparency in Reporting)

    image

    Jeff Beehler and Brian Keller also put together a video of how Jeff uses the MPT & TFS to monitor progress of the release cycle. Take a look on Channel 9: http://channel9.msdn.com/posts/briankel/Better-Project-Management-with-Team-Foundation-Server/

     

    I really want to thank you to everyone that helped getting it packaged up for the public!  Also, thanks to Chuck for organizing the week, working logistics, and of course giving me a place to stay!

     

    Ed B.

    Posted in Community | MPT | TFS | Tools | VSTS


    TFS Performance Reports Pack



    Grant Holliday, former Team System MVP, is now working on the VSTS product group on various things but most importantly helping keep the internal Microsoft TFS servers in tip-top shape.  They have the largest known TFS instances in the world so you could imagine it’s got to be tough keeping it up and running well.  Brian Harry posts their usage metrics regularly if you’d like to get an idea of how HUGE it is.

     

    Keeping the performance manageable requires lots of monitoring and looking over the data that gets stored in the activity logging.  Grant has packaged up some of the reports they use internally and provided them to the world.  The download package is available on his blog post.

     

    imageimageimageimageclip_image004clip_image002[4]image

     

    Personally, I’m really glad that the product group is investing in dogfooding the early builds of the version of TFS that they are working on.  By putting the product under real use and under the load that only Microsoft can generate, we end up with a better product by the time it RTMs.

     

    Thanks again for making this available to the world!

     

    Ed B.

    Posted in TFS | VSTS | Reporting


    TFS 2008 Build Notification Power Tool - Workgroup work around



    From those of you that use the Workgroup edition of Team Foundation Server you might have notice that you cannot use the Build Notification Power Tool since you cannot authenticate to TFS.

    image

    Here is what I have done to work around the noted limitation:

    "RunAs" to the rescue:

    image

    C:\Windows\System32>runas.exe /user:ROSCOE\jbm /netonly "C:\Program Files\Microsoft Team Foundation Server 2008 Power Tools\BuildNotification.exe"


    To automate, create yourself a little batch file for startup. Here is a VBS script to automate the entry of the password for RunAs:

    dim WshShell,FSO

    set WshShell = CreateObject("WScript.Shell")
    set WshEnv = WshShell.Environment("Process")

    set FSO = CreateObject("Scripting.FileSystemObject")

    WshShell.Run("C:\Windows\System32\runas.exe /user:ROSCOE\jbm /netonly" & " {YourInstallPath}\BuildNotification.exe")

    Wscript.Sleep 300 ' Wait for window to open

    WshShell.AppActivate("C:\Windows\System32\runas.exe")
    WshShell.SendKeys "{YourUserPassword}"
    WshShell.SendKeys VBCRLF

    set WshShell=Nothing
    set WshEnv=Nothing
    set FSO=Nothing

    wscript.quit

    [UPDATE]
    You can "Connect As" from the GUI; Unfortunately, you will have to do this each time you restart.

    TFS

    Ed K.

    Posted in TFS | VSTS


    Team Build at Tulsa TechFest 2008



    TulsaTechFest 2008

    I’ve been in the middle of a lot lately and completely forgot to mention Tulsa TechFest 2008!  This will be my third year speaking and interestingly I have the only Team System talk this year.  If you’re around the area be sure to come by to learn more about automating your build & packaging process using Team System.  I’m going to do my Team Build talk that I did earlier this year at the Dallas VSTS User Group but we won’t go into as much depth since we only have 1.5 hours.  Looks like another great year with almost.  Infragistics has been a proud & regular sponsor of this event and I’m honored to have been invited again!

    [Update]

    Wanted to be sure I posted my slides and then also made the link to the awesome build lifecycle poster done by our friends in South Africa.  Thanks for keeping me honest!

     

    Ed B.



    Development Community Volunteer Week



    I didn't get to read my RSS feeds yet today but I got a hint to go read them and I discovered that Chuck wrote a nice blog post about volunteer work and me.  I guess the cat's out of the bag now :)  Thanks Chuck for the kudos - I really appreciate it.  I'm looking forward to making a really good use of that time.

    There are so many people in the development community that spend countless hours of their volunteer time.  Especially in the VSTS community.  People are working volunteering time:

    • developing and supporting open-source projects & tools,
    • speaking at events and conferences (this takes a considerable amount of time to prepare for,)
    • leading local user groups,
    • writing blog posts, technical articles, & books,
    • answering community questions in the MSDN Forums,
    • giving feedback, enhancement requests, & reporting problems of Microsoft products to improve them, and
    • all of the other ways people volunteer time that I can't even begin to think of.

    I personally know several people (and more) who really focus on trying to make the entire development community better off with these time & knowledge contributions.  (Infragistics as a company has been really supportive in all of our efforts to help the community.) I hope you get as much out of it as I do from learning from everyone.  Microsoft has done a great job in recognizing those individuals by creating the Most Valuable Professional (MVP) award.  I'm honored to have been awarded this award earlier this year.

    I've really not been able to blog as much as I have liked to or participating in the MSDN Forums answering people's questions.  I have focused the volunteer time that I have had in other areas.  I had a really great time at the MVP Summit earlier this year and came back with so many different ideas.  I really love the VSTS MVP & Champs group - truly a great group of professionals!  This brings me to my idea for this year.

    I feel like I haven't had time this year to really provide anything meaningful to the community.  So, I want to dedicate a work week and do something meaningful for the VSTS community.  There are plenty of places that we could all use help so I think that would be something meaningful and useful.  I'm planning on doing this time locally in Redmond so that if I need background information on a project, I can get it quickly.  I need to meet with some people about Infragistics stuff and really take some vacation time in that area (since it is so beautiful) so I think it's beneficial to be local during that week.

     

    What should I work on?

     

    Chuck mentioned a few ideas that we have so far but the one I personally love is being able to release the gigantic amount of work that Microsoft has done with their internal process templates & reports.  Have you seen them?  They are awesome!  Reports are so tricky to do and take a good chunk of time to be done correctly.  The Microsoft internal reports need to be scrubbed for external consumption which is my initial idea for volunteer work.

    Or should I work on a productivity tool?

    Don't let me taint your opinions though.  What do you want/need that would be valuable for VSTS?  Go to Chuck's blog post and give us suggestions about what you would like to see me work on.  No car washing or details though :) unless it's for a good charity organization then I'll consider it.

     

    Ed B.

    Posted in Community | TFS | VSTS


    Grouping Conditional Clauses in Work Item Queries



    So, I came across something pretty interesting when I was making a work item query today that I've wondered for a while.  I can't believe I just came across it today.

    OK - Just for some background on what I was trying to do:  I wanted to get a team query made that returned all of the bugs for my team.  The only problem is that our department supports all of our products for mainly builds & installers (among other things) and it causes the Area Paths that we look at to be pretty much all over our TFS server.  Usually you would just want all the bugs for a particular product and you can use the UNDER operator for the Area Path field.  I need to use multiple condition clauses using the UNDER operator.  I knew that the Work Item Query Language (WIQL) had a way for putting parenthesis around the conditionals in the WHERE clause.  (The WIQL syntax is very similar to T-SQL if you haven't ever seen it before.)  For example, here's part of a sample WIQL query that I was going after....

    SELECT [System.Id], (Other Fields) FROM WorkItems WHERE [System.WorkItemType] = 'Bug'  AND  [System.State] <> 'Closed'  AND  ([System.AreaPath] UNDER 'NetAdvantage\.NET\Installers'  OR  [System.AreaPath] UNDER 'NetAdvantage\.NET\ASP.NET\Builds'  OR  [System.AreaPath] UNDER 'NetAdvantage\.NET\WinForms\Builds'  OR  [System.AreaPath] UNDER 'NetAdvantage\WPF\Builds'  OR  [System.AreaPath] UNDER 'NetAdvantage\WPF\Installers'  OR  [System.AreaPath] UNDER 'TestAdvantage\QTP\WinForms\Builds'  OR  [System.AreaPath] UNDER 'TestAdvantage\QTP\WinForms\Installers'  OR  [System.AreaPath] UNDER 'TestAdvantage\RFT\WinForms\Builds'  OR  [System.AreaPath] UNDER 'TestAdvantage\RFT\WinForms\Installers')

    My problem was - how do I put parenthesis in the query using the Work Item Query Editor? (UI in Visual Studio)

     

    However, I remember reading Brian's post yesterday about the new Alerts Editor (which by the way is totally awesome and immediately adds value to the product without waiting for the next major release) and thought, I wonder how they did that in the UI with the alerts XPath queries because I know you can't get very good alerts without the ability to group the XPath query conditionals.  Let me steal an image from Brian's post with a little editing showing off a grouping of condition clauses:

    Alert Definition with Grouped Conditions

    I thought to myself, hmmmm... that grid looks pretty similar to WIQ Editor grid that exists today in Team Explorer 2008 and started searching everywhere for the "group" tool button (since there is not a toolbar above the grid.)  I found it.  It's in the context menu whenever you select multiple rows.  Seriously, I can't believe I haven't ever seen it before.  I guess I don't usually write very complex work item queries :)

    Grouping of Conditions in Work Item Query Editor

     

    Have fun writing some useful queries for yourself and your team now!

     

    Ed B.

    Posted in TFS | VSTS


    New Team System MVP



    Microsoft MVP Horizontal Logo Speaking of Team System, I found out last week that I have been officially inducted into the Team System MVP group.  Earlier this year, I was awarded as an MVP in the Client Application Development competency.  Don't get me wrong, I still love WPF & Silverlight development and will continue to be involved in that community in the future.  I'm even working on finishing up the technical editing of a Silverlight 2 book right this minute. Or actually I'm procrastinating writing blog posts :)

    Being part of the Team System MVP group, I'm really joining one of the most awesome groups ever.  I spent all of my time earlier this year at the MVP Summit at all of the Team System sessions and they truly are one of the best product teams at Microsoft.  They truly value our feedback and the Team System MVPs really love and care for the product just as much and want to see it grow by leaps and bounds.  And when I say love and care for the product, you don't even understand! :) This is definitely a good fit and I'm honored to officially join the group.  So when do I get to learn the "secret handshake?"

     

    Ed B.

    Posted in Community | TFS | VSTS

    Enter the Coolest Team System Gadget Contest!



    Fellow Team System MVP Mike Azocar has announced an awesome new contest to stir up the Team System tools ecoystem.  There are some really cool prizes so far including a free license for Microsoft Visual Studio Team Suite 2008 w/ MSDN Premium Visual Studio Team System Logosubscription and there are more donated prizes coming...  Get the full details at his blog post:  Want to be famous- Enter the Coolest Team System Gadget Contest!

    Have you created a useful gadget for Team System? Do you have one in mind? I am looking for the coolest community built tool for VSTS. It can be something for TFS, for Visual Studio, or something that is stand alone. The winner will receive a one year subscription to MSDN with Team Suite!

    To enter, submit a screen cast (up to 3 minutes long) which tells everyone why your gadget is the coolest and the source code. All submissions will be released to the public as free source to use and enjoy (with you getting all the credit of course). Videos will also be made available to the public to help make you famous! This should be something new (i.e. not on Codeplex or previously released) and not something repackaged. Submissions accepted up until August 31st 2008. Winner will be announced September 15th 2008.

    Judges will be Mike Azocar, Martin Woodward, and I so this is going to be a lot of fun!

     

    Ed B.

    Posted in TFS | Tools | VSTS | VSX


    Speaking about Team Build 2008 at the Dallas VSTS User Group



    I'll be speaking on July 1, 2008 at the Dallas Visual Studio Team System User Group. Starts at 6 PM.  This is going to be a really exciting session for me personally and I love that we have a big block of time to get into some really fun Team Build details.  I think we are meeting at the Notion Solutions office in Irving for the July meeting but I'll double-check and update if there is a change.

     

    Here are a few topics that I'll make sure we talk about:

    • New Features for Team Build 2008
    • Fun Stuff around Builds at Infragistics
    • Build Notification Power Tool
    • Building Java applications using Team Build & TeamPrise - (This blows people's minds away)
    • Building Installers using Wix
    • New Changes in TFS 2008 Service Pack 1 for Team Build
    • If time, Extensibility with the Team Build API

    Be sure to sign up on the user group website to get updates and the RSVP link whenever it gets sent out.

     

    Ed B.

    Posted in Speaking | TFS | Tools | VSTS


    Openings in Release Engineering Department at Infragistics



    Our team has been kept extremely busy lately with our new responsibilities.  What does the Release Engineering team do exactly?  Along with creating builds and installers for ALL of our products, we now have responsibility of Team Foundation Server Operations, and the entire development lifecycle of internal productivity tools that we call the "Internal Tools Suite."  So to sum it up, if it has to do with automation or the release process, it's us :)  We need some help (so I can get around to doing some blog posts again haha.)

     

    Here's the positions we have open for the department:

     

    Come join our team! It's been extremely exciting lately with what we're doing internally at Infragistics.  Contact me if you're interested:  ed AT infragistics DOT com

     

    Ed B.

    Posted in Infragistics | TFS | VSTS


    April 2008 CTP Available for Visual Studio Team System "Rosario"



    It's finally available!  Seriously - this CTP has quite a bit of features that they have added and you can start to see that VSTS is and will continue to be a strong if not the best ALM offering.  The new features are added to Head over to Jeff Beehler's blog post to find out more details of what has been added...

    I haven't picked a favorite feature just yet :)  The three I just really like the most across the whole offering:

    • New Team Build System based on Windows Workflow Foundation
    • Historical Debugging (this will really help with the Debug and Repro scenarios)
    • Great Test Case Management System

    Here's a list of all the new features!

    Architecture Edition

    • Exploring the existing code structure
    • Designing process flow as activities
    • Designing user interactions with systems
    • Designing system functionality as components
    • Visualizing and designing types in systems
    • Visualizing and designing interaction sequences in systems

    Development Edition

    • Simplify Code Analysis rule selection with rule sets
    • Find and fix a bug using the historical debugger
    • Identify the test impact of code changes
    • Find a bug on a separate machine using the standalone debugger

    Database Edition

    • Building and using an off-line representation of your operational database as a “sandbox” development environment.
    • Using Data Generation to custom-build data for testing your database application.
    • Making and unit-testing schema and code changes in an off-line environment.
    • Performing static code analysis of your programmability objects.

    Test Edition

    • Planning a testing effort
    • Executing manual test cases
    • Verify the fix
    • Automate a manual test and add validation.

    Team Foundation Server

    • Managing an Agile schedule
    • Easier reporting from Excel
    • Managing features with the CMMI Process
    • A new Add Files to Source Control wizard and support for drag and drop from Windows Explorer to Source Control Explorer
    • An enhanced, non-modal conflict resolution experience, integrated into the pending changes tool window
    • A new history view that shows labels applied to a file as well as how changes were merged across branches
    • A new automated build system built on Windows Workflow Foundation, featuring dynamic build machine allocation from a machine pool and distributed build functionality
    • Rollback for a check in (currently only available at the command line)
    • Many Source Control Explorer usability enhancements

    Be sure to head to their Connect site with your feedback!

    Ed B.

    Posted in TFS | VSTS


    Work Item Workflow Transition, Server Level Security Group



     

    When creating a transition between states you may want to use a "Server" level security group for the "For" and/or "Not". Taking a first stab at doing this you will probably do as the screen shot below.

    image

    When you go to validate this you will get the error shown in the screen shot below. You might even bang your head a couple times trying to figure out what the deal is. :) TF26171

    image

    The correct way to specify a SERVER security group is shown in the screen shot below

    image

     

    Ed K.

    Posted in TFS | VSTS


    Visual Studio Team System Rosario TAP



    I'm really excited because the last three days I've been in Redmond, WA attending the TAP briefing for the next version of Visual Studio Team System code named "Rosario."  All I can say is WOW - I'm completely impressed with the work that Microsoft has done and the amount of effort they are making into making the next version of Team System be absolutely awesome.

    A lot of big announcements were made and we received a lot of insight into the future.  However, I'm not allowed to say anything just yet about any of it since we were all under a Non-Disclosure Agreement (NDA)  I'm reviewing the latest bits and going to start several blog articles about the multitude of amazing features and as soon as I am able to talk about it I will.  (By the way there are early bits available in the November CTP already that you can download using the Rosario link above!)

    It was great meeting with the other VSTS Champs in person and putting faces with names.  Truly a great event and I really got the impression that the VSTS product team members were genuinely interested in how we felt about the product and our opinions about what we were being shown.  That kind of commitment to receiving feedback from real end users really shows in the quality of their product.

    All I can say is that I can't wait until we receive the final bits and are using it in production!

     

    Ed B.

    Posted in TFS | VSTS


    Multiple Localized Team System Web Access Sites



    So here at Infragistics we're truly a global company now which makes life as a TFS Administrator very "interesting" for sure!  Everyone is working around the clock and things can go wrong pretty much 24-7.  Oh well - I'm used to it already :)

     

    If you didn't know, last week Microsoft announced that all of the localized versions of Team System Web Access (TSWA) had been finished and available for download.  This was great because we needed a couple of them for internal use. The only problem I found was that you can't install more than one version of TSWA on the same machine.  That's no fun :(

    clip_image002

    Thankfully Hakan came to my rescue and gave me a few steps to try and they definitely worked out for me.  I did everything on a separate virtual machine, gathered all of the files I needed, and then copied them to the TSWA web server. 

    Disclaimer:  If you're going to follow the steps be mindful that this is completely unsupported by Microsoft.

    1. Install <localized version>
    2. Copy the files to C:\TSWA\<localized version code>
    3. Uninstall <localized version>
    4. (Repeat for all languages)
    5. Manually create web sites in IIS to point to each of the different languages
      • Make sure each TSWA instance uses a different IIS AppPool
      • Make sure each TSWA instance points to a different cachedir

     

    There you go!  Also, it might be helpful to use host headers to help users out with discovering their localized versions of TSWA.  This allows you to use port 80 as well instead of the usual default of 8090.  For example:

    • English - tfsweb.[your domain]
    • Japanese - tfsweb-jp.[your domain]
    • German - tfsweb-de.[your domain]
    • etc.

     

    Ed B.

    Posted in TFS | TSWA


    Integrating Dotfuscator into Team Build (TFS)



    If you happen to use Dotfuscator by PreEmptive Solutions then you have probably wondered how to integrate this into your automated Team Builds.  They happen to include an MSBuild task for calling the proper command-line functions but don't have much documentation about this feature.

    Background Obfuscation Information:  In general, obfuscation prevents reverse engineering of your software by using different techniques to make the MSIL of your .NET compiled application less understandable.  Several different companies use many techniques for doing this including: string encryption, renaming of symbols, control flow manipulation, etc.  If you've ever used Reflector for .NET you know how easy it is to look at reverse-engineered "source code" for a .NET application.

    • Start by putting your Dotfuscator configuration file in the folder that contains your team build script (i.e. TFSBuild.proj) and it to source control.
    • Open up your team build script and edit it.  (Be sure to check it out first.)
      • Start by adding a reference to the proper custom targets file that is provided.  You should have a Dotfuscator Build Machine license installed on the TFS Build Server(s.)  If you got the wrong license version, just ask them for upgrade pricing.

        <Import Project="$(MSBuildExtensionsPath)\PreEmptive\Dotfuscator\4.0\PreEmptive.Dotfuscator.Targets" />

     

      • Next, add a section for the Dotfuscator Properties you will need.  You'll notice we have a keys directory that gets pulled down from source control during the build process.  We keep our strong name key in this direcotry and the keydir directory property is for resigning the assemblies after the obfuscation is complete.

          <!-- Properties for Dotfuscate Task-->
          <
        PropertyGroup
        >
            <
        ConfigPath>$(SolutionRoot)\..\BuildType\Dotfuscator.Configuration.xml</ConfigPath
        >
            <
        InputPath>$(SolutionRoot)\..\Binaries\Release</InputPath
        >
          </
        PropertyGroup
        >
          <
        PropertyGroup
        >
            <
        DotfuscatorProperties
        >
              <
        targetdir>$(InputPath)</targetdir
        >
              <
        keydir>$(SolutionRoot)\Keys</keydir
        >
            </
        DotfuscatorProperties
        >
          </
        PropertyGroup
        >
          <
        ItemGroup
        >
            <
        InputAssembly Include="$(InputPath)\*.dll;$(InputPath)\*.exe" Exclude="$(InputPath)\*.vshost.exe"
        />
          </
        ItemGroup
        >  

     

      • Finally, customize the AfterCompile target by adding the Dotfuscate task with appropriate property settings.  See more information about Customizable Team Foundation Build Targets.

          <Target Name="AfterCompile">
            <!--
        Perform obfuscation steps after assemblies are compiled.
        -->
            <
        Dotfuscate InputAssemblies="@(InputAssembly)" Properties="$(DotfuscatorProperties)" ConfigPath="$(ConfigPath)"
        >
              <
        Output TaskParameter="MappingFile" ItemName="DotfuscatorMappingFile"
        />
              <
        Output TaskParameter="ReportFiles" ItemName="DotfuscatorReportFiles"
        />
              <
        Output TaskParameter="OutputAssemblies" ItemName="DotfuscatedAssemblies"
        />
              <
        Output TaskParameter="SatelliteAssemblies" ItemName="DotfuscatedSatelliteAssemblies"
        />
              <
        Output TaskParameter="DebugSymbols" ItemName="DotfuscatedDebugSymbols"
        />
            </
        Dotfuscate
        >
          </Target
        >
    • Next, take some time to edit your Dotfuscator configuration file.  Notice the properties I am using in my sample project below and what is being set in the Dotfuscator properties collection in the Team Build script above.  Basically, I have just cleared the property values out to make sure that the MSBuild task populates them correctly.

      <?xml version="1.0" encoding="utf-8" standalone="no"?>
      <!
      DOCTYPE dotfuscator SYSTEM"http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.1.dtd"
      >
      <
      dotfuscator version="2.1"
      >
        <!--
      This is application generated code. Do not edit manually.
      -->
        <
      propertylist
      >
          <
      property name="targetdir" value=""
      />
          <
      property name="keydir" value=""
      />
        </
      propertylist
      >
        <
      global
      >
          <
      option>verbose</option
      >
        </
      global
      >
        <
      input
      >
          <
      asmlist
      >
            <
      inputassembly
      >
              <
      option>library</option
      >
              <
      file dir="${targetdir}" name="Shared.Library.dll"
      />
            </
      inputassembly
      >
          </asmlist>
        </
      input
      >
        <
      output
      >
          <
      file dir="${targetdir}\Dotfuscated"
      />
        </
      output
      >
        <
      tempdir
      >
          <
      file dir="${targetdir}\Dotfuscated"
      />
        </
      tempdir
      >
        <
      renaming
      >
          <!--
      <mapping>
            <mapoutput overwrite="false">
              <file dir="${targetdir}\Dotfuscated" name="DotfuscatorMapFile-KeepSecure.xml" />
            </mapoutput>
          </mapping>
      -->
        </
      renaming
      >
        <
      controlflow level="high"
      />
        <
      stringencrypt
      >
          <
      includelist
      >
            <
      assembly
      >
              <
      file dir="${targetdir}" name="Shared.Library.dll"
      />
            </
      assembly
      >
          
      </includelist>
        </
      stringencrypt
      >
        <
      signing
      >
          <
      resign
      >
            <
      option>dontuseattributes</option
      >
            <
      key
      >
              <
      file dir="${keydir}" name="StrongName.key"
      />
            </
      key
      >
          </
      resign
      >
        </
      signing
      >
      </
      dotfuscator>
       
    • That's it.  Finally, just customize it to your heart's content!

     

    Feel free to let me know if I can improve this in any way!  I'm always looking to efficiently refactor our Team Build scripts.

     

    Ed B.

    Posted in TFS


    New Position



    Ever since I started at Infragistics, I had been working in the User Experience Group (under the Evangelism umbrella) primarily with WPF & WinForms.  As some of you know, I wasn't too fond with WPF at the beginning :) but now I love it.  [Shameless Plug:  Have you checked out Tangerine?  See my blog post about it.]

    I have taken a new position now as what is usually referred to as the Configuration Manager (HR Title:  Configuration and Process Improvement Engineer.)

    As some of you know, I have been working with Team Foundation Server since pre-beginning (is that a word?) like during the Betas.  [Strolls down memory lane... Anyone remember the Beta 2 to Beta 3 upgrade? whew... Ed K. remembers that day with the 3-hour phone call from the TFS Product Team.  Those were the days. I got a cool TFS All Stars shirt from it though!]  I digress.  Infragistics has decided to adopt TFS and planning to migrate pretty much all of our separate systems to it.  So, that's what I'm doing now in the Engineering department!  Although I'll be missing doing WPF and Evangelism work, I'm pretty excited about getting to do TFS stuff full-time.

    If you were at Grant and I's talk at Boston ReMix or my talk at Tulsa Tech Fest, you got the preview of a community WPF application that we're working on to gather data from TFS and replace our Release Status Wall.  It's basically an application to visualize your release process.  As soon as we get something ready to preview, I'll definitely post up on here.  So I get to put my love of both WPF and TFS together!  Grant's a God-send when it comes to making applications look great. I'm really blessed to be working for a company that has a dedicated Visual Design team... We have 5 dedicated Visual Designers now... wow.

    Another one of my goals with our new system of tracking development data is to provide more transparency to our customers in regard to feature tracking, bugs, etc.  I think it's important (as a previous customer) to be able to have that kind of transparency.  I'm thinking something along the line of Microsoft's Connect website.

    So I look forward to being able to talk more about TFS and coming out with some exciting tools and information.  Don't worry, I still do WPF development too so you'll still see me from time to time blogging about it and speaking.  I just finished up a WPF magazine article yesterday even :)

     

    BTW... I'll be in DevConnections next week in Las Vegas doing some WPF Evangelism stuff so be sure to hit me up if you'll be in town!

     

    Ed B.



    Granular Security Privileges Not Available in TFS



    I don't know how I ever missed it but I was shocked to find that I could not restrict users from branching and merging in TFS Version Control.  Ahhhhhh!!!!

    The only security privileges (for Version Control) that are available are:

    • Read
    • Check out (branching, merging, and other similar pending changes fall into this category)
    • Check in
    • Label
    • Lock
    • Revise other users' changes
    • Unlock other users' changes
    • Administer labels
    • Manipulate security settings
    • Check in other users' changes

    If you want more information about the specifics for Version Control privileges, check out MSDN at:  http://msdn2.microsoft.com/en-us/library/ms252587(VS.80).aspx

    If you are facing this same issue and believe that it should be a feature in the product, help out by voting on the feature suggestion on Visual Studio Connect:  https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=307874

     

    Ed B.

    Posted in TFS


    Uninstalling TFS Power Tools on Vista



    So there is a huge problem with uninstalling the TFS Power Tools if you have them installed on Windows Vista.  This becomes particularly a problem when you want to upgrade the TFS Power Tools (which I was trying to do to the version just released a few weeks ago.)

    If you try to uninstall the regular way, you get all sorts of errors like:

    Error 1722. There is a problem with this windows Installer package. A program run as part of the setup did not finish as expected. Contact your...

    Seriously - it sucks.  I even got fed up and finally decided to rebuild my machine at work (this particular uninstall experience wasn't the only reason for rebuilding my work laptop but definitely was the tipping point!) :)

    Anyhow, just to save you a lot of problems, open up a command prompt as an Administrator and run:

    msiexec /x {C802488F-CB5F-48BE-BBD2-0C0F9E290E63}

    Click "Yes" to the next prompt and you should have a clean uninstall!

     

    Ed B.

    Posted in TFS


    Icons for Office 2007 File Extensions in SharePoint



    If you're using Windows SharePoint Services (which is installed with Team Foundation Server) or SharePoint Portal Server, you don't get to see the file icons for the files with Office 2007 extensions (i.e. docx, xlsx, pptx, etc.)

    I'm not sure if they have updated it in the 2007 version of SharePoint Portal Server, WSS 3.0, or in TFS 2008.  If you happen to know, contact me and let me know and I'll update it here.

    Anyhow, have you ever wondered how to add new file extensions with associated icons into SharePoint?  Check out the blog site that Alexander Groß manages and he has just how to do it!  It's something that has bothered me enough already and I'm ready to get it resolved!

    How To:  http://www.therightstuff.de/2006/12/16/Office+2007+File+Icons+For+Windows+SharePoint+Services+20+And+SharePoint+Portal+Server+2003.aspx

    Office 2007 sample documents with icons in SharePoint

    Ed B.

    Posted in TFS


    Missing Process Template Editor - TFS Power Tools



    Are you missing your process template editor submenu underneath the "Team" menu in Visual Studio?  The new process template editor that is bundled with the TFS Power Tools requires for you already have the Domain-Specific Language Tools for Visual Studio 2005 Redistributable Components installed on your machine.

    After you have installed that you should be good to go.  Be sure to uninstall the Power Tools and then install them again to get it to come up.

     

    Ed B.

    Posted in TFS


    Come Hear Us! - ReMIX 2007 in Boston



    Grant Hinkson (our Director of Visual Design at Infragistics) and I will be doing our talk "Meeting in the Middle - Designer/Developer Interaction in WPF."  It looks like we have the first breakout session on Tuesday, October 9 at 9:00 AM.  Take a look to see what other sessions are going on:  https://admin.viewcentral.com/events/uploads/ms_events/agenda.html

    Session Details

    Date:  10/9/2007

    Time:  9:00am – 10:15am

    Title:  Meeting in the Middle - Designer/Developer Interaction in WPF

    Abstract:

    In this session, Ed and Grant will highlight many of the lessons they learned when developing the enterprise-level WPF reference application, Tangerine. Tangerine is an asset browser built using the data provider model to browse the Amazon online catalog. Additionally, they will discuss the Software Release Status application currently under development. This project management tool uses the power of WPF to visually represent the status of your software projects using data from your Team Foundation Server. You'll get an inside look at the interaction between development and design, and gain insight into practical solutions for common problems.

    Brad Abrams, Group Product Manager for the Microsoft .NET Framework, will be the keynote speaker and will be talking about the Rising Tide of User Experience.  Pretty awesome!  You know we like UX!

    Want to Save Some Money on Registration?

    Well, just because I want to make sure everyone is coming... If you use the following RSVP code, RM07EXTB, it will save you $100 of your registration.

    More Info

    http://www.remix07boston.com

    What to expect at ReMIX07 Boston …

    If you’re in the web business, learn about:

    • Building a better user experience to unlock new revenue opportunities
    • Forging tighter, stickier customer connections
    • Building innovative media experiences into your site

    If you’re a web developer, build:

    • Silverlight applications quickly and easily
    • Sites and applications that consume Windows Live services
    • Rich, interactive sites made for the next web

    If you’re a web designer, learn about:

    • Using Silverlight to design gorgeous and highly functional user interfaces
    • How a real-world application is built and the best practices associated with it
    • The suite of Expression tools that revolutionize the way designers work with developers

    If you attend, regardless of your job role, check out:

    • Xbox Gaming Area where you can test your skills at Halo 3 and Guitar Hero among others
    • Express Yourself Design Contest where key design agencies compete to solve a real-world design problem
    • Stay tuned: We may feature some cool products and demos around XNA, Popfly, Robotics Studio and Surface


    It’s Happening Here

    Monday-Tuesday, October 8-9, 2007

    October 8:             Registration & Breakfast from 7:00-9:00 am
    Keynote & Breakouts from 9:00 a.m.-5:45 pm
    Welcome Reception from 6:00-9:00 pm

    October 9:             Registration & Breakfast from 8:00-9:00 am

                                    Keynote & Breakouts from 9:00 am-5:00 pm

    Hyatt Regency Cambridge

    575 Memorial Drive,
    Cambridge, MA 02139

    For directions click here.

     

    Ed B.

    Posted in Speaking | TFS | WPF


    Team Foundation Server meets Application Service Provider



    Interesting...Great concept, especially if you have disparate teams and no TFS expertise on staff. Sure beats using VSS remotely with an expert on staff.

    Off the cuff, this is way too expensive. Have a look, it might be what you are looking for.

    Readify

     

    Ed K.

    Posted in TFS


    Visual Studio Team System Web Access Available



    Formerly known as Teamplain Web Access for Team System, Microsoft Visual Studio Team System Web Access has been released and freely available as a download to licensed customers of Visual Studio Team Foundation Server.  Microsoft recently purchased devBiz and is offering their former product for free as a Power Tool.  At some point I'm sure they will bake into the main product but for now, it's a great value-add to the TFS product line.

    It's really a great tool for you to use if you don't feel like installing a lightweight version of Visual Studio for users who really don't need all of it.  It reproduces pretty much everything that you could do in Team Explorer but in a nice web application.  I'd say It's nice to have even as a developer!

     

    Ed B.

    Posted in TFS | TSWA


    Team Build and Strong Naming or Click-Once



    I woke up to a FAILED build report in my inbox this morning... Not the best of signs but it happens, right?

    So I'm trying to figure out what in the world could have gone wrong.  What did we change since the last build that could have caused this madness?  OK, I know I'm being over-dramatic :-)

    Here's what I had in the build report:

    Target ResolveKeySource: 
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1718,7): error MSB4018: The "ResolveKeySource" task failed unexpectedly.
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1718,7): error MSB4018: System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1718,7): error MSB4018: at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1718,7): error MSB4018: at System.Windows.Forms.Form.ShowDialog()
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1718,7): error MSB4018: at Microsoft.Build.Tasks.ResolveKeySource.ResolveManifestKey()
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1718,7): error MSB4018: at Microsoft.Build.Tasks.ResolveKeySource.Execute()
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1718,7): error MSB4018: at Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode howToExecuteTask, Hashtable projectItemsAvailableToTask, BuildPropertyGroup projectPropertiesAvailableToTask, Boolean& taskClassWasFound)
    Done building target "ResolveKeySource" in project "untimyrm.tmp_proj" -- FAILED.

    I think I knew what happened... I had just set up the Click-Once settings in our app and I bet the build server doesn't have the key file we are using.  Sure enough, I happened to be write!  I found out this could also happen if you are signing your assemblies as well with a strong name.  MSDN Forums has the details.

    Here's Nagaraju Palla's answer:

    For password protected signing keys to work on build without prompting, they need to be exported into a key container crypto store on the build machine under the account that performs the build. Once exported, the build will not ask for a password anymore. The crypto store will do the signing and take care to keep private key safe.

    One of the quicker ways to do this:

    - Logon to the build machine using the build service account

    - Run msbuild on any project that uses this signing key. It will prompt for the password and will export the key.

    - Now start the TeamBuild full build.

    Ed B.

    Posted in TFS


    Building Apps Using NetAdvantage with Team Build



    This post actually applies to many different situations in which you would automate a build on a separate server.  I just happen to be familiar with Team Build. :-)

    Because of how NetAdvantage deals with licensing each build server will need a full copy of NetAdvantage installed.  Some build engineers have only copied the NetAdvantage assemblies over to their build server and will see LicenseException errors in their build reports.  Even copying them into the GAC isn't enough...  Just to save yourself a couple of headaches, take a few minutes to install using the product installer.  There is an option in the installer to install just the assemblies and licensing components.  I'd recommend deselecting all of the options if you don't need them installed on the build server.  Be sure to also apply any hot fixes that your application may use as well.

    As an aside, according to Infragistics' current licensing agreement, each build server you install NetAdvantage on must have a separate license whoever creates the build script must be licensed.  If your team has separate build engineers, each of them should be licensed if they will be working on the build script.

     

    Happy Building!

    Ed B.

    Posted in TFS | Tools


    Orcas and Team Projects



    How is the Team Project limitation going to be addressed in Orcas? Is the problem going to be solved in Orcas or will it really be in Rosario? Read Brian Harry's blog post to learn more:  Orcas and Team Projects.

    Looks like for Orcas they will be addressing the cost issue of having to purchase more servers to scale for greater number of team projects. Can you imagine what the Server and License cost is for a set up like CodePlex.... I would not like that bill. Orcas will support SQL named instances, so you can have multiple data tiers on one box. You will still have to have the app tiers on separate boxes but those are way cheaper than a beefy SQL box; you can (should) just VM the app tiers anyway's.

    Ed K

     

    Technorati Tags:
    Posted in TFS


    MSF Agile Quality Indicators Report for Conchango Scrum Process Template



    So, if you didn't know I'm a huge fan of the Quality Indicators report in the MSF for Agile Software Development process template in Team Foundation Server.  Here at Infragistics, we're evaluating the Conchango Scrum Process Template for Team System and I don't get that wonderful report I love :-(  I've been stalling (because I haven't ever written a SQL Reporting Services custom report for TFS) but I finally did it today.  It really wasn't that bad.  Thank God I already had most of the report set up for me!  There are a TON of data and metrics you can get from the OLAP cube in the TFS Data Warehouse.

    MSF Agile Quality Indicators Report

    If you haven't read the Wrox Professional Team Foundation Server book, then it's a great avenue for learning TFS.  It also has a good section on how to creating custom reports with the Visual Studio Report Designer.

    Really the only issue with just importing the original report to the Scrum team project is the fact that Bugs are actually Sprint Backlog Items with an Item Type of Bug (as opposed to the MSF Agile template that just has a separate bug work item type) and the status of an active bug is actually "In Progress."

    Steps to Modify Report

    1. You need to get a copy of the Quality Indictors RDL file.  Take a look at Customizing Reports to get more information on how to do this.  I happened to create a whole new Reporting Services Project in Visual Studio called TFS Scrum Reports because I may be creating some new ones later.
    2. Be sure to add the two shared Data Sources to your new Visual Studio project.  You can use the settings of the existing shared data sources on your TFS SQL Reporting Services server.  (Usually found at http://[TFS Server Name]/Reports/ or you can right-click the Reports folder under your team project in the Team Explorer window and choose "Show Report Site...")
       image Reporting Service Visual Studio Project
    3. With the report open, navigate down to the section that gets the Active Bugs metric:
      Quality Indicators Active Bugs OLAP Metric  
    4. Notice what it grabs for the work item type and state:

      MEMBER [Measures].[Active Bugs] AS ([Measures].[Cumulative Count], [Work Item].[System_State].[Active], [Work Item].[System_WorkItemType].[Bug], STRTOMEMBER([Measures].[Build Date])) + 0
    5. Now, change these values to the following:

      MEMBER [Measures].[Active Bugs] AS ([Measures].[Cumulative Count], [Work Item].[System_State].[In Progress], [Work Item].[Conchango_VSTS_Scrum_SprintBacklogItemType].[Bug], STRTOMEMBER([Measures].[Build Date])) + 0
    6. All you have to do now is save the report and upload it to the SQL Reporting site in your team project's reports folder.
      SQL Report Services Upload Report
    7. Last thing, you may run into a problem with the report finding the shared data sources.  If this happens, go into the properties of the report on the SRS site and choose the shared data sources that are being used by SRS.

    Really, you can use this method to port this great report into just about any process template you might be using.  Pretty much any of the OLAP metrics can be changed.

    What other kinds of reports should we have?  Do you have any interesting custom reports that you find useful for the major process templates that are available on the Internets and what not? :-)

    UPDATE:  I've attached a modified report if you don't want to go through all the steps of customizing.  Just download it and start at Step 6.  It's much more fun doing it yourself though!

    Quality Indicators.rdl (65.25 KB)

     

    Ed B.

    P.S. We're changing up some of our tags to better organize all of our blog posts.  May take some time...



    Updated Quiescing GDR Fix Released



    What Does the Updated Quiescing GDR Fix?

    • TFS SP1 and Hotfixes fails to install on a SQL Clustered Data Tier.
    • TFS SP1 and Hotfixes may fail to install due to issues connecting to the TFS databases.
    • TFS Databases may be left in Single-User mode after SP1 or Hotfix installation failure.

    Source: Brain Harry Blog

    Patch Download

    Ed K.

    Posted in TFS

    eScrum - New Scrum TFS Process Template from Microsoft



    There's a new Scrum process template and it looks like Microsoft has developed it this time.  You can pick it up here:  http://www.microsoft.com/downloads/details.aspx?FamilyID=55a4bde6-10a7-4c41-9938-f388c1ed15e9&displaylang=en

    Overview

    eScrum is a Web-based, end-to-end project management tool for Scrum built on the Microsoft Visual Studio Team Foundation Server platform. It provides multiple ways to interact with your Scrum project: eScrum Web-based UI, Team Explorer, and Excel or Project, via Team Foundation Office Integration. In addition, it provides a single place for all Scrum artifacts such as product backlog, sprint backlog, task management, retrospective, and reports with built-in context sensitive help.

    We'll have to evaluate it and see where it ranks among the other Scrum process templates.  For now, check out some of the other ones:  (Did I miss any?)

    Update:  HOLY CRAP! There is a ton of post-installation steps that you have to take and other items that you have to download.  If you don't happen to have the specific version of the ASP.NET AJAX Control Toolkit that eScrum requires, then you are going to have to do a binding redirect.  If you download it from the ASP.NET AJAX Website, it is a later version.  See the Readme after you install. This setup and install experience is probably one of the worst I have ever done!  Even rivaling the TFS Beta 3 to Beta 3 Refresh upgrade!  That's saying a lot.

    Wag of the Finger

    Now I'm just having problems with the reports after I've rebuilt the TFS Warehouse five time!  This process template undoubtedly deserves a Colbert Wag of the Finger.

    image

    Ed B.

    Posted in TFS


    MCTS: VS 2005 Team Foundation Server Certification



    I took the 70-510 exam on Tuesday here @ TechEd 2007 and PASSED!. The exam came out of beta in April 07, while in beta the exam was 71-510, now, it is 70-510. The exam is still very rough, they have some work to do on cleaning up some of the questions. I saw 2 question where the options where the exact same...i.e.

    A: I am Cool
    B: Yes you are
    C: I am Cool
    D: Duh!

    and oddly enough the repeat was the answer on one of them, so which one do I pick lol.

    Anyway's......overall it was tough and geared more towards people that have been working extensively with the product. I think it would be hard to just pick up a book and study the material and pass, you need real world experience; I like it that way...that is the way it should be, certifications will carry more weight if people are not able to just pick up a book and pass the test with no real world experience with the technology.

    Here are some avenues of learning I recommend to prepare for the exam:
    Preparation Guide for Exam 70-510
    Professional Team Foundation Server (Wrox)
    Notion Solutions eTraining

     

    Ed K

    Posted in TFS


    Posters/Diagrams for Team Foundation Server and more...



    I found this awesome site of Diagrams/Posters, all of which are free for download. You need to register. Lots of posters in JPEG or PDF format.

    Here is a small list of what the site contains:

    0202 Microsoft Team System FiFi TroubleShooting (New)
    0202 Microsoft Team System Source Structure
    0202 Microsoft Team System Branching
    0070 Microsoft PowerShell Scripting
    0070 Microsoft PowerShell Scripting Cmdlets
    0202 Microsoft Team System Editions
    0418 WF Posters - WorkflowChanges
    0416 WF Posters - WebService
    0414 WF Posters - Tracking
    0412 WF Posters - SqlWorkflowPersistence
    0410 WF Posters - Roles
    0408 WF Posters - Queues
    0406 WF Posters - Local Services
    0404 WF Posters - Correlated Local Service
    0402 WF Posters - Compensation
    0400 WF Posters - Batching
    0202 Microsoft Team System Project Build
    0002 Architecture
    0004 Best Practices Poster
    0006 CSharp Poster
    0008 CSharp Poster II
    3100 WF Batching
    0202 Microsoft Team System Project Capacity Planning
    0202 Microsoft Team System Project Panning
    0202 Microsoft Team System Project Source Migration
    3002 SDLC smartProcess
    3004 SDLC Unified Process
    3006 SDLC Scrum
    3010 SDLC MSF Design
    0000 PosterMap
    0000 System_NameSpace
    0001 Modeling Poster
    0206 Microsoft Indigo Attributes Poster

    I believe this site is managed by a VSTS MVP from South Africa.


    Ed K.

    Posted in TFS


    TFS Guide Beta 1 Release



    The Patterns and Practices Team has released beta 1 of the TFS Guide. This is a free download from CodePlex. Click here to download the guide.

    Parts
    Part I, Fundamentals
    Part II, Source Control
    Part III, Builds
    Part IV, Large Project Considerations
    Part V, Project Management
    Part VI, Process Guidance
    Part VII, Reporting
    Part VIII, Setting Up and Maintaining the Team Environment
    Chapters
    • Introduction
    • Ch 01 - Introducing the Team Environment
    • Ch 02 - Team Foundation Server Architecture
    • Ch 03 - Structuring Projects and Solutions
    • Ch 04 - Structuring Projects and Solutions in Team Foundation Server
    • Ch 05 - Defining Your Branching and Merging Strategy
    • Ch 06 - Managing Source Control Dependencies in Visual Studio Team System
    • Ch 07 - Team Build Explained
    • Ch 08 - Setting Up Continuous Integration with Team Build
    • Ch 09 - Setting Up Scheduled Builds with Team Build
    • Ch 10 - Large Project Considerations
    • Ch 11 - Project Management Explained
    • Ch 12 - Work Items Explained
    • Ch 13 – MSF Agile Projects
    • Ch 14 - Process Templates Explained
    • Ch 15 - Reporting Explained
    • Ch 16 - Team Foundation Server Deployment
    • Ch 17 - Providing Internet Access to Team Foundation Server

    Source: Microsoft Patterns and Practices

     

    Ed K.

    Posted in TFS


    No Commands Available in Source Control Explorer



    Okay... so in hindsight this is so stupid but I only post so it won't cause you as much time as it did me!

    So I'm in VS 2005 after installing the Orcas Beta 1 and I needed to get something from the Team Foundation Server... BUT I COULDN'T!  All of the context menus on the files in Source Control Explorer kept telling me that there were "No Commands Available."  "I don't think so!  We're not playing this game" said me to the computer. :)

    No Commands Available

    Of course my first thought was that it might have had something to do with the Orcas install.  So I did a reinstall of both VS 2005 and Team Explorer but it didn't help any.  Aggravated now I begin my quest for the answer.

    I don't know how it happened but the fix is simple:  Make sure Team Foundation Server is selected as the source control plug-in.  You can go to Tools --> Options (make sure you have the "Show all settings" option is checked at the bottom of the dialog) and select this plug-in.

    GRRRRRR... Okay... back to productive work now.

     

    Ed B.

    Posted in TFS


    ClickOnce Apps and Team Build!



    As a lover of WinForms Apps I have been totally excited about the ClickOnce Deployment technology introduced in the .NET 2.0 Framework.

    Over at the Vertigo Software Team System Blog they have included the SIMPLE steps at accomplishing a ClickOnce "publish" during a Team Build.  Thank you guys!  Take a look... Here

     

    Ed B.

    Posted in TFS


    How To - Delete a Team Project in Team Foundation Server



    Just as a reminder... The simplest way to delete a team project in TFS is:

    1.  Open the Visual Studio 2005 Command Prompt

    2.  Use the following command:

    TfsDeleteProject /server:TFSSERVERNAME "PROJECTNAME"

    Where:

    TFSSERVERNAME - name of your TFS Server

    PROJECTNAME - name of your Team Project

    Ed B.

    Posted in TFS


    Upgrading Team Foundation Server to SP1



    So watch out for the mysterious 28002 Error Unknown.  It really took me a little while to figure this one out.  I was updgrading a client's TFS server and they are using TFS Workgroup Edition and I was getting this annoying error when installing the KB919156 prerequisite to SP1.

    Well, if you have 5 users (which is the limit for the workgroup edition) you are going to receive this error... Dave Glover writes a good explanation of this:  TFS SP1 Article

    You need to remove one of the users from the "Team Foundation Licenses Users" group and add them after the SP1 install is finished.

     

    Ed B.

    Posted in TFS


    Undo Changeset in Team Foundation Server Version Control - TFS Power Toys



    Update:  If you are wanting to learn how to undo or rollback a changeset using TFS 2010, visit my new blog post about this topic here:  http://www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx

     

    So...  I really needed to undo a changeset that was previously made by another user and started looking around for it.  I knew you could do it but just hadn't ever had a need for it.  I figure I start right-clicking different places in Source Control Explorer but that didn't lead me to anything :(

    Until I remembered there were cool new features in the Team Foundation Server Power Toys.  Once of which was an undo changeset command.  Take a look at them because I know you will find several features handy.  One of my favorites in there as well is Annotate.  (Thanks to Dave McKinstry for previewing that one to us!)  It's basically a solution to point-the-finger game for changes...  It will show a bar on the side next to every line that shows who the last person was that edited it, date/time, and the changeset number.  You can even double-click on the changeset number and the actual details of the changeset will pop-up.  Very handy!

     

    Other features in the power toys package: (taken from the documentation)

     

    Unshelve Command

    Use the unshelve command to unshelve and merge the changes in the workspace.

    Rollback Command

    Use the rollback command to roll back changes that have already been committed to Team Foundation Server.

    Online Command

    Use the online command to create pending edits on writable files that do not have pending edits.

    GetCS Command

    Use the GetCS (Get Changeset) command to get the changes in a particular changeset.

    UU Command

    Use the UU (Undo Unchanged) command to undo unchanged files, including adds, edits, and deletes.

    Annotate Command

    Use the annotate command to download all versions of the specified files and show information about when and who changed each line in the file.

    Review Command

    Use the review command to optimize the code review process to avoid checking in or shelving.

    History Command

    Use the history command to display the revision history for one or more files and folders. The /followbranches option returns the history of the file branch’s ancestors.

    Workitem Command

    Use the workitem command to create, update, or view work items.

    Query Command

    Use the query command to run a work item query and display the results. If you do not provide a specific query, all the active work items assigned to you are displayed.

    TreeDiff Command

    Use the treediff command to display a visual representation of the differences between files in two server folders, in a server folder and a local folder, or in two local folders.

     

    Ed B.



    IEventService: Filter Expressions, Event Types



    When playing around with this Interface you will notice that it is very easy to subscribe and unsubscribe to events via the TFS Object Model.
    The method signature for Subscribing to an event is:

     

    int SubscribeEvent (
            string userID,
            string eventType,
            string filterExpression,
            DeliveryPreference preferences
    )
     

    As you can note there is several string values that are needed to pass in. I found no documentation on what eventTypes
    or Filter expressions were available.  Hopefully the following information will help you as you develop with the
    Object Model.

    UserID: simple enough. 
    eventType: Out of the Box
    • AclChangedEvent
    • BranchMovedEvent
    • BuildCompletionEvent
    • BuildStatusChangeEvent
    • CheckinEvent
    • CommonStructureChangedEvent
    • DataChangedEvent
    • IdentityCreatedEvent
    • IdentityDeletedEvent
    • MembershipChangedEvent
    • NodeCreatedEvent
    • NodePropertiesChangedEvent
    • NodeRenamedEvent
    • NodesDeletedEvent
    • ProjectCreatedEvent
    • ProjectDeletedEvent
    • WorkItemChangedEvent

    To view event types on a certain TFS server you can consume http://ServerName:8080/Services/v1.0/Registration.asmx to enumerate through the list
    or, you can use the IRegistration interface and loop through each RegistrationEntry for each EventType.

    Filter Expression:

    • PortfolioProject
    • System.AreaPath
    • System.AssignedTo
    • System.AuthorizedAs
    • System.ChangedBy
    • System.ChangedDate
    • System.Id
    • System.IterationPath
    • System.OpenedBy
    • System.Reason
    • System.State
    • System.Title
    • System.WorkItemType

    Example expression:

    Condition String = "PortfolioProject" = 'Project Name' AND ("CoreFields/StringFi
    elds/Field[ReferenceName='System.AssignedTo']/OldValue" = 'Ed Kisinger' OR "Core
    Fields/StringFields/Field[ReferenceName='System.AssignedTo']/NewValue" = 'Ed Kis
    inger') AND "CoreFields/StringFields/Field[ReferenceName='System.AuthorizedAs']/
    NewValue" <> 'Ed Kisinger'

     
    Ed K.
    Posted in TFS | VSX


    TFS Authentication



    Say you built an application that connects to TFS and you want a dialog box to appear if a user is not authorized to connect to TFS. To do this is quite simple.  There are two methods you might have seen when you are playing with the TeamFoundationServer object, Authenticate() and EnsureAuthenticated(). The difference between the two is Authenticate will always call the server and EnsureAuthenticated will only be called if the user has not already authenticated to the server. You should use the EnsureAuthenticated method as a performance point since you only want the call to go to the server if the user has not authenticated. Notice we are using the TeamFoundationServer constructor instead of the Factory; you can use the factory if you wish. The deciding point that you need to decide is if you want to reference the same object on subsequence calls and without the need to re-authenticate. Remember the factory method will return a cache instance of the object.

     

    TeamFoundationServer tfs = new TeamFoundationServer(TFSServerName,new UICredentialsProvider());

    tfs.EnsureAuthenticated();

     

    If the user presses cancel on the dialog box then a UnauthorizedException will be thrown ,so handle it gracefully.

     

    Ed K.

    Posted in TFS | VSX


    Connect to TFS via Client Object Model



    Here is a simple example of how to connect to a Team Foundation Server and display some of its properties.

    To start we need to fire up VS 2005 and create a new console application.

    Now that we have a new project we need to add a reference to Microsoft.TeamFoundation.Client.

    Now we can access the TeamFoundationServer object. To create an instance of the object we will use the TeamFoundationServerFactory, we are using the factory so that we create a cache version of the object for subsequence calls.

     TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("FriendlyNameOfYourTFSServerOrURL");

    Now lets display some data:

    Console.WriteLine("The Authenticated User is: {0}", tfs.AuthenticatedUserDisplayName);
    Console.WriteLine("TeamFoundationServer Name: {0}", tfs.Name);
    Console.WriteLine("TeamFoundationServer Object GUID: {0}", tfs.InstanceId);
    Console.ReadLine();

    Here is the OutPut:

    Thats it! Very simple and fun.

     

    Ed K.

    Posted in TFS | VSX