December 6, 2013

Microsoft will host CodeValue on (9th rescheduled) 15th Jan. 2014 on an open house event - "From ALM to DevOps - Upgrading the organizational ALM solution to a full DevOps environment".
I'll be delivering a session on one of the exciting new features of TFS 2013: Release Management formerly known as InCycle InRelease.
For details and registration:

December 2, 2013

A while ago, I've written a little extension to Visual Studio, which targets an old problem since the very first days of .NET and MSBuild: the CopyLocal property defaults to true for all non-BCL references. For many build processes, this is a redundant, space-eating time-consuming step as the build script defines its own output folders. Now this is extension is available in the Visual Studio gallery: For VS2012\2013 .NET 4.5: http://visualstudiogallery.msdn.microsoft.com/2ecfc7d3-5d94-49dc-b315-45e3097b89f8 For VS2010 .NET 4.0: http://visualstudiogallery.msdn.microsoft.com/9cb6d4ec-aff3-438d-afe0-2d05bf949523 It supports all .NET project types (C#, F#, Managed C++ and VB.NET, etc.)

July 14, 2013

Building VC++ projects (.vcxproj) without Visual Studio isn't as easy as building C# projects. Today a new build machine setup was failed on CL error: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(147): "CL.exe" exited with code -1073741515. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(297,5): Could not find WindowsSDKDir variable from the registry. TargetFrameworkVersion or PlatformToolset may be set to an invalid version number.
Solution
1. Install Windows SDK 7.1 on the build agent.
2. Open C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.props and add to the default PropertyGroup:
<PlatformToolset>Windows7.1SDK</PlatformToolset
It should look similar to:
<PropertyGroup>
<TargetExt />
...

June 2, 2013

A custom data collector for automated tests was deployed successfully at a customer site. However when we've tried to replace it in MTM, old versions persisted in the database. The following procedure was used to unregister the stale data collectors. Get all data collectors from tbl_DataCollector: SELECT * FROM ..
Execute the stored procedure prc_UnregisterDataCollector with parameters:
@partitionId: the partitionId as appears in...