TFS 2015 Update 1 RC is Here

In The new Release cadence have Microsoft Developer Division the VS2015 update 1 CTP & TFS 2015 update 1 RC released . – download if you like –

Backlog looks Fancy and have more features that can be used on Planning meetings

Working with tasks directly on the Kanban board

Some of the my favorites that where in VSO for a while now are :

  • Version control: use Git and Team Foundation Version Control in the same project, history and getting started improvements on the web portal, social #ID in pull requests, commit details summary is easier to read, and an improved experience for cloning Git repositories.
  • Backlogs: multi-select on all backlogs, drag any item to an iteration from anywhere, Add panel on the iteration backlog, line on the burndown indicates actual capacity, configure settings directly, add/remove users in the sprint plan, and multiple activities per team member in planning capacity for a sprint.
  • Kanban boards: query on columns, card coloring, tag coloring, inline renaming of columns and swimlanes, reorder cards when changing columns, configure settings directly, and hide empty fields on cards.
  • Work items and tasks: tasks as checklist, link to branches and pull requests in work items, task board card coloring, and limit values shown for Work Item type in queries.
  • Build: improved access control for resources, improved source control integration, usability fixes in Build Explorer, and parity with XAML builds for label sources and client-side workspace mappings.
  • Testing: export test outcome for manual tests and test result retention policy improvements.
  • Dashboards: 100% customizable with new widgets and multiple dashboards.
  • SonarQube: works for Java programs built with a Maven task, SonarQube Analysis build tasks work with on-premises and hosted agents.

Sonarqube build tasks


you can read more about here-


Live from Advanced Developer Conference 2015 – #Adc15

This Year like every year hosts ppedv AG  –  the Advanced  Developer Conference in Mannheim with a Interesting Content and Speaker list  where you can find TOP Quality Microsoft and Microsoft Community speakers like :

Immo Landwerth – .net core Team , sen. Programm Manager , Microsoft
Tarek Madkour – Principal Group Program Manager, Visual Studio IDE ,Microsoft
Laurent Bugnion  -MVVM Light Erfinder
Neno Loje – ALM MVP / Scrum Master
Thomas Schissler – Bereichsleiter Dev ALM MVP, Scrum Trainer
Christian Binder – ALM Architek Microsoft


And also interesting Content like, DevOPs, Agile Delivery, Net. Core & Visual Studio IDE, as well like Azure Microservices and EF7 , architecture and coding.

Sessions you can also view on – ppedv Youtube channel

Silverlight 6 – NO Go from Microsoft Team

For few months has the Microsoft team the answer to  Visual Studio User Voice case .

Shortly described :

While Microsoft continues to support Silverlight, and remains committed to doing so into 2021, there will be no new development work except security fixes and high-priority reliability fixes.

Silverlight out-of-browser apps will work in Windows 10. Silverlight controls and apps will continue to work in Internet Explorer until October 12, 2021, on down-level browsers and on the desktop.

Our support lifecycle policy for Silverlight remains unchanged:

As was stated in this blog post, the need for browser extensions including ActiveX controls and Browser Hosted Objects has been significantly reduced by the advances of HTML5-era capabilities which also produce interoperable code across browsers. On the web, plugin-based architectures, such as Silverlight, are moving towards modern open standards, such as HTML5, CSS and JavaScript which are supported on a wide variety of browsers and platforms.

For future development, we recommend modernizing Silverlight applications to HTML5 solutions which provide broader reach across platforms and browsers. In addition to the solutions listed in the blog post above, there is a free .NET Technology Guide eBook to help with migration planning located at:

Leaks Analysis with the Memory Usage Tool in Visual Studio 2015

Memory Usage tool in the Diagnostics Tool window

In Visual Studio 2015 CTP 6 was introduced the new debugger-integrated diagnostics tools, including the Memory Usage tool. For the first time, you could investigate memory growth on the managed heap without leaving everyone’s favorite tool, the debugger. Based on your feedback, we’ve been refining the experience for Visual Studio 2015 RC. This Post how to use the Memory Usage tool while debugging to find and fix a common source of leaks in .NET code: event handlers.

The Test app

For this walkthrough, I’ll be using the WPF version our sample app, PhotoFilter. You can find it in the PhotoFilter.WPF folder inside the solution (zip file).image

PhotoFilter loads all the images in your Pictures library, and displays them in a list. Double-click any image to open an ImagePage view in a new window. While the MainWindow list displays smaller thumbnails, the ImagePage view shows a scaled version of the full image. PhotoFilter offers two ways to view this larger image: either change the selection in MainWindow to update the image displayed in the open ImagePage window, or close the ImagePage window and open a new one by double-clicking again in the Main Window’s list.

It is a leak anyway?

