Ici vous trouverez les dernières informations sur la famille de produits Visual Studio.

S'abonner

Share Your Open Source Extension on the Visual Studio Gallery!

Montag, 06. Juli 2015

In a recent post on Extending Visual Studio 2015 we shared how easy it is to create Visual Studio extensions. We also shared links to our improved docs and to our presence on GitHub. Continuing in this vein of improvements to make it super easy to write and share extensions, I’d like to share the improved integration with GitHub in the Visual Studio Gallery.

Today there are thousands of very useful open source extensions in the VS gallery with their code hosted on GitHub. These open source extensions provide a chance for other developers to learn and collaborate, and for the extension authors to get feedback on their extensions. However, the only way for extension developers to share their own repo is to put a link in the long description of their extension. Needless to say, this made it really hard to discover the sources for an extension – and so we fixed it! Now, as an extension author, you can easily provide the GitHub URL of your extension. We will pull information such as the number of open issues and pull requests, and display it on the gallery page for your extension (see below picture as an example). As an extension consumer, this change will make it easy for you to find the source repo information, provide feedback, and collaborate on open source extensions.

clip_image001[6]

Web Essentials 2013 extension on GitHub

Here’s how you can display your source repo information on VS Gallery.

  1. Sign in to the Visual Studio Gallery

  2. Open your extension edit page (the same process you use when uploading an extension).

  3. On the Edit page, add your source repo URL under “Provide Url to source code repository” check box and click save.

Right now, about 150 of our extension authors have already taken advantage of this feature and added links to their GitHub repos to their Gallery pages. Go Extenders!

Coming Soon in the Visual Studio Gallery

This is the first step towards improving the experience for open source extension in the Visual Studio Gallery. Here is a peek into other improvements we have in mind:

  • Pull extension description from ReadMe.md. Want to save your time on writing extension descriptions? With this change we will pull ReadMe content from your GitHub repo directly and populate the description on Visual Studio Gallery.

  • More extension statistical data. We have heard requests from you for easier ways to see statistical data for your extensions. The idea here is to not only show more statistical information on your extension page, but also provide a set of APIs for you to easily consume this data.

  • Show badges on your repo. On your repo a badge will show how many people downloaded your extension. We also think it will be fun if we can provide extension authors a way to generate badges similar to this:

          

  • Get rewards from your extension. Extending the reward element from badges, we also plan to provide a points and rewards system for extension authors.

  • Extension upload API. Want to have some APIs to upload extensions? Or even integrate with CI services to trigger an auto upload? This is also part of our improvement plan so keep an eye out for upcoming updates to the Gallery.

We have shared above some of the top items on our mind. Is there anything else you’d like to see improved in Visual Studio Gallery? We'd love to hear your feedback! Please share your suggestions with us either through the UserVoice site, drop us a line on binliu@microsoft.com, visit us on Stack Overflow with tag “visual-studio-extensions”, or simply leave a comment below.

image Robin Liu, Program Manager, Visual Studio China

Robin is a Program Manager from Visual Studio China team where he and the team spend time on improving the experience for Visual Studio extension gallery. He would like to hear your ideas to improve the Visual Studio gallery experience.

Top News from May 2015

Dienstag, 30. Juni 2015

Hello everyone! Every month I share some top stories from the previous month. Here’s an overview of some top posts in May.

Top Trending Content for May 2015

.NET at Build 2015. On the .NET blog, Richard Lander shared 2 interesting posts. .NET Announcements at Build 2015 is an excellent one-stop shop for everything you need to know about the latest updates in .NET core, .NET Execution Environment (DNX), .NET languages, ASP.NET, Entity framework, and all of the improvements in Visual Studio for .NET. Targeting the .NET framework 4.6 RC has details about the latest version of the .NET Framework and the new APIs it exposes. This post builds up from how to target a .NET framework, to how .NET framework 4.6 can be targeted in VS 2013 as well as VS 2012. Targeting a .NET framework

