Sunny Nagi

Solutions Architect who likes .NET Framework and Cloud Computing, Amateur Photographer loves his Gadgets and Cars

Visual Studio 2012 Update 3 RC

Following up with Visual Studio 2012 Update 2 release Microsoft today announced Update 3 will be available as RC. This is obviously a minor update that addresses a number of defects.

Here's a complete list of all of the issues that are resolved with this release:

 Team Foundation Server

  • Build settings can be preserved when you upgrade a TFS 2012 instance.
  • Improvements are made in the New Build Definition UI for the Continuous Integration (CI) build in Git-based team projects.


Visual Studio IDE

Win Forms

  • When you use ActiveX controls and Windows Forms applications in Visual Basic, Visual Studio Designer may be unable to load after the applications are rebuilt. This is a timing issue. The designer should reload only after the build is finished.


  • When you call the EndDialog function from inside the OnInitDialog function in an MFC application, theOnInitDialog function is invoked again.
  • A "TypeLoadException" exception occurs at run-time that states that a managed interface class is not implemented. However, the class is actually implemented.
  • An internal compiler error occurs intermittently when you compile by using the "/analyze" option.
  • You cannot run a debugging session that loads more than 2,048 files.
  • A fix that is described in the following KB article is included:
    2802711 FIX: Incorrect machine code is generated for a "switch" statement in the Visual C++ 2010 x64 compiler
  • A fix for ATL & MFC XP targeting is included. This fix addresses the following scenario:
    • You create a C++ Win32 Console Application project in Visual Studio 2012 Update 2.
    • You select both ATL and MFC in the application wizard.
    • You change the Platform Toolset option to v110_xp, and you change Use of MFC and ATL to Static in the project Property Pages.
    • You run the application on a computer that is running Windows XP or Windows Server 2003.
    • You receive the following error message:
      Application Name - Entry Point Not Found

      The procedure entry point InitializeCriticalSectionEx could not be located in the dynamic link library KERNEL32.dll

Visual Studio Test

Web test

    • Microsoft Visual Studio 2010 crashes when you create a Web test on a computer that has both Visual Studio 2010 Service Pack 1 (SP1) and Visual Studio 2012 Update 2 installed.

Coded UI test

      • You cannot run coded UI together with the cross browser testing feature by using Selenium components.

Load test

      • When you analyze a load test run, parts of the results are missing from the graph in the default view.

Unit test


  • An internal compiler error occurs when you build F# code that contains two interfaces if each of the two interfaces defines a member of the same name.
  • When you use NuGet package manager to install a new version of a NuGet package, the "HintPath" property of the affected references are missing from your Visual F# project file.

Team Foundation Server

Administration and Operations
The Application-Tier Only wizard does not preserve the Kerberos authentication type setting when you upgrade to a TFS 2012 instance that includes multiple application tiers.
The Reporting tab displays an incorrect reporting services instance name in the TFS 2012 upgrade wizard.
Incorrect Microsoft SharePoint URLs are displayed in the TFS 2012 upgrade wizard.
The TFS 2012 upgrade wizard displays an incorrect reporting services instance name and incorrect reporting URL information when you reconfigure an application-tier server if the reporting URL information was changed.
The TFS 2012 upgrade operation fails under the full recovery model when instances use the database mirroring feature.
Assume that you configure a TFS 2012 instance with an instance of SQL Server that enables the AlwaysOn feature. You schedule a differential backup or a transaction log backup, or both. In this situation, all backup jobs perform a full backup.
The event log does not include stack traces when the administrator console crashes.
Assume that you create a team project by using a custom process template that includes two states that are mapped to the same state type. You create a user story for each state, and then you view the Kanban board in Product Backlog. In this situation, an error occurs. After you install the update, a validation message is displayed, and it indicates that the configuration is not valid.
When you install TFS 2012 by using a non-English language package in the web installer, you notice un-localized (English) strings in the administrator console and in the Team Project Collections dialog box.
You cannot create a new work item from an iteration backlog when there are multiple work item types in the task category.
An error message incorrectly displays the MSSQL Server account instead of the Job Agent account when you configure scheduled backups.
The review page displays the default port number instead of the configured port number when you configure Team Build without a saved settings file.
You cannot configure TFS proxy on a computer that belongs to a separate domain from a TFS 2012 server.
780985: "Invalid Uri : The hostname could not be parsed" error message in upgrade wizard while installing TFS 2012 updates
Fix now displays an error message that states TFS does not currently support the "/layout" switch when you run TFS web installer together with the switch enabled.
TFS 2012 backup plan wizard does not report an error when you configure a backup plan by using the Local System account.
When you upgrade an earlier version of TFS collection, you receive the following error message:

[Error] Cannot insert duplicate key row in object 'dbo.Constants' with unique index 'IX_Constants__String_RemovedDate'
When you upgrade an earlier version of TFS collection, you receive the following error message:

Cannot insert duplicate key in object 'dbo.@updates'
When you upgrade an earlier version of TFS collection, you receive the following error message:
No mapping between account names and security IDs was done
When you try to upgrade an earlier version of TFS collection, the upgrade is not successful, and you receive the following error message:

Error: 2601 Cannot insert duplicate key row in object 'dbo.tbl_Identity' with unique index 'PK_tbl_Identity'.

Work Item Tracking
When you create a new area path, and then you move an existing area path under the newly-created one, the "Work Item Tracking Integration Synchronization" job may fail with a "System.NullReferenceException" exception.
A user who does not have read permission on an area path can receive email notifications of changes to work items under the area path.
A SQL Server time-out issue may occur during warehouse rebuilds if the TFS databases are very large.
When you try to access work items in a TFS server together with metadata filtering turned on, you receive one of the following messages on the client side:

"TF26006: Team Foundation could not find 0."

"TF26193: The team project ProjectName does not exist. Check the team project name and try again."

Services Framework
Assume that you configure an alert to receive email notification when a work item is changed. You use the "Changes" operator to receive notification only when a field of the work item is changed. In this situation, you receive the notification unexpectedly when a work item is changed without changing field.

Build Automation
Assume that you use a user account to queue a build. The user account does not have a unique display name. In this situation, the user cannot be automatically assigned a work item if the build fails.
A deadlock may occur in SQL Server when you destroy builds that have lots of build information.
Assume that a build is being queued on a build computer. However, the computer is disconnected for some reason (such as because of a network failure). In this situation, the build is not resumed correctly after the computer is reconnected.

Web Access
Slow performance when you open a work item that has many customized fields in TFS Web Access.

Version Control
778627: There is a limit of 256 changesets reported in Continuous Integration build reports
Performance regression when you query labels in Team Foundation Version Control.
Performance regression when you create the "Add" pending changes in Team Foundation Version Control.
Fix adds upload retries for Version Control files that are being checked in or shelved to reduce the number of deceptive errors.
When you merge an XSL file in the Visual Studio merge tool, you receive the following error message: 

"The process cannot access the file because it is being used by another process"

Web Tools

  • Visual Studio 2012 may crash when you develop a web project.

Windows and Connected Application Tools

  • Fix skips packaging of unnecessary XML documentation for Windows Store apps.
  • Visual Studio 2012 may create corrupted .appxsym and .appxupload files during an incremental packaging.

Portable Library

  • You cannot use the "HttpClient" class in a Portable Library project after you install Visual Studio 2012 Update 2.
  • After you install Visual Studio Update 2, the generated code for the .RESX resource files cannot be built when a project targets the Microsoft .NET Framework 4.5, Windows Phone 8, and the .NET for Windows Store apps (or any combination of the three).



alt text

I have been working on recovery of a .NET development project gone wrong.

I joined development team at a very late stage of project to get system over the UAT phase. The system itself is complex, some of the core code has inheritance depth of up to 20 levels (yep someone went over board). It’s quite strange as on surface it is a simple web application with few screens, some business logic and few data tables in the background.

Question needs to be asked why this complexity, well often we come across developers who don't understand YGANI (You Are Not Gonna Need It).

The principle of YGANI is fairly simple to understand which states that you should delay the decisions that you need to make today to tomorrow.

This application is a classic example of over engineering beyond believes, that again goes against KISS principle. The level of complexities that I have come across in this application along with the choice of poor components makes it a dog to run.

The client was promised a sports car with all of the bells and whistles but what they got is old school looking rusted lemon which is dog to run and is nightmare to maintain. Since the original development team had moved on the team managing the application were fairly junior who have been transitioned into support role to look after the pending defects.

With the level of complexity involved in simplistic of the features was enough to drive fear among the support team. After going through number of people to make this work, management soon enough realized that they need someone more senior. When I joined the project first thing I questioned was why ?? Why are we doing it this way? And soon enough I also realized that this maintenance time bomb ticking to explode. We suggested radical changes not only to the core of the application but also to the ALM itself to streamline and deliver quality to the customer.

Well I have been on this project for almost 3 months now and we have concluded that simple salvage job is not as simple as you would expect.

The shinning bright star of this whole journey has been the development framework that I have been developing for a little while now. Built on entity framework code first and using simplistic implementation of some core design patterns we have got junior developers picking it up and working on their components quite easily.

In conclusion all I want to highlight is that yes we all are techies, smart people capable of making sound choices but often due to our love for a specific technology and pattern we forget to look at the bigger picture that is to solve business problems with simple yet elegant technical solutions.

Whenever I am writing code I always have this thought in the back of my mind - someday someone else will get to work on what I am writing now and I don’t want them to feel what frustrates me today. Writing good maintainable code is not a privilege but it is a moral responsibility.