There are only a handful of ways to leak memory in the managed, garbage-collected environment of the .NET CLR. One of the more common scenarios is when the garbage collector refuses to clean-up an object, even though we are certain it’s beyond its useful life. This is generally an indication that some object somewhere is holding a reference to the should-be-dead object. Sometimes these references are very subtle, or not apparent in our own code. Using the Memory Usage tool, we can not only discover the leaks, but also track down the references that are keeping the zombies alive.

Find the leak

I start debugging to run the application, exercising the code paths while watching the Memory graph. The graph displays process memory using a metric called Private Bytes. You can find more on Private Bytes in one of my earlier blog posts on the Memory Usage tool. An app’s managed heap is part of the process memory, so increases in the heap will also cause increases in the Private Bytes.


Repeatedly opening and closing new ImagePage windows shows a disturbing trend on the graph. Each time I open the ImagePage window, the memory climbs. The first jump, at point A, I expect to happen. Each time my application opens the ImagePage, the bitmap being displayed is fully decoded into memory. Point B is where I get concerned. At that point, I closed the ImagePage window, and opened and closed three new ones for the next pictures in the list. After closing the first ImagePage, I expect the next garbage collection to clean up the ImagePage and all the memory it used. Instead, what I see is a stepped pattern of memory always showing a net increase. Each new ImagePage adds to the overall process memory. Closing them doesn’t result in the memory being cleaned up. These are signs of a leak.

Finding the source

I only exercised the code paths for these two views. So, I can be pretty sure that this leak behavior is somehow related to the ImagePage objects. One option, something we’re all pretty familiar with, is digging around the code seeing if anything looks “suspicious” or “smells”. With VS2015, instead of hunting and smelling, we can use the Memory Usage tool.

I’ll do that by taking snapshots before and after the interesting parts, and then investigating the diff to better understand what’s keeping the zombie objects alive.

The Memory Usage tab

In the Diagnostic Tools window, I’ll switch to the Memory Usage tab. Once there, a simple toolbar shows me all the basic interactions.


Note: “Take Snapshot” temporarily pauses the process if it’s running, and walks the managed heap. This finds all the objects that are still live and not eligible for clean up by the garbage collector. Once a snapshot completes, an overview of its key stats appears in the table below the toolbar.

Getting back to my investigation, I start debugging. Then I wait for the app to start and for the memory graph to stabilize. For many applications, you’ll want to interact with it first to ensure you’ve eliminated any initialization costs before considering the memory usage stabilized. This app is very simple, so I won’t worry about additional initialization costs for my current investigation.


Once the graph has settled, I take the first snapshot, which will serve as the baseline for comparison. Because I first noticed the issue by opening and closing the ImagePage view a few times, for my investigation I’ll follow the same steps. This time, however, I’ll open and close it a total of ten times. This should help amplify any “spikes” in the data.

Before taking the second snapshot, I first want to get my app into a break state. Unlike snapshots taken while the app is running, snapshots taken while broken have a super-power: you can inspect the values of the individual instances of objects live on the heap. This super-power is only available while you’re still in the same break state that the snapshot was taken in. Once you continue, or take another step, instance inspection won’t be available on that snapshot again.

But, how do I know where to set my breakpoint? No need! Once I’ve completed my repro steps, I can just press the Break All button on the Debug toolbar.


Now that we’re in a break state, I’ll go ahead and take the second snapshot. Once it’s finished, I’ll keep the process paused. Notice the gray arrow to the left of the second snapshot in the table below? That indicates that the object inspection super-power is available for that snapshot as long as I don’t continue, step, or stop debugging.


Snapshot overview table

Let’s take a look at what each snapshot shows us in the overview. From left-to-right:

  • The snapshot’s sequential number. Numbers are reset each debugging session.
  • The process running time when the snapshot was taken.
  • The count of the live objects on the managed heap. In parenthesis is the diff of the count from the preceding snapshot.
  • The size of the live objects on the managed heap, also followed by a diff in parenthesis.

Each blue metric in the table is a link that launches the Heap View for the snapshot. Heap View will be the focus of most of your memory investigations. I’ll start with the live object count diff. By clicking the object count diff link (gold arrow in above image), Heap View opens in diff mode, sorted by the “Count Diff” column. By default, the diff mode compares the chosen snapshot to the one immediately preceding it. If you have more than two snapshots, you can use the “Compare to” dropdown to customize which snapshot to compare against.


There’s quite a bit of data in the Heap View. Depending on your knowledge of the .NET framework, the types at the top of the table may look completely unfamiliar. Don’t let that discourage you! A very simple strategy let’s you start with the types you know best: the types you wrote in just your code. I’ll show you how.

In the top-right corner of the Heap View, there’s a search box. I can quickly narrow down the types in the table by searching for my app’s module name ‘PhotoFilter’.