Visual Studio Code Update 1. Visual Studio Code is a new, free, cross-platform code editor that was announced during Build 2015. Check out the VS Code product page to learn about all you can achieve using VS code. VS Code is expanding rapidly in its support for various languages and tools to make it easier for you to use. The first update for Visual Studio Code was released with over 300 improvements and bug fixes. Have you been thinking of using Visual Studio Code with Angular, TypeScript. Or have you wondered how you can use it to build Mobile Hybrid apps? Look no further! Chris Dias talks about using Angular with VS code, and also has a post to get you started with building Mobile Hybrid Apps with VS Code and IonicJonathan Turner shares a quick walk-through for using TypeScript in Visual Studio Code,  and Sean McBreen shares information about VS Code and Docker. Keep an eye on the Visual Studio Code blog for more feature posts and upcoming updates.

Blend for Visual Studio 2015 RC. Visual Studio 2015 RC Blend got a major update with many new features and improvements. Kino Aguilar highlights some top features including: the new user interface tailored for XAML developers; Roslyn powered IntelliSense; and UI tools for XAML debugging. He also talks about how easy it is to navigate between designing in Blend vs. editing in Visual Studio using the new commands. Download Visual Studio 2015 RC to try the new Blend.New Blend in Visual Studio 2015

Bringing Clang to Windows. On the VC++ blog, Raman Sharma talks about how Clang is fast becoming the preferred C++ compiler for non-Windows platforms. To extend the various capabilities and benefits of using Clang, to the C++ developers building Windows apps, the team is working on an experimental implementation of Clang on Windows. Jim Radigan demonstrates this in his build talk on Compiling Objective-C. The Clang and LLVM community has provided packaged toolset builds for Windows that integrate very well with Visual Studio. This post talks about how we have built on top of this toolset to deliver additional capabilities like cross-platform development.

Introducing Visual Studio’s Network Tools. With the release of Visual Studio 2015 RC, a new network tool (part of the existing Performance and Diagnostics hub) was released. This tool helps you diagnose network related issues when building Windows apps across the Windows continuum from Windows Phone, to HoloLens, to Xbox. In his post introducing the VS network tool, Ruben Rios shows you how and where you’d use this tool, and details the different sections of this tool as well as the views of the network traffic it shows. He also shares how the default views have been built to maximize your productivity when using this tool. Network Tool Performance and Diagnostics Hub

7 cool features in Visual Studio Online. ALM rangers like Willy-P Schaub not only share their thoughts on the Visual Studio ALM Rangers blog, but also author e-books like Managing Agile Open-Source Software Projects with Visual Studio Online. Recently they published a post on the 7 cool features noticed in Visual Studio in the most recent update. This is a short and sweet post to get you up to speed on the top new features like the ability to fast track to your Kanban board or get straight to your code after creating a project. Visual indicators tell you which items on the board are managed by your or another team. The board itself can be easily customized, you can split columns into Doing and Done and easily specify Definition of Done for each column.

C# 7 Features. In this article, Mike James shares Mads Torgensen’s working list of features for C# 7; think of this as more of a wish list than a set of promises. Mike also provides some details on some of the features to give you a better idea of its capabilities, along with some good examples. Some items on the feature list are tuples, pattern matching, non-nullable references, using statements, and async/await. To give you a small view into what these features really mean, a tuple is a group of typed values that are gathered together for some temporary purpose, like a set of method parameters could be grouped into a tuple. Pattern matching allows for powerful conditionals based on the type of an expression. The features have been categorized into various buckets to facilitate discussion. Checkout the working list and Mike's blog post to see examples of these features in use. 

Building Mobile Apps with Ionic and Monaca. With Visual Studio Tools for Apache Cordova it is very easy to build an app targeting iOS, Android, and Windows. Kirupa Chinnathambi shares how the team took this a step further by collaborating with Ionic and Monaca to provide project templates within VS. These templates allow you to use Ionic or Onsen UI frameworks to build mobile apps right within Visual Studio.