And there it is, right at the top of the Types table: PhotoFilter.WPF.ImagePage. A total of 10 instances are still alive, despite the fact that the windows hosting the views are long closed. Now, I’ve confirmed the leak, and know one of the players. Unfortunately, I still don’t know why these ImagePage objects are zombies.

Instances, instances

When hovering over the entry for PhotoFilter.WPF.ImagePage in the table, you’ll see an icon appear. This is the Instances view icon. I click it, and navigate to a new view that shows data on the individual instances of ImagePage.


Because this snapshot is super-power enabled, I can inspect each instance, with full DataTip support for complex values.


Inspecting each ImagePage, I confirm that these are the views of the images I clicked on. These should have been cleaned up by the garbage collector, but some object somewhere is holding a reference to each instance. By selecting an instance in the top pane, the Paths to Root will open in the bottom pane. This view shows a bottom-up hierarchy of what objects are holding references that prevent garbage collection. Here, in the Instances view, the tree will auto-expand to show the primary roots. Following these paths usually reveals the culprit. For ImagePage, it’s also worth noting that each instance has the exact same type hierarchy in its Paths to Root. So, for my investigation, a single code fix might be all I need.


Right below PhotoFilter.WPF.ImagePage is a suspicious entry: SelectionChangedEventHandler. Event handler subscription is a well-known cause of leaking objects in .NET. Continuing up the tree, I can see that the event handler belongs to a ListView. My app only has one ListView, on the MainWindow. I know the major players are the ImagePage, a SelectionChangedEventhandler, and the ListView that owns it. At this point, it’s a good idea to take a look at the code. I’ll begin with my own code, the ImagePage code-behind.

Right away, in the ImagePage constructor, I see all the major players come together.


A reference to a ListView is passed to the ImagePage constructor (line 51), and the new instance of ImagePage subscribes to the SelectionChanged event of that ListView (line 56). Looking at the subscribed event handler, _parentList_SelectionChanged, this code implements the feature that updates an open ImagePage view when the selection changes in the ListView on the MainWindow.

An object that subscribes to an event of a longer-lived object needs to explicitly unsubscribe from that event at some point, or else the shorter-lived object will never really die. For PhotoFilter, I decided to override the Window.OnClosed handler, and unsubscribe from the SelectionChangedEventHandler there (line 73).


Now, when I close an ImagePage window, it unsubscribes itself from the ListView.SelectionChanged event. If that event handler was the only reference rooting the object, they should now be cleaned up by the garbage collector.


It’s always a good to verify a fix, so I’ll rerun the experiment to make sure memory is getting cleaned up by the garbage collector as expected. Looking at the graph, after restarting the app and opening and closing ImagePage 10 times, this now appears to be exactly what’s happening. Before the fix, process memory was around 350MB. After the fix, it’s now less than 100MB. Problem solved!

Code Quality improvements with MSbuild & Team Build – SonarQube integration

Technical debt is the set of problems in a development effort that make forward progress on customer value inefficient.  Technical debt saps productivity by making code hard to understand, fragile, difficult to validate, and creates unplanned work that blocks progress. Technical debt is insidious.  It starts small and grows over time through rushed changes, lack of context and lack of discipline. Organizations often find that more than 50% of their capacity is sapped by technical debt.


SonarQube is an open source platform that is the de facto solution for understanding and managing technical debt.

Customers have been telling us and SonarSource, the company behind SonarQube, that the SonarQube analysis of .Net apps and integration with Microsoft build technologies needs to be considerably improved.

Over the past few months we have been collaborating with our friends from SonarSource and are pleased to make available a set of integration components that allow you to configure a Team Foundation Server (TFS) Build to connect to a SonarQube server and send the following data, which is gathered during a build under the governance of quality profiles and gates defined on the SonarQube server.

  • results of .Net and JavaScript code analysis
  • code clone analysis
  • code coverage data from tests
  • metrics for .Net and JavaScript

We have initially targeted TFS 2013 and above, so customers can try out these bits immediately with code and build definitions that they already have. We have tried using the above bits with builds in Visual Studio Online (VSO), using an on-premises build agent, but we have uncovered a bug around the discovery of code coverage data which we are working on resolving. When this is fixed we’ll send out an update on this blog. We are also working on integration with the next generation of build in VSO and TFS.

In addition, SonarSource have produced a set of .Net rules, written using the new Roslyn-based code analysis framework, and published them in two forms: a nuget package and a VSIX. With this set of rules, the analysis that is done as part of build can also be done live inside Visual Studio 2015, exploiting the new Visual Studio 2015 code analysis experience

The source code for the above has been made available at, specifically:

We are also grateful to our ever-supportive ALM Rangers who have, in parallel, written a SonarQube Installation Guide, which explains how to set up a production ready SonarQube installation to be used in conjunction with Team Foundation Server 2013 to analyse .Net apps. This includes reference to the new integration components mentioned above.


This is only the start of our collaboration. We have lots of exciting ideas on our backlog, so watch this space.

As always, we’d appreciate your feedback on how you find the experience and ideas about how it could be improved to help you and your teams deliver higher quality and easier to maintain software more efficiently.

If you have any technical issues then please make your way over to, tagging your questions with sonarqube, and optionally tfs, c#, .net etc. For the current list of sonarqube questions see

Smart Unit Testing With Visual Studio 2015

Smart Testing (former pex & moles ) has a new name now – IntelliTest and explores your .NET code to generate test data and a suite of unit tests. For every statement in the code, a test input is generated that will execute that statement. A case analysis is performed for every conditional branch in the code. For example, if statements, assertions, and all operations that can throw exceptions are analyzed. This analysis is used to generate test data for a parameterized unit test for each of your methods, creating unit tests with maximum code coverage. Then you bring your domain knowledge to improve these unit tests.

When you run IntelliTest, you can easily see which tests are failing and add any necessary code to fix them. You can select which of the generated tests to save into a test project to provide a regression suite. As you change your code, rerun IntelliTest to keep the generated tests in sync with your code changes.

Get started with IntelliTest

You must use Visual Studio Enterprise. Sad smile

Explore: Use IntelliTest to explore your code paths and generate test data
  1. Open your solution in Visual Studio. Then open the class file that has methods you want to test.
  2. Right-click in a method in your code and choose Run IntelliTest to generate unit tests for all the code paths in your method.

    Right-click in your method to generate unit tests

    A parameterized unit test is generated for this method. The test data is created to exercise the code paths in the method. IntelliTest runs your code many times with different inputs. Each run is represented in the table showing the input test data and the resulting output or exception.

    Exploration Results window is displayed with tests

    To generate unit tests for all the public methods in a class, simply right-click in the class rather than a specific method. Then choose Run IntelliTest. Use the drop-down list in the Exploration Results window to display the unit tests and the input data for each method in the class.

    Select the test results to view from the list

    For tests that pass, check that the reported results in the result column match your expectations for your code. For tests that fail, fix your code and add exception handling if necessary. Then rerun IntelliTest to see if your fixes generated more test data from different code paths.

Persist: Save test data and unit tests as a regression suite
  • Select the data rows that you want to save with the parameterized unit test into a test project.

    Select tests; right-click and choose Save

    You can view the test project and the parameterized unit test that has been created with a PexMethod attribute. (The individual unit tests, corresponding to each of the rows, are saved in the .g.cs file in the test project.) The unit tests are created using the Visual Studio test framework, so you can run them and view the results from Test Explorer just as you would for any unit tests that you created manually.

    Open class file in test method to view unit test

    Any necessary references are also added to the test project.

    If the method code changes, rerun IntelliTest to keep the unit tests in sync with the changes.

Assist: Use IntelliTest to find issues in your code
  1. If you have more complex code, IntelliTest can help you discover any issues for unit testing. For example, if you have a method that has an interface as a parameter and there is more than one class that implements that interface. After you run IntelliTest, warnings are displayed for this issue. View the warnings to decide what you want to do.

    Right-click method and choose Smart Unit Tests


  2. After you investigate the code and understand what you want to test, you can fix a warning to choose which classes to use to test the interface.

    Right-click the warning and choose Fix

    This choice is added into the PexAssemblyInfo.cs file.

    [assembly: PexUseType(typeof(Camera))]


  3. Now you can rerun IntelliTest to generate a parameterized unit test and test data just using the class that you fixed.

    Rerun Smart Unit Tests to generate the test data

Q & A

Q: Can you use IntelliTest for unmanaged code?

A: No, IntelliTest only works with managed code, because it analyzes the code by instrumenting the MSIL instructions.

Q: When does a generated test pass or fail?

A: It passes like any other unit test if no exceptions occur. It fails if any assertion fails, or if the code under test throws an unhandled exception.

If you have a test that can pass if certain exceptions are thrown, you can set one of the following attributes based on your requirements at the test method, test class or assembly level:

  • PexAllowedExceptionAttribute
  • PexAllowedExceptionFromTypeAttribute
  • PexAllowedExceptionFromTypeUnderTestAttribute
  • PexAllowedExceptionFromAssemblyAttribute

Q: Can I add assumptions to the parameterized unit test?

A: Yes, use assumptions to specify which test data is not required for the unit test for a specific method. Use the PexAssume class to add assumptions. For example, you can add an assumption that the lengths variable is not null like this.


If you add an assumption and rerun IntelliTest, the test data that is no longer relevant will be removed.

Q: Can I add assertions to the parameterized unit test?

A: Yes, IntelliTest will check that what you are asserting in your statement is in fact correct when it runs the unit tests. Use the PexAssert class to add assertions. For example, you can add an assertion that two variables are equal.