JavaScript moves forward in Microsoft Edge. Brian Terlson from the Chakra team talks about the upcoming ECMAScript 6 (also known as ES2015) highlighting some key capabilities and the community excitement around it. He also talks about support for ES2015 features in Microsoft Edge and shows a compat table that compares various browsers’ compatibility against ES2015 features. Chakra-ES2015

Code Analyzers: Using Roslyn to analyze your code. Channel 9 has a lot of useful content under shows, series, blogs, events, etc. The particular video of interest is on the DevRadio blog where Jerry Nixon talks to Srivatsn Narayanan to discuss how you can use Roslyn to analyze and troubleshoot errors. The video starts off with Srivatsn giving an overview to explain Code Analyzers and how they are useful. It then deep dives into use cases, where and how you can use code analyzers, which languages it applies to, etc.

 

To see what else I’ve shared so far, check out top news from February 2015, top news from March 2015, top news from April 2015.

Thanks you for reading!

 

image Radhika Tadinada, Program Manager, Visual Studio 
@RadhikaTadinada

Radhika has been at Microsoft for almost 4 years. She first started off as a Program Manager on the Visual Studio Platform team where she helped build IDE features. She is currently with the Customer team and manages the Visual Studio blog. 

JavaScript Editor Improvements in Visual Studio 2015

Mittwoch, 10. Juni 2015

JavaScript is an important technology for development on many different platforms, including web, mobile app, and server programming. In Visual Studio 2013 we already support IntelliSense, Go to Definition, colorization, and formatting of JavaScript source, along with several other features. We’ve carried these forward into Visual Studio 2015 and we’ve improved the experience for JavaScript developers by focusing on three key areas:

  1. Improving the development experience when using popular JavaScript libraries
  2. Adding support for new JavaScript ECMAScript 2015 (also known as ES2015 and formerly ES6) language and web browser APIs
  3. Increasing your productivity in complex JavaScript code bases

Each of these areas was chosen based on feedback we heard on UserVoice, through social media, via the send-a-smile/frown feature in Visual Studio, and from many direct discussions we’ve had with developers like you.

In this post, I’ll highlight the new features of the JavaScript editor for each of these areas. You can take advantage of these features in all JavaScript projects supported in Visual Studio.s

Support for popular JavaScript Libraries

AngularJS 1.x and RequireJS support

By default, Visual Studio 2015 supports the very popular AngularJS and RequireJS libraries. Previously on this blog we’ve discussed the setup required when using Visual Studio 2013 with both of these libraries (using AngularJS in VS, using RequireJS in VS). In Visual Studio 2015, the support is baked in, with no additional setup steps required.

Whenever you reference the angular.js (or angular.min.js) library in your code, editor automatically provides IntelliSense, Go to Definition, and navigation bar support:

IntellISense for AngularJS

IntelliSense support for Angular 1.3, showing suggestions for the routeProvider service

Similarly, RequireJS IntelliSense and navigation support are automatically enabled when you bring in the require.js library. To customize RequireJS support, see Customizing IntelliSense in RequireJS.

IntelliSense suggestions for a module referenced using RequireJS

IntelliSense suggestions for a module referenced using RequireJS

JSDoc documentation comments

Documentation comments are a great tool for providing detailed information about APIs in your application. They can also help you guide Visual Studio to provide better IntelliSense suggestions as you write code. In Visual Studio 2015, the editor now understands JSDoc-style documentation comments and can use them to improve your coding experience. JSDoc has become the unofficial standard for JavaScript comments on the web, and they’re used in libraries like Angular and Ember. Here’s a quick example using these comments and showing IntelliSense tooltip support to document a getPhotos() function.

JSDoc comments displayed in IntelliSense tool tips

JSDoc comments displayed in IntelliSense tool tips