PexAssert.AreEqual(a, b);

If you add an assertion and rerun IntelliTest, it will check that your assertion is valid and the test fails if it is not.

Q: What testing frameworks does IntelliTest support?

A: Currently only mstest is supported.

Q: Can I learn more about how the tests are generated?

A: Yes, read this blog post about the model and process.

Microsoft Development News –Visual Studio 2015 RC and VS Code multiplatform

Today @Build conference is announced the release of Visual Studio 2015 RC. This version includes many new features and updates, such as tools for Universal Windows app development, cross-platform mobile development for iOS, Android, and Windows, including Xamarin, Apache Cordova, and Unity, portable C++ libraries, native activity C++ templates for Android, and more.

And now, you can watch our great Build 2015 session recordings as they become available, or catch-up on your favorite features with 40+ of our brand new short Connect(“on-demand”); feature videos.

To install the most recent version of Visual Studio 2015, use the following link.

Download: Visual Studio 2015 RC

To learn more about the most recent version of TFS, see the Team Foundation Server RC release notes.

Windows Holgografic is another Announcement regarding the vision of HoloLense and integration with all from IOC to Home Media .


Important: Most applications you build with Visual Studio 2015 RC are considered “go-live” and can be redistributed and used in production settings as outlined in the license agreement. However, those that are built for Windows 10 cannot be distributed or uploaded to the Windows Store. Instead, you will have to rebuild applications built for Windows 10 by using the final version of Visual Studio 2015 before submitting to the Windows Store. Also, please note that ASP.NET 5 is still in preview and is not recommended for production use at this time. You are free to use ASP.NET 4.6 in production.

Last November, Microsoft said that it would bring some of the core features of its .NET platform — which has traditionally been Windows-only — to Linux and Mac. Today, at its Build developer conference, the company announced its first full preview of the .NET Core runtime for Linux and Mac OS X.

In addition, Microsoft is making the release candidate of the full .NET framework for Windows available to developers today.

The highlight here, though, is obviously the release of .NET Core for platforms other than Windows. As Microsoft VP of its developer division S. “Soma” Somasegar told me earlier this week, the company now aims to meet developers where they are — instead of necessarily making them use Windows — and .NET Core is clearly part of this move.

Microsoft says it is taking .NET cross-platform in order to build and leverage a bigger ecosystem for it. As the company also noted shortly after the original announcement, it decided that, to take .NET cross-platform, it had to do so as an open source project. To shepherd it going forward, Microsoft also launched the .NET Foundation last year.

While it’s still somewhat of a shock for some to see Microsoft active in the open-source world, it’s worth remembering that that the company has made quite a few contributions to open source projects lately.

Even before the .NET framework announcement, the company had already open-sourced theRoslyn .NET Compiler platform. Earlier this year, Microsoft shuttered its MS OpenTechsubsidiary, which was mostly responsible for its open source projects, in order to bring these projects into the overall Microsoft fold.

TFS free Book – Managing Agile Open-Source Software Projects with Microsoft Visual Studio Online

We’re happy to announce the release of our newest free ebook, Managing Agile Open-Source Software Projects with Microsoft Visual Studio Online (ISBN 9781509300648), by Brian Blackman, Gordon Beeming, Michael Fourie, and Willy-Peter Schaub.

With this ebook, the ALM Rangers share their best practices in managing solution requirements and shipping solutions in an agile environment, an environment where transparency, simplicity, and trust prevail. The ebook is for Agile development teams and their Scrum Masters who want to explore and learn from the authors’ “dogfooding” experiences and their continuous adaptation of software requirements management. Product Owners and other stakeholders will also find value in this ebook by learning how they can support their Agile development teams and by gaining an understanding of the constraints of open-source community projects.

Download all formats (PDF, Mobi and ePub) at the Microsoft Virtual Academy.

Below you’ll find the ebook’s Foreword and a few helpful sections from its Introduction:


The ALM Rangers are a special group for several reasons. Not only are they innovative and focused on the real world, providing value-added solutions for the Visual Studio developer community, but they live and work in all four corners of the globe. The ALM Rangers are a volunteer organization. Talk about dedication! When we were offered the opportunity to write a foreword for this book, we knew we’d be part of something special.

The ALM Rangers don’t pontificate that they’ve found the one true way. This is practical advice and examples for producing great software by those who’ve done it and–most importantly–are still innovating and coding. Readers will find that they have virtual coworkers who share their experiences with honesty and humor, revealing learnings and what has worked for them. This doesn’t mean that this book lacks prescriptive guidance. The Rangers have embraced Visual Studio Online as their one and only home. They are evolving with the product, embracing open source software in GitHub to learn how successful OSS projects are run there and what the community values most. They’ve created an ecosystem that identifies the “low hanging fruit” and tracks it from idea to solution, and they never fail to recognize the Rangers and the ALM VPs who dedicate their personal time and passion to their OSS projects.