When you reference parameter types in comments (such as Array, above) you can use standard built-in JavaScript types and objects, such as String, Number, or Array. You can also define a custom object, which is useful for documenting parameters with custom properties, such as configuration settings. In the example below, you can see suggestions for an options object that may be passed to the savePhoto() function.

Documenting configuration objects using JSDoc

Documenting configuration objects using JSDoc

In addition to JSDoc comments, XML-style documentation comments continue to be supported as they were in Visual Studio 2013. A full list of the JSDoc tags supported by the editor may be found on MSDN.

New language and browser features

As language standards and web APIs evolve, the JavaScript editor is also updated to keep pace. In this release we introduce further support for new language features in the ES2015 standard (formerly known as ES6) and a set of new DOM APIs. These updates match the same features found in the recently announced Microsoft Edge web browser.

ECMAScript 2015 (formerly ECMAScript 6) support

Like the Microsoft Edge browser, which now supports a large set of ES2015 features, the Visual Studio JavaScript editor also supports a majority of ES2015Specifically, Visual Studio 2015 provides support for:

This allows you to now write code such as the following:

Using new language features in ES2015

Using new language features in ES2015

Notice the class keyword used for the LayoutManager class, a template string for the message variable, and finally an arrow function used as the second argument to the addEventListener API to define a function callback. To learn more, check out the set of learning materials being collected over in Eric Douglas’ ES6 Learning repository on GitHub or review the specification for the ES2015 version of JavaScript.

You may have noticed that some ES2015 features aren't supported yet, such as modules. We’ve heard from you that support for the latest ES2015 language features is important and we’re looking to support the full ES2015 specification as soon as possible.

IntelliSense for new web browser APIs

Visual Studio 2015 also provides IntelliSense support for new web browser APIs available in Microsoft Edge. Here are a few API highlights:

You can see a full list of APIs supported by visiting the http://status.modern.ie website and filtering to APIs available in the preview release.

Working in complex JavaScript code

Finally, we’ve heard from developers that when working in complex JavaScript source it can be difficult to find your way through the code. There are two editor features that have been added to help you discover important comments and APIs in your JavaScript source so you can more easily navigate through your code.

Task list

You can use the Visual Studio task list to keep track of // TODO, // HACK, // UNDONE, or custom comment tokens in your source. This can help to surface technical debt and possible issues in your code.

Viewing TODO and HACK comments in the Task List

Viewing TODO and HACK comments in JavaScript source, using the Task List

Navigation bar

The navigation bar is enabled for the JavaScript editor with support for the common design patterns and libraries used by JavaScript developers. This helps you jump to identifiers you’re frequently using in your code and reduces the time you have to spend visually scanning your source files.

In the following example you can see how the editor understands ECMAScript 5 source:

Using the navigation bar to browse JavaScript source, written using ES5

Using the navigation bar to browse JavaScript source, written using ES5

And in another example, you can see that the navigation bar supports the new ES2015 class keyword (which greatly simplifies the equivalent prototype syntax in the previous example):

Using the navigation bar to browse JavaScript source, written using ES2015

Using the navigation bar to browse JavaScript source, written using ES2015

Looking ahead

In addition to the features highlighted here, there are a variety of bug fixes, performance improvements, and other updates to help give you a first class JavaScript editor experience. Going forward, we’ll continue to expand the editor to help build large scale JavaScript solutions.

We also know how important it is to you to have an editor that supports the latest changes in the JavaScript language, such as ES2015 modules and generators, and we’re working to make sure Visual Studio has great support for them.

To try these features, download Visual Studio 2015 today. If you’re an open source developer, student, hobbyist, or work in a small professional team, check out the free Visual Studio 2015 Community edition. Let us know how well the JavaScript editor works for you by sending us a smile or frown. You can also add your votes for future JavaScript tooling on our UserVoice site.

Jordan Matthiesen Jordan Matthiesen – Program Manager, Visual Studio JavaScript tools team
@JMatthiesen

Jordan has been at Microsoft for 3 years, working on JavaScript tooling for web and mobile application developers. Prior to this, he worked for 14 years developing web applications and products using ASP.NET/C#, HTML, CSS, and lots and lots of JavaScript.

Developing for iOS using the Tools for Apache Cordova

Freitag, 05. Juni 2015

Most developers are already familiar with Xamarin and C++ for iOS development, but Visual Studio 2015 also delivers a quick and easy way for developers to build iOS, Android, and Windows apps using JavaScript. The Tools for Apache Cordova are ideal for projects where speed-to-market, maintainability, and code re-use are paramount. Apache Cordova’s web standards based approach combined with its flexible plugin model allows you to tap into a large and growing client-side web development community. Open source resources are plentiful at all layers of the stack – not just for accessing native APIs via Cordova plugins, but also through web frameworks like AngularJS, Ionic, and Onsen UI. Better still, Cordova’s build system is Node.js based which makes it easy to take advantage of a growing number of Node.js based command line tools like the popular Gulp task runner. The end result is you can mix the best of the web with native capabilities to bring your apps to the next level in a non-proprietary and platform independent way.

Over the last year, we have been working on a number of different areas to improve the overall developer experience when using Apache Cordova for building iOS apps. In this post we’ll summarize the great features already available and highlight some areas you’ll see even more improvements in the coming months.

Ionic and Monaca Templates

The key to every great app is a great UI. As we highlighted a few weeks ago, Monaca and Ionic are two increasingly popular UI frameworks designed to quickly bring web based mobile apps to the next level. Apps built using each framework look and feel great on iOS. Best of all, Monica’s Onsen UI provides powerful theming features and Ionic has SASS based theming capabilities that you can use to give your app either an iOS look and feel or a branded platform-agnostic one as you see fit.

There are now Visual Studio templates for both Ionic and Monaca’s Onsen UI that can help you get up and running quickly.

CordovaPost1

Visual Studio iOS Build and Debug

The Tools for Apache Cordova use a remote agent running on OSX to build, simulate, run, and debug an iOS version of your app right from Visual Studio. You can install this agent on your own machine, use a “pay as you go” or managed plan in MacInCloud, or dedicated cloud capacity in MacInCloud or MacStadium. These cloud providers have the advantage of being total Mac replacements that give you access to not only iOS builds, but also Xcode and all the tools necessary to get you going with iOS development including using the iOS Simulator, accessing and generating signing certificates, and publishing your app using Application Loader.

After installing and configuring the remote agent on your OSX machine, select either the “Remote Device” or “Simulator -*” debug targets in Visual Studio to automatically build, deploy, launch, and attach the JavaScript Debugger, DOM Explorer, and JavaScript Console to your running app. The agent automatically acquires the version of Cordova needed to build your app so you don’t need to take any additional steps if you switch Cordova versions. You can then inspect and edit the live DOM, diagnose layout, trace the matching CSS rules for each element, set breakpoints in code, evaluate JavaScript expressions, and view console.* messages, to name a few.

CordovaPost2

iOS and Visual Studio Online

The Tools for Apache Cordova are designed to work with a number of different team build / CI systems since the projects they create are standard Apache Cordova Command Line interface (CLI) projects. Team Foundation Services (TFS) 2015 provides a new cross-platform agent that enables TFS to build directly on OSX. The end result is that TFS and Visual Studio Online (VSO) have support for building iOS apps using Cordova or even native Xcode projects for the first time.

The VSO cross-platform agent is Node.js based and uses a simple HTTPS connection to your TFS 2015 server or Visual Studio Online to fetch work. As a result, your OSX machine only needs to have HTTP access to your TFS/VSO instance but not the other way around. This makes setup and configuration quite simple and means that dedicated capacity on your own internal network, MacInCloud, or MacStadium can be directly integrated with Visual Studio Online with no additional network configuration!