The extensive guidance shared here is not an end-to-end plan for everyone, although it could be used as a definitive guide for some teams. One of the many assets of this book is its organization into practical walkthroughs of typical ALM Ranger projects from idea to solution, presented as an easy to consume reference. Other bonuses are an appendix to quick-start your own project and reference checklists to keep you on track.

Among the authors, this book was called the “v1 dawn edition.” True to their core value of “learn from and share all experiences,” the ALM Rangers are always mindful that producing great software means continuous refinements from new learnings and feedback and that there will be more versions of this book. But first we invite you to immerse yourself in Managing Agile Open-Source Software Projects with Microsoft Visual Studio Online.

In the true spirit of Agile, ongoing innovation,

Sam Guckenheimer
Clemri Steyn

This book assumes that you have at least a minimal understanding of Agile, Lean, and Scrum development concepts and are familiar with Team Foundation Server (TFS) and Visual Studio Online (VSO). To go beyond this book and expand your knowledge of Agile practices or Visual Studio technologies, MSDN and other Microsoft Press books offer both complete introductions and comprehensive information.

This book might not be for you if …
This book might not be for you if you are looking for an in-depth discussion focused on the process, development, or architecture of software requirements, tooling, or practices.

Similarly, if you are looking for source code or guidance on ALM, DevOps, or proven and official frameworks such as Agile, Scrum and Kanban, this book will not be fully relevant, and we recommend that you consider these publications instead:

New Features in Visual Studio 2015

Few weeks ago The product Team has presented What’s new in VS2015 CTP6 , so here are big part of the changes

Other changes:

Related releases:

Other changes:


UI debugging tools for XAML

Are  added two new tools—the Live Visual Tree and the Live Property Explorer—that you can use to inspect the visual tree of your running WPF application, as well as the properties on any element in the tree. In short, these tools will allow you to select any element in your running app and show the final, computed and rendered properties. Here’s more:

  • Live Visual Tree. Now, you can view the full visual tree of a running application during a debug session. The Live Visual Tree is available when you press F5 in Visual Studio or attach to a running application. You can use the Live Visual Tree to select elements in a running application for inspection in the Live Property Explorer. Descendant count is displayed, and if the source information is available, you can instantly find the file and location of the element’s definition.
  • Live Property Explorer. Use this new tool to inspect the properties set on any element in a running application, grouped by the scope in which they are set. You can modify these properties during a debugging session and immediately see their changes in the running application.

Picking apart how properties override each other and figuring out winning behavior can prove difficult at design time. Now, by using our new UI debugging tools for XAML, you can perform these inspections at runtime, when you can take everything into account.

(Support for Windows Store apps will be released in a future update.)

UI Debugging Tools for XAML, full screen

Single sign-in

You, like many other developers today, take advantage of multiple cloud services when developing your applications. For example, you’ve probably added a cloud backend to your applications to store data, stored your source code in the cloud, or published an application to a store.

In the past, each of these services required a separate sign-in process, and each service managed the signed-in user state separately.

With this release, we are reducing the authentication prompts required to access many integrated cloud services in Visual Studio. Now, when you authenticate to the first cloud service in Visual Studio, we will automatically sign you in, or reduce the authentication prompts for other integrated cloud services.


With CodeLens, you can find out more about your code while staying focused on your work in the editor. In CTP 6, you can now see the history of your C++, SQL, or JavaScript files versioned in Git repositories by using CodeLens file-level indicators. When working with source control in Git and work items in TFS, you can also can get information about the work items associated with C++, SQL, or JavaScript files by using CodeLens file-level work items indicators.

CodeLens file level team indicators
Learn more about Code Lens.

Code Maps

When you want to understand specific dependencies in your code, visualize them by creating Code Maps. You can then navigate these relationships by using the map, which appears next to your code. This helps you track your place in the code while you work.

  • Performance improvements. With this release, now you can get reactive Code Maps more quickly: drag and drop operations produce an immediate result, and the links between nodes are created much more quickly, without affecting subsequent user-initiated operations such as expanding a node or requesting more nodes. When you create Code Maps without building the solution, all the corner cases—such as when assemblies are not built—are now processed.
  • Code Map filtering. Now you can quickly unclutter your Code Maps by filtering for nodes and groups. You can show or hide code elements on a map based on their category, as well as group code elements by solution folders, assemblies, namespaces, project folders, and types.
  • Dependency links. Dependency links no longer represent the inheritance from System.Object, System.ValueType, System.Enum, and System.Delegate, which makes it easier to see external dependencies in your code map.
  • Improved top-down diagrams. For a medium to large Visual Studio solutions, you can now use a simplified Architecture menu to get a more useful Code Map for your solution. The assemblies of your solution are grouped alongside the solution folders, so you can see them in context and leverage the effort you’ve put in structuring the solution. you’ll immediately see project and assembly references, and then the link types appear. Also, the assemblies external to your solution are grouped in a more compact way.
  • Improved link filtering. Link filtering now applies to cross group links, which makes working with the filter window less intrusive than it was in previous releases.