Better still, you can try out these new cross-platform and iOS build capabilities today for free in Visual Studio Online by simply clicking on the BUILD.PREVIEW menu option and starting up an agent on your own Mac hardware or dedicated capacity in MacInCloud, MacStadium, or another hosting provider.

clip_image005

clip_image006

Sign up for VSO today and see our TFS 2015 and VSO tutorial for details on getting your Visual Studio 2015 Cordova project up and running in with these new capabilities. You can expect an even more streamlined approach in the coming months.

Microsoft App and Dev Services

In addition to these IDE and VSO features, iOS is also a first-class citizen in a number of other Microsoft app and developer services.

Microsoft Intune

We’ve already covered the capabilities that Visual Studio Online can bring to the table for iOS app development but it’s also worth noting that you can also deploy the apps you’ve built internally using Microsoft Intune.

Intune provides a complete Mobile Device Management solution designed to help you secure your iOS, Android, Windows, and Windows Phone devices in an enterprise environment. It has full support for managing iOS devices and provides both an internal app store for employee self-service and the ability to manage and restrict apps on iOS devices. The end result is that you can upload apps you’ve built using Tools for Apache Cordova and deploy them to any number of managed devices.

Intune also has an increasing number of Mobile Application Management features designed to provide you with the ability for even more granular control of security at the individual app level. An app wrapping tool for iOS is already available and you can expect even more exciting features here in the coming months.

Microsoft App Services

Microsoft provides a number of powerful services that developers can use to accelerate building their apps. These services are not just limited to Microsoft devices. Apache Cordova projects targeting iOS can take advantage of these services through a set of Cordova plugins contributed by Microsoft.

Here’s a small sample of Microsoft service-related plugins available for you to try out today:

  • Azure Mobile Services – The Azure team has released an Azure Mobile Services plugin with full iOS support. You can quickly configure your app to use it from Visual Studio simply by right-clicking on your project and selecting “Add > Connected Service…”
  • Active Directory – The Active Directory team recently announced an ADAL and AD Graph plugin for Cordova 5.0.0 that makes it simple to use Active Directory via a native iOS library.
  • Office 365 – There is now both an Outlook Services and File / Discovery Services plugin for Cordova that enables your app to target these services from iOS and other platforms using a single JavaScript code base.
  • Application Insights – The Application Insights team has recently released an Application Insights plugin designed to allow you to collect and analyze usage data from your Cordova app.

While some of these plugins are still early in their development lifecycle, you can expect continued investment from Microsoft in open source and the Apache Cordova community. Our engineering team is committed to ensuring Cordova is fast, reliable, and easily connected to essential app and dev services.

Command Line Interoperability and Visual Studio Code

Last, but not least, we’ve taken steps to make Visual Studio 2015 “command line interoperable.” Developers working in teams using both Mac and Windows can open and edit the same Cordova project using their code editor of choice. By simply installing the correct version of the Apache Cordova Command Line Interface (CLI), you can grab your project’s source code out of a Git repository and continue to build your app on OSX. We’ve created a Cordova plugin to help deal with a few Visual Studio specific features and you can expect much more in the coming months.

What this means is you can now have team members on Windows and OSX developing against the same code base thanks to Visual Studio and Visual Studio Code. Both Visual Studio and Visual Studio Code now reflect the file system directly, so editing your Cordova project in Code is as simple as selecting “File > Open Folder” and selecting your Cordova project folder. You can even use the powerful Gulp task runner and its associated plugins both from within Visual Studio using the Task Runner Explorer and from the command line when using VS Code.

For iOS, being able to edit your project on OSX means you can troubleshoot particularly sticky problems by opening up a native iOS project generated by the “cordova prepare ios” Cordova CLI command from in the “platforms/ios” folder in Xcode – either on own Mac or using a cloud based service. You can then make your edits, build using the Cordova CLI or other command line tools, and then commit your changes back into source control. Developers using Visual Studio or Windows can simply pull down these changes locally when you are done without taking any additional steps.