Learn more about Code Maps.

Diagnostics Tools

In CTP 6, the Diagnostic Tools debugger window has the following improvements:

  • Supports 64-bit Windows Store apps
  • The timeline zooms as necessary so the most recent break event is always visible
Exception Settings

You can configure debugger exception settings by using the Exception Settings tool window. The new window is non-modal and includes improved performance, search, and filter capabilities.

Exceptions Settings - Break when Thrown window

JavaScript Editor
  • Task List support. You can use the Task List feature to review task comments, such as // TODO, in your JavaScript code. Learn more about the Task List in Visual Studio.
  • Object literal IntelliSense. The JavaScript editor now provides you with IntelliSense suggestions when passing an object literal to functions documented using JSDoc.
Unit Tests

In Visual Studio 2015 preview, we introduced Smart Unit Tests, which explores your .NET code to generate test data and a suite of unit tests. In CTP 6,are added the following functionality:

  • Parameterized Unit Tests. Smart Unit Tests enables support for an API that you can use to guide test data generation, specify correctness properties of the code under test, and direct the exploration of the code under test. This API is available in the Microsoft.Pex.Framework namespace and can be used in the test methods (parameterized unit tests, factory methods) generated by Smart Unit Tests. Consequently, the “Smart Unit Tests” context menu command is now available from the generated test methods as well.
  • Test stubs creation. “Create Unit Tests” is now available on the context menu as a command that provides the ability to create and configure a test project, a test class, and a test stub.

Learn more about Smart Unit Tests.

Visual Studio Emulator for Android

In CTP 6, the Visual Studio Emulator for Android now supports the following:

  • OpenGL ES
  • Android Version 5.0 (Lollipop, API Level 21)
  • Camera interaction using image files or your webcam
  • Multi-touch input
Visual Studio Tools for Apache Cordova

Over the last few releases, we listened to your feedback and broadened the number of devices you can debug to, as follows:

  • Android 4.4, Android 4.3 and earlier with jsHybugger
  • iOS 6, 7, and 8
  • Windows Store 8.1

With CTP6, we are broadening our debugging support further. You can now debug your Apache Cordova apps that target Windows Phone 8.1

You can set breakpoints, inspect variables, use the console, and perform other debugging tasks on your Windows Phone 8.1 emulator or attached device.
Debugging with Visual Studio Tools for Apache Cordova
Learn more about the Visual Studio Tools for Apache Cordova.

Visual Studio C++ for Cross-Platform Mobile Development

You can use Visual Studio to share, reuse, build, deploy, and debug your cross-platform mobile code, all within a single solution. And in CTP 6, also added or updated the following:

  • Support for Android API Level 21 (Lollipop).
  • Improvements to Android Logcat. (Logcat is a diagnostic tool and essential for a good edit->build->debug experience.)
    Use Logcat to do the following:
    • Search for specific log messages by using search bar.
    • Use Toggle Autoscroll to view upcoming log messages easily.
    • Clear previous log output messages.
    • Choose between various log levels.
  • A new template that is based on make file support for Android, which allows using an external build system (including NDK-BUILD).
  • Precompiled headers in all templates (including Dynamic Shared Library, Static Library, and Cross-platform mobile templates).

In this CTP 6 release, are added the following new features and performance improvements:

  • Run and debug settings are now stored in debugSetting.json, which can be customized to configure how the project is started.
  • Add reference to a system assembly.
  • Improved IntelliSense while editing project.json.
  • New Web API template.
  • Improvements to call out ASP.NET 4.6/ASP.NET 5 on the New ASP.NET Project (One ASP.NET) dialog.
  • Ability to use a Windows PowerShell script which can be customized for the web publish experience for ASP.NET 5.
  • You can use Lambda expressions in the debugger watch windows for ASP.NET 5 applications when running on the Desktop CLR.

Learn more about ASP.NET 5 updates in Visual Studio 2015 CTP 6.

Visual C++

Are added the following new features to Visual C++ in CTP 6:

  • Control Flow Guard (CFG). With this new security feature, simply add a new option to your project, and the Visual C++ compiler will now inject extra security checks into your binaries to help detect attempts to hijack your code. When the check fires, it will stop execution of your code before a hijacker can do damage to your data or PC. Learn more about Control Flow Guard.
    Note: We have updated the command options. Instead of using the /d2guard4 switch as you did in CTP 5, you should now use /guard:cf in CTP 6.
  • Typename keyword. Users can now write typename instead of class in a template template parameter. Learn more about  typename.
Related releases

For additional features of Visual Studio 2015, see our Preview release notes.


XAML Language Service

The XAML language service is rebuild on top of .NET Compiler Platform (“Roslyn”) so that we can provide you with a fast, reliable, and modern XAML editing experience that includes IntelliSense.

This makes the XAML authoring experience equal to other first-class languages in Visual Studio. We’ll also be able to deliver powerful feature sets around cross-language refactoring to you at a much faster cadence.

Timeline Tool

Our new Timeline tool in CTP 5 provides you with a scenario-centric view of the resources that your applications consume, which you can use to inspect, diagnose, and improve the performance of your WPF and Windows Store 8.1 applications.

The Timeline tool, which is in the Performance and Diagnostics hub, shows you how much time your application spends in preparing UI frames and in servicing networks and disk requests, and it does so in the context of scenarios such as Application Load and Page Load.

The new Timeline tool
Learn more about the new Timeline Tool in Visual Studio 2015.  (The new Timeline tool replaces the XAML UI Responsiveness tool.)

Diagnostics Tools

Are added a new Diagnostic Tools window in CTP 5 that appears when you start debugging (press F5). The Diagnostics Tools window contains the following features:

  • Debugger Events (with IntelliTrace)
    Debugger Events (with IntelliTrace) gives you access to all Break, Output, and IntelliTrace events collected during your debugging session. The data is presented both as a timeline and as a tabular view. The two views are synchronized and can interact with each other.
    Learn more about IntelliTrace in Visual Studio 2015.
  • Memory Usage
    The Memory Usage tool allows you to monitor the memory usage of your app while you are debugging. You can also take and compare detailed snapshots of native and managed memory to analyze the cause of memory growth and memory leaks.
  • CPU Usage
    The CPU Usage tool allows you to monitor the CPU usage of your application while you are debugging.
    (This tool replaces the CPU time PerfTip that was available in the Preview release of Visual Studio 2015.)

The Diagnostics Tools window supports the following project types and debugging configurations:

  • Managed WPF, WinForms, and Console projects
  • Native Win32, Console, and MFC projects
  • ASP.NET 4 using IIS express only
    (ASP.NET 5 and IIS are not supported at this time)
  • Managed or Native 32-bit Windows Store projects running locally
    (Windows Store projects that are 64-bit, using JavaScript, running on a remote device, or running on a phone are not supported at this time)

Learn more about the Diagnostics Tools window in Visual Studio 2015.


In this CTP 5 release, we’ve added some new features to the ASP.NET 5 experience, as well as improved its performance.

  • Now, you can add a reference to a standard C# project.
    (In previous releases, the Add Reference dialog only supported referencing other ASP.NET 5 projects.)
  • We’ve added IntelliSense and validation to our HTML, CSS, and JavaScript editors.
  • We’ve improved our support of client-side task runners (such as Grunt and Gulp) that run alongside the Task Runner Explorer.
  • For ASP.NET 5 projects, you can select the browser you want while running or debugging a project.
    Select the browser you want
  • You can define custom commands in project.json file, which you can launch by using the ASP.NET 5 command-line tools. And now, you can also run and debug your custom commands directly in Visual Studio 2015.
  • Are updated our ASP.NET 5 templates to include a project.json file that uses the latest packages, and  fixed some bugs in the template content.

Learn more about ASP.NET updates in Visual Studio 2015.

Visual C++

In CTP 5,  added the following new features to Visual C++ to bring the compiler closer to conformance with the standards set in Visual Studio 2012 and Visual Studio 2013.

  • Digit separators: Now, you can intersperse numerical literals with single quotes to make them more readable. For example,int x = 1’000’000;
  • Universal character names in literals: You can now write basic characters, like ‘A’ and the line feed character, as code points in literals. For example, const char *s = “\u0041\u000A”;

Free Visual Studio 2013 Community Edition and difference with Express Editions

First of all, both are free!  Visual Studio Community Edition is newly released today.

Are two main differences between Visual Studio 2013 Community Edition and the Express Editions

1) Visual Studio Express Editions are targeting specific platforms:  Express for Web allows you to develop Web apps;  Express for Windows allows you to develop Windows apps; Express for Windows Desktop allows you to develop desktop apps.  But with Visual Studio Community Edition, you can develop projects targeting cross-platforms.

2) Visual Studio Express Editions do not allow users to use extensions (aka. plugins).  There are over 5000 great plugins for Visual Studio in Visual Studio Gallery.  Plugins such as Developer Assistant can boost developers’ productivity.  Unfortunately, they are not available to Visual Studio Express users.   With Visual Studio Community Edition, you can access and use All !

Visual Studio Community Edition may retire Visual Studio Express Editions in future, but this is not decided yet.