We’ve got more plans coming to make this workflow even better, so stay tuned!

Summary

It has been a busy year since we first shared a Technology Preview of the Tools for Apache Cordova at TechEd in June 2014. With Visual Studio 2015, we are finally ready to declare official support thanks to the early adopters and the fantastic feedback we’ve received from the Visual Studio and Cordova communities. Thank you! We hope these iOS related features resonate with you and look forward to making things even better in the coming months.

If you haven’t tried out Tools for Apache Cordova yet, simply download Visual Studio 2015 Community or Enterprise RC and be sure to select the “Tools for Apache Cordova” option when installing.

We’re always interested in your feedback, so please contact us via UserVoice, Send-a-smile, Twitter, StackOverflow, or email. If you’d like to contribute to our documentation, you can see this blog post on contributing.

For more info on iOS support from Microsoft, you can also visit the C++, Visual Studio Code, and Visual Studio Online team blogs, as well as the Any Dev, Any App website.

clip_image008

 

Chuck Lantz, Program Manager, Visual Studio Client Tools Team

@chuxel

Chuck spent over 15 years as developer, advocate, and architect in a variety of mid and large scale enterprise IT shops. He brought his passion for app development to Microsoft in 2012 and is currently focused on cross-platform mobile app development.

Introducing the Project System Extensibility Preview

Dienstag, 02. Juni 2015

[Update 6/4: We've updated this post to clarify the roadmap of this project to become part of the Visual Studio SDK, once it moves past the Preview phase.]

We are very pleased and excited to announce the availability of the Project System Extensibility Preview. With it, you can define a new project type and begin writing extensions to customize the user experience or add features in just a few minutes while owning very little code. Gone are the days where you have to create or maintain an entire project system (usually a fork based on MPFproj) often containing well over 100K lines of code. Instead, you'll be building on the Common Project System (CPS) that ships with Visual Studio and is already used by C++, JavaScript, and ASP.NET 5. Here is a short video to help get you started.

 We built CPS to address the scalability, performance, responsiveness and rehost-ability aspects that modern customers demand while decreasing your time to market.

Differences between CPS and MPFproj

If you have ever written a project system for Visual Studio, you very likely are familiar with MPFproj and may have even used it as the basis for your project system. MPFproj follows a source code distribution model where you must fork the entire source tree, customize it, and build it into binaries that you ship.

The problem with this approach is that if the MPFproj base is updated to fix bugs or add features, you manually merge those changes into your code base and re-ship your project system. MPFproj itself is a huge codebase with more than its fair share of bugs and less features in common with C#/VB. Using MPFproj as the basis for your project system is a daunting task and can take many engineer-months to get to a shippable state.

In contrast, with the Project System Preview, you write extensions for the project system that is built into Visual Studio. Specifically, you don’t develop an entire project system any more. Rather, you simply compile your project system extensions against our reference assemblies and then ship your extension.

When Visual Studio loads one of your projects it also loads all extensions that apply to that project so that whatever features you’ve added, or behavior you’ve tweaked, are seen by your customer. Later, when we fix bugs in the Visual Studio project system, those fixes will automatically apply to your project types as well simply because your customers took the VS Update or upgraded to a newer version of Visual Studio.

Another drawback with MPFproj and most other project systems is that the project system is a black box at runtime. Thus, anyone who wants to reuse and change it must resort to COM aggregation. This is where you pretend to be the project system entirely, yet you’ve only implemented a small part of it, and you must forward all other functionality requests to the “inner” project system. This approach is complex and easily leads to subtle bugs when the outer “flavor” changes behavior such that the inner project system’s internal state becomes corrupted.

With CPS we no longer use (or support) COM aggregation to flavor an existing project type. Instead, you just write a MEF extension and tag it with an attribute that describes which projects it should apply to. Read more about this in our open source documentation.

That’s great, but I already have a project system. What do I get if I migrate?

The Visual Studio project system is designed from the ground up to be performant, scalable, and responsive – much more so than MPFproj. To close the gap between your project system and other project systems that Microsoft ships, it can be less costly to migrate first and then simply turn those features on, rather than re-implement and maintain those features in your own project system. As new features are added to the Visual Studio project system, you’ll be able to activate those features when necessary in your own project types.

On the “less is more” side, your code size after migration is expected to be much smaller than before migration. For example, the set of extensions for the Windows 8 JavaScript project type is about 15K lines of code, which is 62% less than MPFproj which starts at 40K. And certainly your project extensions can be much less than 15K if you’re not customizing as much.

If and when you migrate, you shouldn’t rush into converting your existing MPFproj code base to CPS. Rather, start with a new project type or flavor using the Preview, then add extensions to reproduce the unique behaviors that your MPFproj-based project system used to provide, migrating just those portions of code over as necessary. You may find in some cases that behaviors cannot be brought directly over without a rewrite, which often leads to code that is much smaller and more maintainable than what you had before.

Is CPS right for me? Why is it in Preview?

With all this simplification, you’d think that our answer would be “Yes!” (And for most devs we think that will be the answer.) However, it might not be the right choice for you! Perhaps you do not want to require Visual Studio 2013 or later. Or perhaps your project type requires customizing behaviors of the project system that are not yet exposed as extensibility points. Either way, we’d love to hear from you about your intentions and any blockers you might have.

Right now, in Visual Studio 2015, CPS is in Preview. We will keep it stable going forward in VS 2015 itself (VS Updates won’t break you as a project system extension author), but in the next major release of Visual Studio after 2015, breaking changes will be made one final time. We are taking the VS 2015 release (starting with RC) as an opportunity to get feedback from the community which may include API changes, along with some changes we already have in mind, so that we can aim for the next version to be the last one with breaking changes.

While the new Visual Studio project system has been proven for Visual C++’s limited use (C++ still implements half of its own project system), and for JavaScript and ASP.NET vNext, it does not necessarily hold for all scenarios that we ship across other project systems. In fact, we know there are bugs in some of these other scenarios that we’re still working through. As you evaluate when to switch to CPS, consider both the risk of hitting bugs and the opportunity you have to provide those bugs and other feedback to us early on so we can fix it either in a VS 2015 Update or the next major version. We hope many of you will decide to pilot a migration that will lead to feedback and possibly a success story from you.

For more guidance on determining whether now is the right time to migrate to CPS, review our Introduction Docs.

Our roadmap for the project system

We anticipate most or all new project types that ship from Microsoft will be based on CPS. We also look forward to migrating some of the existing project systems to CPS in upcoming versions of Visual Studio. When the API for project system extensibility stabilizes it will come out of Preview and be added to the Visual Studio SDK.

With every feature we ship, we try to define the primary measure of success. For this new project system platform, success is when our customers forget what a project system is. It should feel like just another part of Visual Studio and extending or tweaking it should be as easy as extending the editor, the new C#/VB language service (Roslyn), or any other modern component of the IDE. To achieve this, we just defined new project types, or extensions to “flavor” existing ones, rather than creating whole new project systems. We want you to focus on what makes your project types or flavors unique and valuable to your customers rather than spending most of your time fixing bugs and re-implementing features that we added to C# or C++ in the latest version. Also, we want to make as many features as possible from our own project types available to you to use in yours. Try out the new Project System Extensibility Preview and share your feedback with us via the channels prescribed in our README or leave a comment below!

Thanks,

Andrew

Andrew Arnott Andrew Arnott, Principal Software Engineer, Visual Studio IDE
@aarnott, MSDN Blog, Private Blog, StackExchange

Andrew has been at Microsoft for 9 years and has contributed to the Visual Studio platform, project & build systems, and the .NET Compact Framework. He is also a father of 3 kids with one more on the way.