Quantcast
Channel: Visual Studio Blog
Viewing all 1039 articles
Browse latest View live

Visual Studio 2017 version 15.6, Visual Studio for Mac version 7.4 Released

$
0
0

Today, we released updates to both Visual Studio 2017 and Visual Studio for Mac. Start your download now while you browse the rest of this post: download Visual Studio 2017 version 15.6 or Visual Studio for Mac. We’ll trigger the update notification flag in the tools in the coming days.

Visual Studio 2017 version 15.6

I’ll highlight some of the major changes in this post, but to see the complete list of changes and features, please see our Release Notes.

Performance

We have kept working to improve many aspects of performance and with this update, three things stand out:

  • This update makes solution load for managed code in particular much faster. Users of .NET Core will experience an average of 20% faster load times, with a more noticeable improvement for solutions with 30+ projects.
  • The Debugger’s Threads window is even faster with this release. Now you can interact with Visual Studio while it processes data in the background, which is useful when you’re debugging multithreaded applications.
  • Many VS customers run extensions, which can impact performance. To help you troubleshoot performance issues, this update adds notifications for extensions that may be causing UI delays. This notification lets you directly disable the extension to improve performance or turn off future notifications.

Unit Testing

Improvements to .NET Unit Testing include real time test discovery and we added the hierarchy view to improve the navigation experience in the Test Explorer.

The real time test discovery feature finds any C# and Visual Basic tests, even if you haven’t built your managed project. This feature uses Roslyn to update the Test Explorer in just seconds as you add, remove, or edit tests. We also added options to configure test discovery.

Improvements to unit testing for C++ include Boost.Test item templates and the added support for the Boost dynamic library. Also, Visual Studio automatically discovers your tests in CMake projects (CTest, Google Test, and Boost.Test). After you build, you’ll receive an even more granular view of your tests:

C++

As part of our ongoing effort towards C++ 17 Standards Conformance, the C++ workload now includes support for stable_sort, partition, inline vector::emplace_back in parallel, and <memory_resource> as well as guaranteed copy elision so you don’t have to construct artificial copy or move constructor for types where copy elision will happen.

To make it easier to catch errors beyond your active configuration, IntelliSense errors for inactive configurations now appear as purple squiggles in the editor. You can set the number of configurations you want to process in Tools > Options > Text Editor > C/C++ > Advanced.

We also made C++ improvements for arithmetic overflow checks in C++ Core Check, single file code analysis, and throughput performance and advice. You can discover more features for increasing your productivity on our Visual C++ Team Blog.

.NET Mobile Development

This release adds a feature to configure your macOS build environment automatically, to make building iOS apps with Visual Studio on Windows easier. Visual Studio will handle the heavy lifting of setup, removing the need to install and update your Mac build machine manually.

We also added the ability for both Windows and Mac users to deploy iOS apps over the network with Wi-Fi debugging. To get started, simply pair a wireless device with Xcode, and use it as your deployment target.

Build Tools

The 15.6 Build Tools lets you build servers without a full Visual Studio installation. Build Tools now supports TypeScript and Node.js project types in addition to support for C++, ASP.NET, and .NET Core for Desktop projects. Other improvements to the MSBuild component of the Build Tools include the ability to easily and seamlessly leverage NuGet to resolve SDKs without extra package modification. We’ve created a SDK repository for the community to use. More information is available here, and please provide MSBuild feedback here.

Visual Studio for Mac version 7.4

Visual Studio for Mac version 7.4 is also available today. It includes improvements in performance and stability, as well as fixes for many of the top reported issues. This release includes support for macOS High Sierra and C# 7.1, and core architectural changes for C# editing (powered by Roslyn), resulting in improved IntelliSense performance and typing responsiveness.

You can read the complete release notes and access Visual Studio for Mac downloads on VisualStudio.com.

Share Your Feedback

As always, we want to know what you think. Please install Visual Studio 2017 Version 15.6 and Visual Studio for Mac and share your thoughts and concerns.

Please let us know any issues you have via the Report a Problem tool in Visual Studio. You can track your issues in the Visual Studio Developer Community where you can ask questions and find answers. You can also engage with us and other Visual Studio developers through our new Gitter community (requires GitHub account), make a product suggestion through UserVoice, or get free installation help through our Live Chat support.

John Montgomery, Director of Program Management for Visual Studio
@JohnMont

John is responsible for product design and customer success for all of Visual Studio, C++, C#, VB, JavaScript, and .NET. John has been at Microsoft for 17 years, working in developer technologies the whole time.


Visual Studio 2017 Version 15.7 Preview 1

$
0
0

Last week we released Visual Studio 2017 version 15.6 and Visual Studio for Mac version 7.4, and today we are releasing the first preview of the next minor update: Visual Studio 2017 version 15.7.   We hope that you will use this Preview and share your feedback with us.  To install, you can get it fresh from here or, if you already have a prior Preview installed, you can either click on the in-product notification or check for an update directly.  Alternatively, if you have an Azure subscription, you can provision a virtual machine with this latest preview (starting tomorrow).

The top highlights of this Preview are described below and include productivity enhancements, better diagnostics, additional C++ development improvements, better management of Android and iOS environments, updated tooling for Universal Windows Platform and .NET Core projects, and an improved update experience.  Please note that this is the first set of version 15.7 features; more goodness awaits in the next Preview. And as always, you can view the complete list of new features and details on how to enable them in the Visual Studio 2017 version 15.7 Preview release notes.

We appreciate your early adoption and feedback as it helps us ship the most high-quality tools to everyone in the Visual Studio community. Thank you for engaging in Visual Studio previews!

Productivity

UI Responsiveness: Performance and productivity are two areas we continually work on improving in Visual Studio.  In Visual Studio 2017 version 15.7, we’re making some of the debugging windows asynchronous, which means that they will no longer block Visual Studio as they do work.  This change will allow for faster stepping because you can continue interacting with Visual Studio without interruption. In this Preview, you should see the first of these improvements in the Threads, Callstack and Parallel Stacks windows, with more window improvements in future releases. As always, we’d love to hear your feedback on the Visual Studio debugger: email vsdbgfb@microsoft.com.

Diagnostics

Snapshot Debugging: The Visual Studio Snapshot Debugger can now be launched from the Debug -> Attach Snapshot Debugger menu item. The snapshot debugger in Visual Studio enables you to diagnose and debug issues your Azure Web Applications without impacting the availability of the application. You can learn more about the Visual Studio Snapshot debugger through our docs.

Snapshot Debug Menu

IntelliTrace Events and Snapshots for .NET Core: IntelliTrace’s new step-back debugging feature, first shipped in Visual Studio 2017 version 15.5, is now supported for debugging .NET Core applications. The feature automatically takes a snapshot of your application on each breakpoint and debugger step, enabling you to go back to a previous breakpoint or step and view the state of the application as it was in the past. To enable this feature, go to Tools > Options > IntelliTrace settings > and select ‘IntelliTrace events and snapshots’. IntelliTrace step-back is a Visual Studio Enterprise feature available on Windows 10 Anniversary Update or above for debugging .NET applications.

Step Back Forward Buttons

C++ Development

C++ Standards Conformance:  In this Preview, we extended template argument deduction for functions to constructors of template classes – when you construct a class template you no longer have to specify the arguments.

Code Analysis: C++ Core Check is now part of the default toolset for native code analysis. Whenever code analysis is executed over a project, a subset of rules is enabled from C++ Core Check in addition to default recommended rules.

Linux project properties: We added parallel compilation support for Linux projects, which may significantly improve build times; this can be enabled via Property Pages > C/C++ > Max Number of Parallel Compilation Jobs.  We also added the “Public Project Include Directories” Linux project property to improve consumption of includes from project-to-project references in Linux solutions.

Compiler throughput: We’ve made changes in fastlink PDBs to reduce in-heap memory consumption by 30%. These changes reduce the time to hit the first breakpoint when debugging and makes single-stepping significantly faster. These changes also eliminate a major cause of out-of-memory crashes when debugging large projects.

ClangFormat: ClangFormat support for C++ developers was added to the IDE. Like with EditorConfig, you can use ClangFormat to automatically style and format your code as you type, in a way that can be enforced across your development team.

Clang Format

Universal Windows Platform Development

We have included the Windows 10 Insider Preview SDK, Build 17110 as an optional component associated with the Universal Windows Platform workload. We have also added support for generating Windows Machine Learning class wrappers for an ONNX file that is added to a UWP project. Currently, both components are optional but will be included by default in future preview releases.

.NET Mobile Development

Figuring out what Android SDKs to install for mobile development can be time consuming. Visual Studio 2017 version 15.7 adds a new Android SDK manager that takes the guesswork out of managing Android SDK installations. When opening a project for which you don’t have SDKs installed to build it, a notice will appear to help you download the required SDKs. After hitting “Download & Install” and accepting the relevant license agreement, the correct SDKs will automatically be installed in the background for you.

We are also making provisioning iOS devices for development easier. In Visual Studio 2017 version 15.7, we’re replacing requesting a development certificate, generating a signing key, adding a device in the Developer Center, and creating a provisioning profile with a single button. All the heavy lifting of provisioning an iOS device is handled for you in less than 30 seconds.

ASP.Net and Web Development

Visual Studio 2017 version 15.7, currently in preview, is the recommended version of Visual Studio to use with .NET Core 2.1, which is also currently in preview. .NET Core 2.1 has a bunch of new features like a new managed socket implementation and various improvements like better support for HTTPS.  It doesn’t matter which you install first, either way Visual Studio 15.7 will find .NET Core 2.1 and offer it as an option.


Acquisition

The update experience is now more streamlined than ever in Visual Studio 2017. The yellow notification flag in the upper right-hand corner of the IDE will still notify you when an update is available, but you can now also initiate your own update check by going to Help -> Check for Updates. After you save your work and choose “Update Now”, Visual Studio will automatically apply the update and then reopen back where you left.

Acquisition

This new update experience is just the beginning of our investments in this area, and we’d love to hear your feedback in this space, particularly about how and when you want to apply updates. Please share your ideas with us via the Update Survey.

Try out the Preview today!

If you’re not familiar with Visual Studio Previews, take a moment to read the Visual Studio 2017 Release Rhythm. Remember that Visual Studio 2017 Previews can be installed side-by-side with other versions of Visual Studio and other installs of Visual Studio 2017 without adversely affecting either your machine or your productivity.  Previews provide an opportunity for you to receive fixes faster and try out upcoming functionality before they become mainstream. Similarly, the Previews enable the Visual Studio engineering team to validate usage, incorporate suggestions, and detect flaws earlier in the development process. We are highly responsive to feedback coming in through the Previews and look forward to hearing from you.

Please get the Visual Studio Preview today, exercise your favorite workloads, and tell us what you think.  If you have an Azure subscription, you can provision a virtual machine of this preview (starting tomorrow).  You can report issues to us via the Report a Problem tool in Visual Studio or you can share a suggestion on UserVoice. You’ll be able to track your issues in the Visual Studio Developer Community where you can ask questions and find answers. You can also engage with us and other Visual Studio developers through our Visual Studio conversation in the Gitter community (requires GitHub account).

Christine Ruana Principal Program Manager, Visual Studio

Christine is on the Visual Studio release engineering team and is responsible for making Visual Studio releases available to our customers around the world.

Visual Studio at GDC 2018

$
0
0

Next week, the world’s largest professional game industry event kicks off in San Francisco: Game Developers Conference (GDC) 2018. We’re incredibly excited to engage with all developers at the event looking to join the growing community of more than half a million monthly active developers building great games with Visual Studio today. Microsoft experts will be at the event and are looking forward to have great conversations with you. Here’s an overview of where you can find us.

Visual Studio at GDC 2018

Expo booth and theater sessions

Visual Studio experts will be present in the main Microsoft booth in the South Tower Lobby, together with experts from Azure, Mixer, PlayFab, Windows, and others. Come talk to us about:

  • Using Visual Studio 2017, Visual Studio for Mac, and Visual Studio Code to build games for all platforms across desktop, mobile, and console with a variety of game engines.
  • How Visual Studio Team Services can help you share code, plan, build, and ship games with unlimited private Git repositories, cloud-hosted build agents, Agile planning tools and Kanban boards and much more.
  • Leveraging Visual Studio App Center to automate testing your games on real Android and iOS devices, distribute to testers and app stores, and monitoring real-world usage.

Located just outside the South Hall entrance, you will find experts to talk to about all these topics, as well as amazing experiences from Microsoft to participate in. You will also be able to join 20-minute theater sessions here, covering a wide range of hot topics.

Where we will be

DevOps breakout session

On March 22, Microsoft’s Cloud Developer Advocates Jessica Deen (@jldeen) and Abel Wang (@AbelSquidHead) will deliver a breakout session on DevOps for Game Developers with Team Services and Microsoft Azure at 11:30 AM.

So much more…

Of course, this is just the tip of the iceberg. There’s great session content from various Microsoft teams, access to experts across Xbox, Azure, and PlayFab, and much more to help you build great games with the help of our technology.

To learn more about all the different ways you can interact with Microsoft at GDC 2018, take a look at our Microsoft @ GDC page. There you will also find a PDF version of this information, so you can keep it with you on paper or your phone for easy reference.

We hope to see you at the event and look forward to talking with you all! And if you can’t make it to the event, be sure to follow @VisualStudio for the latest from GDC 2018 and beyond.

Rajen Kishna, Sr. Product Marketing Manager
@rajen_k

Rajen does product marketing at Microsoft for Visual Studio for Mac, as well as mobile and game developer tools. He has a background in application development for various platforms and a passion for technology all-up.

Supporting JUnit 5 in Visual Studio Code

$
0
0

After supporting the widely adopted JUnit 4 with the Java Test Runner extension for Visual Studio Code, we’ve received suggestions to add additional test frameworks, like JUnit 5 and TestNG. We’ve added initial support for JUnit 5, including running, debugging test cases as well as test report. Please give us a try and let us know your feedback.

JUnit 5 in Visual Studio Code

Expression Evaluation based Conditional Break Point

After introducing expression evaluation in our January release for the Java debugger extension, we are bringing the functionality to conditional break points. Now, you can set your breakpoint to break when an expression evaluates to true. We believe this could be a very useful feature when debugging your Java application using Visual Studio Code.

Conditional Break Point

Other Updates

We’ve also added new features to our Java on Visual Studio Code extension lineup, including:

Java Test Runner

  • Trigger tests from test explorer on different levels
  • Add command to open log file
  • Add setting to specify the position of test report

Tomcat

  • Add several context commands in Tomcat Explorer
  • Add support for JVM customization and Tomcat server configuration
  • Add command palette entries for user input

Maven

  • Add support for auto-update maven project explorer when pom.xml is updated

Try it out

Please don’t hesitate to try Visual Studio Code for your Java development, and let us know your thoughts! Install the Java Extension Pack which includes Language Support for Java by Red Hat, Debugger for Java, Maven, and the Java Test Runner.

Additional resources

Xiaokai He, Program Manager
@XiaokaiHe

Xiaokai is a program manager working on Java tools and services. He’s currently focusing on making Visual Studio Code great for Java developers, as well as supporting Java in various of Azure services.

Visual Studio for Mac version 7.5 Preview 1

$
0
0

Earlier this month, we released version 7.4 of Visual Studio for Mac, our IDE for developers on macOS who are building mobile, web, and cloud apps. Today, we’re announcing the first preview of Visual Studio for Mac version 7.5, which you can get by changing the updater channel in Visual Studio for Mac to use the Beta channel. In this release, the top highlights include:

  • Adding new editor support for Razor, JavaScript, and TypeScript.
  • Improving Azure Functions development with support for the .NET Core Preview SDK and with the introduction of new Azure Functions templates.
  • Adding support for the latest releases of .NET Core and C#, with .NET Core 2.1 Preview and C# version 7.2.
  • Making it easier for Xamarin.Forms developers to build apps using .NET Standard.
  • Continuing to improve IDE performance and stability.

See the full Visual Studio for Mac 7.5 Preview release notes to learn about all the changes that made it into this release.

Web Development with Razor, JavaScript, and TypeScript

Editor support for Razor, JavaScript, and TypeScript have been some of the top web developer requests we have heard. In this release, new editors are being introduced for each of these languages.

With official support for Razor, you now have syntax highlighting and IntelliSense while editing your C# in .cshtml files.

Syntax highlighting and IntelliSense

In previous releases, our JavaScript editor included support for syntax highlighting and colorization. Now, it’s rewritten to provide smarter colorization, IntelliSense, brace completion, and the rest of the core editor experience. At the same time, support is being added for TypeScript editing; providing the same colorization, IntelliSense, and editor experience as JavaScript.

TypeScript editor

Behind the scenes, these three were made possible thanks to a lot of hard work from the Roslyn and Visual Studio JavaScript tooling teams – and Visual Studio for Mac re-uses source code from these editing experiences as they appear in Visual Studio 2017 on PC.

Build serverless solutions with Azure Functions

Last year, we introduced preview support for Azure Functions – enabling development of Azure Functions using C# and .NET with full debugger tooling – based on the Mono runtime. Now, a new Functions template dialog is included, along with support for the .NET Core Preview SDK.

Azure Functions templates

Azure Functions templates enable you to quickly create new functions using the most common triggers and templates. You can access these by creating a new Azure Functions project, right-clicking on your project, and choosing the Add > Add Function… menu.

.NET Core 2.1 and C# 7.2

Visual Studio for Mac version 7.5 Preview 1 is the first release supporting the .NET Core 2.1 Preview SDK. You can read all about the .NET Core 2.1 Preview release in the announcement blog post. Some of the top improvements: faster build performance, closing gaps in ASP.NET Core and EF Core, better compatibility with .NET Framework, General Data Protection Regulation (GDPR) and Security compliance. We’ve also added support for C# 7.2.

.NET Standard and Xamarin.Forms

Mobile developers will be happy to see that .NET Standard Library projects are now a fully supported option for sharing code between platforms when building Xamarin.Forms solutions. This release brings numerous bug fixes to improve the .NET Standard developer experience (see the release notes).

Improving performance and reliability

Finally, we continue our push to improve performance and reliability in the IDE. This release focuses on improving IDE startup time, which has decreased by as much as 50% for some users. We’re also fixing top issues and crashes as they come into the Developer Community site – please keep the feedback coming! Some of the top fixes in this release:

Feedback

We can’t do this alone and we need your help to make the product better! Please try out the Visual Studio for Mac version 7.5 Preview 1 release by installing Visual Studio for Mac now and switching to the Beta update channel in the IDE. Share your comments and bug reports with us on the Developer Community site; you can get there quickly by using the Help > Report Problem… menu from the IDE. We also welcome feature suggestions on our UserVoice site, which you can also access from the Help > Provide a Suggestion… menu.

Miguel de Icaza, Distinguished Engineer, Mobile Developer Tools

Miguel is a Distinguished Engineer at Microsoft, focused on the mobile platform and creating delightful developer tools. With Nat Friedman, he co-founded both Xamarin in 2011 and Ximian in 1999. Before that, Miguel co-founded the GNOME project in 1997 and has directed the Mono project since its creation in 2001, including multiple Mono releases at Novell. Miguel has received the Free Software Foundation 1999 Free Software Award, the MIT Technology Review Innovator of the Year Award in 1999, and was named one of Time Magazine’s 100 innovators for the new century in September 2000.

Visual Studio 2017 Version 15.7 Preview 2

$
0
0

Today we released the second preview of the next update: Visual Studio 2017 version 15.7. We hope that you will use this Preview and share your feedback with us. To use the Preview, you can either install it fresh from here, you can update the bits directly from the IDE, or if you have an Azure subscription, you can provision a virtual machine with this latest preview (starting tomorrow).

The top highlights of this Preview include:

  • Improved intellisense for conditional XAML
  • Additional C++ development improvements
  • Streamlined configuration for updating UWP apps
  • Inclusion of TypeScript 2.8
  • Ability to debug JavaScript files using Microsoft Edge
  • Tooling to prevent Web application permission problems
  • Support for building additional project types on the build servers.

This second Preview builds upon the features we added in Preview 1. As always, you can drill into the details of these features by exploring the Visual Studio 2017 version 15.7 Preview release notes. We appreciate your early adoption, engagement, and feedback as it helps us ship the most high-quality tools to everyone in the Visual Studio community.

Productivity

XAML Intellisense: The XAML editor now provides IntelliSense for authoring conditional XAML. When using a type that is not present in the target min version of your app, the XAML editor now not only warns but also provides several options to fix it. The quick fix figures out the right conditional using statement based on the platform version where the type was first introduced, allowing the app to target a wider range of platform versions while being able to consume the latest controls.

XAML IntelliSense

C++ Development

Code Analysis: Five new rules enforcing items from the C++ Core Guidelines regarding use of the Guidelines Support Library are now available.

C++ Standards Conformance: Five more C++17 Standard features are added to the compiler and IntelliSense in this release, making MSVC much closer to be fully compliant with the latest C++ Standard. As an example, extend template argument deduction for functions to constructors of template classes – when you construct a class template you no longer have to specify the arguments. You can now have public base classes in aggregate types, so that they can be initialized using aggregate initialization syntax without writing boilerplate constructors. In braced initializer lists, bases are initialized first, followed by data members.

C++17 Template argument deduction for class
Before After
pair<int, double> p(2, 4.5);

auto t = make_tuple(4, 3, 2.5);

lock_guard<std::mutex> lck(foo.mtx);

pair p(2, 4.5);

tuple t(4, 3, 2.5);

auto lck = lock_guard(foo.mtx);

We are now complete with the full implementation of C++11 Expression SFINAE, and have made the corresponding Standard Library changes. We have also implemented parallel algorithms conforming to the ISO C++17 standard.

For more C++ feature additions, please see the release notes.

Universal Windows Platform Development

Automatic updates for sideloaded UWP apps: The Universal Windows Platform allows distributing applications without the Microsoft Store by using a mechanism called “sideloading”. With Visual Studio 2017 version 15.7 Preview 2 using the latest Windows 10 Insider Preview SDK, there is now tooling to easily configure the automatic update settings for these UWP apps.

UWP Side load Update Settings

TypeScript and JavaScript Development

Compiler: Visual Studio 2017 version 15.7 will include TypeScript 2.8.

Developer Productivity: We’ve continued our push to help make TypeScript and JavaScript developers more productive by adding support for fixing all occurrences of a problem in a document (for example, removing unused variables), organizing imports (including sorting and removing unused declarations), and displaying the lightbulb more proactively when optional improvements are possible. We’ve also fixed some of the top issues raised by customers, including premature triggering of snippets, un-cancellable refactorings, hard-to-disable formatting, and incorrect TypeScript version selection. These improvements are powered by TypeScript 2.8, so for the best experience, we recommend updating your existing projects to use the latest TypeScript version.

Performance: One of the best ways to make developers more productive is to improve the performance of their tools.  To that end, we’ve made background analysis of closed files optional (Only report diagnostics for files opened in the editor under Tools > Options > TextEditor > JavaScript/TypeScript / Project).  We’ve also added support for jsconfig.json – analogous to tsconfig.json – so that JavaScript developers can fine-tune their language service experience in the same way as TypeScript developers.

Debugging using Microsoft Edge: Visual Studio ASP.NET and .NET core developers on Windows Insider builds can now set breakpoints and debug their JavaScript files using Microsoft Edge browser. Visual Studio will use the new Edge DevTools Protocol developed by the Microsoft Edge team when targeting Microsoft Edge browser, which means that developers will be able to debug and fix JavaScript issues from within Visual Studio in both Microsoft Edge and Google Chrome. We are glad to enable this oft requested feature from our customers and would love to hear what you think about it.

Web Development

It is often tricky and time consuming to diagnose runtime application permission problems. In Visual Studio 2017 version 15.7, we’ve made a change to help you identify a specific kind of access issue during development. When running an ASP.NET or ASP.NET Core application on the local machine, the app may not have access to the Key Vault from the account specified under Tools | Options | Azure Service Authentication, and thus won’t be able to run locally. Visual Studio will now detect that case and provide a proactive error during development. This type of diagnostic will shorten the time it takes to discover and fix this local runtime permission problem.

Build Tools

The Visual Studio 2017 Build Tools allow you to create build servers without installing the entire Visual Studio editing environment. Over the past few updates, we’ve been expanding the matrix of project types that the Build Tools support. In the last minor release, we added the ability to build TypeScript and Node.js project types, and in this release we are adding support for building additional project types such as Azure, Office and Sharepoint, Mobile development with .NET (Xamarin), ClickOnce, Docker Tools, Test Tools, and installing into containers. Click here to download the preview release of the Visual Studio Build Tools and try out these new capabilities.

Try out the Preview today!

If you’re not familiar with Visual Studio Previews, take a moment to read the Visual Studio 2017 Release Rhythm. Remember that Visual Studio 2017 Previews can be installed side-by-side with other versions of Visual Studio and other installs of Visual Studio 2017 without adversely affecting either your machine or your productivity. Previews provide an opportunity for you to receive fixes faster and try out upcoming functionality before they become mainstream. Similarly, the Previews enable the Visual Studio engineering team to validate usage, incorporate suggestions, and detect flaws earlier in the development process. We are highly responsive to feedback coming in through the Previews and look forward to hearing from you.

Please get the Visual Studio Preview today, exercise your favorite workloads, and tell us what you think. If you have an Azure subscription, you can provision a virtual machine of this preview (starting tomorrow). You can report issues to us via the Report a Problem tool in Visual Studio or you can share a suggestion on UserVoice. You’ll be able to track your issues in the Visual Studio Developer Community where you can ask questions and find answers. You can also engage with us and other Visual Studio developers through our Visual Studio conversation in the Gitter community (requires GitHub account). Thank you for using the Visual Studio Previews.

Christine Ruana Principal Program Manager, Visual Studio

Christine is on the Visual Studio release engineering team and is responsible for making Visual Studio releases available to our customers around the world.

Adding support for Debug Adapters to Visual Studio IDE

$
0
0

Since its release, Visual Studio Code’s extension model, based on well-known web technologies such as TypeScript and JSON, has attracted a great deal of participation from the community, with hundreds of extensions published to provide support for exciting new languages and technologies. Visual Studio 2017 took the first steps towards participating in this ecosystem in November, with the release of the Language Server Protocol preview. Now, in Visual Studio 2017 version 15.6, we’re excited to announce support for another Visual Studio Code extension component – the debug adapter. If you’ve previously written a debugging extension for Visual Studio Code, you can now use it in Visual Studio as well, generally with only minor modifications. If you’re considering implementing debugging support for a language or runtime, doing so via a debug adapter will allow you to reach both Visual Studio and Visual Studio Code customers without having to support two separate codebases.

What is a Debug Adapter?

A debug adapter is a program that can communicate with a debugger UI using the Debug Adapter Protocol. An adapter can act as a bridge between the UI and a separate debugger (such as GDB or LLDB), or can be a debugger in and of itself (such as “vsdbg”, which supports CoreCLR debugging on Linux and macOS). The Debug Adapter Protocol is JSON-based, and libraries for working with it are available in many languages, including Node.JS and C#/VB.Net.

Debug Adapters Overview Daigram

How do I get started?

You will need to have Visual Studio 2017 version 15.6 installed.

Samples and documentation for the Visual Studio Debug Adapter Host are available on GitHub: https://github.com/Microsoft/VSDebugAdapterHost.

On the Debug Adapter Host wiki, you’ll find walkthroughs that demonstrate testing and packaging a debug adapter for use in Visual Studio. After following the walkthrough, you’ll be able to debug with Visual Studio Code’s “Mock Debug” adapter in Visual Studio:

Visual Studio Code Mock Debug adapter in Visual Studio

The wiki also contains documentation on new functionality added to the Debug Adapter Protocol to support Visual Studio scenarios, such as the ability to edit values in the “Watch” window, control the formatting of data and stack traces, and more.

If your extension also contains a Language Server, you may also be interested in the preview release of Visual Studio’s Language Server Protocol support.

How do I provide feedback?

You can provide feedback by filing issues on GitHub, or you can email the team directly at vsdahfeed@microsoft.com.

Andrew Crawley Sr. Software Engineer, Visual Studio

Andrew is an engineer on the Visual Studio IDE Debugger team, where he works on the Visual Studio Debug Adapter Host.

Load solutions faster with Visual Studio 2017 version 15.6

$
0
0

As we have been working to improve the solution load experience in Visual Studio 2017, you may have read our blog about these improvements in version 15.5. With version 15.6, we have introduced parallel project load, which loads large .NET solutions twice as fast as earlier versions when you reload the same solution. This video compares the time it takes to load a very large solution from the Roslyn repository, with 161 projects, between version 15.5 and 15.6.

solution load performance comparing 15.5 and 15.6

Parallel project load

During the first load of a solution, Visual Studio calculates all the IntelliSense data from scratch. In the previous version of Visual Studio 2017, version 15.5, we optimized the calculation of IntelliSense data by parallelizing the design-time build that produces the data. Solutions that were opened for the first time on a machine loaded significantly faster because of this parallelization. IntelliSense data was cached, so subsequent loads of a solution didn’t require a design-time build.

With version 15.6 we wanted to go one step beyond optimizing IntelliSense calculation. We’ve enabled parallel project load for large solutions that contain C#, VB, .NET Core, and .NET Standard projects. Many Visual Studio customers have machines with at least 4 CPU cores. We wanted to leverage the power of all the CPUs during solution load by loading projects in parallel.

We continuously monitor solution load telemetry coming in through the Customer Experience Improvement Program. We saw that, in aggregate, customers experienced a 25% improvement in solution load times in version 15.6, across all solution sizes. Large .NET solutions experienced even larger improvements, and now load twice as fast as previous versions. A customer with a very large, 400+ project solution told us that their solution now loads 2-4 times faster!

Solution load is getting leaner

Parallel solution load is part of the work we’re doing to improve solution load. Another big effort is to get unneeded components out of the way of solution load. Historically, many components and extensions used solution load to perform initialization work, which added to the overall solution load time. We are changing this to make Visual Studio developers productive as quickly as possible. Only critical code that enables navigation, editing, building, and debugging will run during solution load. The rest of the components initialize asynchronously afterwards.

For example, Visual Studio previously scanned git repositories during solution load to light up the source control experience. Not anymore. This process now starts after the solution has loaded, so you can start coding faster.

As another example, Visual Studio used to synchronously initialize the out-of-process C# language service. This code is now optimized to reuse data structures already available in the Visual Studio process. We’re also working with extension owners to delay operations that do not impact the solution load process until after the load has completed.

We have also optimized the Visual Studio solution loader to batch and run all critical solution load operations before any other work can run. Previously, the Visual Studio solution loader fired a subset of solution load events asynchronously. This allowed lower priority work to interfere with solution load. Additionally, there are popular extensions that listen to these events and can block Visual Studio for seconds. This experience confused some customers, because it was not clear when solution load was complete. This logic is now optimized, so that all solution load events fire synchronously during solution load.

While solution load is significantly faster in version 15.6, we are not done yet. You will see us making solution load even leaner in future updates.

Know what slows you down

Even with these improvements, it’s still possible for slow blocking operations to get scheduled after the solution has loaded. When this happens, the solution appears loaded, but Visual Studio is unresponsive while it is processing these operations. Visual Studio version 15.6 detects blocking operations and presents a performance tip. This helps extension authors find these issues and gives end users more control over their IDE’s performance.

Performance tip in the IDE showing operations that cause delays

Extension authors can use an asynchronous API that allows extensions to run code without blocking users. We’ve also published guidance for extension authors to learn how to diagnose and address responsiveness issues. If you regularly see unresponsiveness notifications for an extension, reach out to the owner of the extension or contact us at vssolutionload@microsoft.com.

Let us know

We would love to know how much faster your solution loads in version 15.6. Give it a try and let us know by sending an email to vssolutionload@microsoft.com. You can also tweet about it and include @VisualStudio.

Viktor Veis, Principal Software Engineering Manager, Visual Studio
@ViktorVeis

Viktor runs the Project and Telemetry team in Visual Studio. He is driving engineering effort to optimize solution load performance. He is passionate about building easy-to-use and fast software development tools and data-driven engineering.


Visual Studio 2017 version 15.7 Preview 3

$
0
0

Today we released the third preview of the next update: Visual Studio 2017 version 15.7. The top highlights of this Preview include:

  • Updates to Universal Windows Platform development
  • C++ development improvements
  • Significant updates in Xamarin and .NET Mobile Development
  • Ability to configure installation locations
  • Debugger support for authenticated Source Link
  • Live Unit Testing improvements
  • New tooling for migrating to NuGet PackageReference
  • Connected Service improvements to deployment and Key Vault functionality

This preview builds upon the features that debuted in the Preview 2 and Preview 1 releases that occurred in March. As always, you can drill into the details of all of these features by exploring the Visual Studio 2017 version 15.7 Preview release notes. We appreciate your early adoption, engagement, and feedback as it helps us ship the most high-quality tools to everyone in the Visual Studio community.

We hope that you will install it, use it, and share your feedback with us. To acquire the Preview, you can either install it fresh from here, you can update the bits directly from the IDE, or if you have an Azure subscription, you can provision a virtual machine with this latest preview.

Universal Windows Platform Development

Latest Windows Insider SDK: With Visual Studio 2017 version 15.7 Preview 3, the latest Windows Insider Preview SDK (build 17133) is included as an optional component to the Universal Windows Platform development workload. You can choose to install this SDK with Visual Studio to start taking advantage of the latest Windows APIs and features.

New Features in Blend for the Updates to the XAML Designer: In the fall of last year, we brought some drastic changes to the XAML Designer for UWP developers targeting the Windows 10 Fall Creators Update. With these changes, we lost some of the features that our developers have grown to know and love. With Visual Studio 2017 version 15.7 Preview 3, we are proud to announce that two big features for Blend are back – Visual State Management tooling, and the Animation tooling with the Objects and Timeline pane! Now, all UWP developers can take advantage of these tools in Blend.

C++ Development

C++ Standards Conformance: This release includes many conformance improvements, including rewording inheriting constructors, declaring non-type template parameters with auto, std::launder(), and two-phase name lookup. In addition, the MSVC compiler toolset conforms almost fully with the C++17 Standard: when compiling with the /Zc:__cplusplus switch, the value of the __cplusplus macro reflects the correct Standard version numbers.

Unit Testing: You can now use CodeLens above each of your unit tests to Run, Debug, and view Test Status.

Unit testing

Code Analysis: We’ve added the /analyze:ruleset option to cl.exe for filtering down warnings in the C++ Code Analysis tools based on ruleset configuration. This results in a consistent experience between standalone invocations of the compiler and the IDE, and improves performance by running only the rules mentioned in ruleset.

Spectre Mitigations in MSVC: The Visual C++ Runtime now supports mitigations for the Spectre variant 1 vulnerability, and the toolset includes mitigated and non-mitigated versions of the DLLs. We’ve also enabled compiler support for Spectre mitigations in non-optimized builds (/Od).

Build Throughput: The /Zf switch is now enabled by default, which enables faster PDB generation when using multiple compilation processes.

CMake: The CMake Targets View provides an alternative way to view a CMake project’s source in the Solution Explorer; instead of a folder-based view, it organizes the code into individual CMake targets.

CMake

In addition, unknown macros that cause tag-parsing errors are now underlined with green squiggles, and source files (.cpp) belonging to CMake projects can now be built individually.

IntelliSense: Headers from Linux and Unix-like systems are now automatically downloaded for use by IntelliSense on Windows. These are also used to provide an enhanced IntelliSense experience for Linux native platform development.

For more C++ feature additions, please see the release notes.

Xamarin and .NET Mobile Development

Xamarin.Forms XAML Editing Improvements: Xamarin.Forms developers using Visual Studio 2017 version 15.7 will notice a vastly improved IntelliSense experience when editing XAML. The Xamarin.Forms XAML editing experience is now powered by the same engine that powers WPF and UWP. This brings many enhancements to developers, including improved matching, light bulb suggestions, code navigation, error checking, resource completion, and markup extension completion.

Xamarin Intellisense

Modernized project templates: Whether you’re new or a seasoned Xamarin developer, project templates are an important part of the app building journey. We have centralized the cross platform project creation in a single place, modernized our iOS and Android native project templates and reduced the time it takes to create a new project.

Android Development Improvements: We have made several improvements to the Android development experience. We are now distributing the Android Oreo SDK (Android API level 27) and are shipping the Android emulators with Quick Boot enabled. We have modernized the designer’s property editor. Visual Studio will now detect scenarios where the project requires a different version of the Android SDK that is installed and will download in the background the required components.

Lastly, when you start a compilation, Visual Studio will boot and deploy the Xamarin runtime on your device while the compilation is taking place, thus reducing the time that that you have to wait to see your application show up. With our test application, on a fresh device, with no previous deployment, and including launching the Android emulator, we see the following performance gains:

Xamarin Intellisense

Apple Platform Development Improvements: We’ve also made significant improvements to the iOS development experience. The iOS, Mac, tvOS and Watch applications now feature a fully static type system. This brings many benefits, such as smaller applications, faster application startup, and reduced memory usage. We have also introduced the [Weak] attribute for fields that make it simpler to write code that is garbage collection friendly in Apple platforms.

Lastly, the provisioning of iOS devices has historically been a chore, requiring multiple trips to the documentation. We have incorporated the same fastlane experience that we shipped on macOS and you can now provision your devices in seconds and keep your entitlements up to date with the click of a button.

Apple Provision

Python

The new and improved version of the Python debugger is now bundled with the Python extension and on by default, making it easier and faster for you to debug your Python code. For more information, refer to the Python debugger blog post that describes this feature.

NuGet

New tooling for migrating to NuGet PackageReference: This release provides out of the box support for migrating existing projects based on packages.config to PackageReference. To get started, right-click on the References node in the Solution Explorer and select Migrate packages.config to PackageReference. The tool analyzes the installed NuGet packages, calculates the dependency graph, and categorizes them into top-level and transitive dependencies. It also provides warnings for potential package compatibility issues with PackageReference.

Nuget

Acquisition

Starting with Visual Studio 2017 version 15.7 Preview 3, you can reduce the installation footprint on your system drive by directing the download cache, shared components, and some SDKs and tools to different locations. Because these pieces are shared among Visual Studio installations, you can only set the locations with your first installation, meaning that you can’t change them later. If you have a solid-state drive (SSD), we recommend that you install the Visual Studio core product on your SSD drive because this will make Visual Studio run significantly faster. For further details on what each of these locations mean, please refer to the preview release notes.

Installation Locations

Debugging

Source Link Authentication: The debugger now supports authenticated Source Link requests for Visual Studio Team Services and private GitHub repositories. When debugging code that was built on another computer, such as a library in a NuGet package, Source Link enables the debugger to show correctly matching source code by downloading it from the internet. To build your own code with Source Link enabled see https://aka.ms/SourceLinkSpec.

For VSTS repositories, authentication is provided by signing into Visual Studio. For GitHub, we leverage credentials from the GitHub Extension for Visual Studio and the Git Credential Manager for Windows. If Source Link fails due to an authentication error a new “Source Link Authentication Failed” page is shown to explain the issue. This page allows the user to login to VSTS or GitHub and retry the Source Link request.

Live Unit Testing

Live Unit Testing has added support for new project features including embedded pdbs and pdbs specifying /deterministic. Live Unit Testing can also now support projects that use reference assemblies.

Connected Services

Deployment to Azure App Services on Linux: Visual Studio now offers you the ability to deploy non-containerized applications to Azure App Service on Linux in addition to our previous support for apps built with Docker. To publish your application to App Service and run in Linux, from the Publish dialog choose “App Service Linux” and select “Create new”.  To continue to publish a containerized application to App Service for Containers using Linux, choose “Create new App Service for Containers”.

Key Vault Connected Service: Azure Key Vault provides a secure location to safeguard keys and other secrets used by cloud apps.  Securing your project’s secrets is now easier than ever with the ability to create and add a Key Vault to your project as a Connected Service.  Doing so will automatically add configuration, add the required NuGet packages to your project, and enable you to access secrets from the Key Vault in your source code.  Once the Key Vault has been added, you will be able to manage secrets and permissions through the Azure portal.  This is available for both ASP.NET and ASP.NET Core applications.

Visual Studio for Mac version 7.5 Preview 2

We’re also releasing a new preview of Visual Studio for Mac, which you can get by switching to the Beta updater channel. This release improves the Razor, JavaScript, and TypeScript web development features we announced in our first preview. Additionally, we’re improving project load performance for .NET Core projects and the debugging experience with Unity games. Be sure to check out the preview release notes for the full list of fixes in this release, driven by your feedback.

Try out the Preview today!

If you’re not familiar with Visual Studio Previews, take a moment to read the Visual Studio 2017 Release Rhythm. Remember that Visual Studio 2017 Previews can be installed side-by-side with other versions of Visual Studio and other installs of Visual Studio 2017 without adversely affecting either your machine or your productivity. Previews provide an opportunity for you to receive fixes faster and try out upcoming functionality before they become mainstream. Similarly, the Previews enable the Visual Studio engineering team to validate usage, incorporate suggestions, and detect flaws earlier in the development process. We are highly responsive to feedback coming in through the Previews and look forward to hearing from you.

Please get the Visual Studio Preview today, exercise your favorite workloads, and tell us what you think. If you have an Azure subscription, you can provision a virtual machine of this preview. You can report issues to us via the Report a Problem tool in Visual Studio or you can share a suggestion on UserVoice. You’ll be able to track your issues in the Visual Studio Developer Community where you can ask questions and find answers. You can also engage with us and other Visual Studio developers through our Visual Studio conversation in the Gitter community (requires GitHub account). Thank you for using the Visual Studio Previews.

Christine Ruana Principal Program Manager, Visual Studio

Christine is on the Visual Studio release engineering team and is responsible for making Visual Studio releases available to our customers around the world.

Mobilizing Existing .NET Apps

$
0
0

Since the first release of the .NET Framework in 2002, developers have been building large-scale apps with client-server architectures. These apps frequently adopt a layered approach, with business logic to solve diverse and complex problems, accessed via desktop or web front-ends.

Today, C# and .NET are available across a diverse set of platforms in addition to Windows, including Android and iOS with Xamarin, but also wearables like Apple Watch and Android Wear, consumer electronics via Samsung Tizen, and even HoloLens.

In this blog post, I’ll show how to port business logic from WPF and build a phone- and tablet-friendly mobile app for Android, iOS, and UWP. Existing C# code can often be re-used with minimal changes, and the user interfaces can be built using Xamarin.Forms XAML to run across platforms.

Porting a Desktop app with a Mobile Mindset

Mobile apps, unlike desktop or server apps, run on limited resources and have the least user attention span. Although this post focuses mainly on porting the existing code, you should also consider changes to the app architecture or user interface to work better on phones and tablets. A good place to start is our mobile development principles.

WPF-to-mobile Example

Almost any .NET codebase, including Windows Forms, WPF, ASP.NET, and Silverlight, has sharable code that can be ported to Xamarin.iOS, Xamarin.Android and UWP projects. By moving the shared code that is platform agnostic to a .NET Standard Library (or a Shared Project) you can easily reference them in mobile projects.

For this example, I am mobilizing an Expenses sample written a few years ago for a cloud-enabled WPF app demo. The functionality works great on mobile, as you can see here:

Cloud enabled WPF app working on mobile device

The original Expenses app is a thick client written for desktop in WPF. The app helps users manage their charges, create expense reports, and allows submitting for manager approvals. It connects to a WCF backend and SQL Server for data storage, and looks like this:

Expenses app thick client written for desktop in WPF

The following sections detail how the legacy app code was analyzed, re-used, and adapted for mobile deployment. You can download the original code and new mobile solution from my GitHub repo.

Analyze code for Mobilization

In general, any non-platform dependent code i.e. your Business Layer, Data Layer, Data Access Layer, Service Access Layer, etc. can be shared across all platforms. To help you identify what code is sharable, use the .NET Portability Analyzer tool. The .NET Portability Analyzer provides you with a detailed report on how portable your program is across .NET platforms by analyzing assemblies. The Portability Analyzer is offered as a Visual Studio Extension and as a console app. Once you install this extension, be sure to check the platforms that you want to analyze in the settings and then right click on the project you want to analyze and click “Analyze Project Portability”

Analyze Project Portability option when you right click on a project in Solution Explorer

It will generate a report like the one below from the Expenses WPF app.

Demo report table from Expenses WPF app

The above shown consolidated report has the analysis of two libraries – Expenses.WPF and Expenses.Data. From the report, apparently, Expenses.Data (data layer) is 100% shareable across all platforms and as expected Expenses.WPF is about 80% shareable. These reports are available on my GitHub repo – please refer the detailed sheet within the workbook to understand the libraries that aren’t shareable.

Porting WCF backend to Azure Mobile Apps

I could retain the WCF backend as-is and host it in the cloud for mobile apps to access. However, I decided to port this to Azure Mobile Apps to take advantage of offline sync support that is an essential feature in creating excellent mobile user experiences. In a mobile world, devices are always moving, connectivity varies, and network outages happen. Apps need to be intelligent by falling back on locally stored data and transferring the data on demand when a better network connection is established with the server.  Luckily, Azure Mobile Apps provides a simple API for developers through its SDK to support both online and offline scenarios for data storage, including automatically syncing data between a device and server.

The project MyExpenses.MobileAppService has controllers that inherit from TableController that provides a RESTful endpoint and nicely abstracts away the code that supports offline data sync.

If you’re new to Azure Mobile Apps, these docs will help you get started quickly. However, if you wish to retain the WCF service as-is on Azure, watch this video on Channel 9.

Porting the WPF client app to Xamarin.Forms

Xamarin.Forms is a cross-platform UI toolkit that helps you create native user interfaces that can be shared across iOS, Android, and Universal Windows Platform apps. Since the UI is rendered using the native controls of the target platform, Xamarin.Forms retains the appropriate look and feel on every platform. Just like in WPF, UI in Xamarin.Forms are created either in XAML or in C# code entirely. However, it is best to take advantage of its DataBinding support and embrace MVVM (Model-View-ViewModel) pattern. An important point to be noted here is that the controls used in WPF are different from the ones in Xamarin.Forms. Although similar controls are available, often they are named differently to suit the mobile user interface guidelines, and hence the WPF XAML cannot be reused in Xamarin.Forms projects. Read our documentation on WPF vs. Xamarin.Forms: Similarities & Differences.

The interesting thing about porting this WPF app is that 100% of the ViewModels, Helpers, Converters, Models, Services, and any code that does not have platform-specific reference can be reused in the Xamarin.Forms app. Hence even the entire UI logic (ViewModels) is retained, and only the UI (XAML) is freshly created to suit the multi-device mobile form factors. In this sample project, I have created folders called “Legacy” to help you understand what code was reused.

Only UI XAML is freshly created to suit the multi device mobile form factors while retaining entire UI logic ViewModels

For details on how I built the UI for this sample, refer to the Views folder within the shared project. All the ViewModels from the WPF project have been reused without much modification. Although comparing to the WPF thick client apps, mobile implementations can be much simpler. However, I have retained the logic as-is to exhibit the reuse of maximum code share.

Getting started with Xamarin.Forms

To get started quickly using Xamarin.Forms with Azure Mobile Apps, there is a template in Visual Studio 2017 and Visual Studio for Mac that automatically sets up everything for you. All that you need to do is add your code in the right places.

Create solution in Visual Studio

Open Visual Studio 2017, click on File> New Project>Visual C#> Cross-Platform > Mobile App (Xamarin.Forms). In the next dialog, be sure to check select Master-Detail template, Xamarin.Forms as the UI Technology and choose “Include Azure Mobile Apps backend project” option. Complete the process by selecting an appropriate Azure Subscription and hosting on a preferred Resource Group.

New Project Dialog window showing Include Azure Mobile Apps backend project option under Cross Plat Mobile App

For detailed guidance on building Cross Platform apps using Xamarin.Forms, checkout our Getting-Started guide.

Consuming Azure Mobile Apps backend

The backend code that was ported from WCF to Azure Mobile Apps can be found in the MobileAppService. Explanation of the Mobile Apps backend code is beyond the scope of this article. You can download the source code from my GitHub repo and publish them directly to your Azure Portal.

By default, the template creates a helper class called AzureDataStore that abstracts away the code for offline sync support. I further modified it to fit Expenses project. In this project, we have three scenarios –

  • Manage Charges (Add/Edit/Delete Charges)
  • Manage Expense Report (Attach charges, Create Expense reports and Submit for approval)
  • Manage Employees

To support offline sync for each of the tables, a corresponding Data Store is created that implements IDataStore<T> interface – T being the Model object.

Source Code and Wrap up

You can download the entire source code from my GitHub repo. Refer, the _before folder for the original WPF source and Port-Report folder for Portability analyzer reports. For detailed documentation on porting existing Windows Forms or WPF apps to Android, iOS, macOS, or UWP, refer our Porting Guidance.

Your existing .NET code is more mobile than you think!

Nish Anil Senior Program Manager, Visual Studio
@nishanil

Nish is a Senior Program Manager on the Xamarin team. He is a C# fanatic and enjoys writing Mobile Apps in Xamarin and Visual Studio. Working out of Bangalore, India, he’s passionate about spreading C# and Xamarin love among .NET developers across the world.

Visual Studio 2017 roadmap now available

$
0
0

With the release of Visual Studio 2017, we moved to a release schedule that delivers new features and fixes to you faster. With this faster iteration, we heard you would like more visibility into what’s coming. So, we’ve now published the Visual Studio Roadmap. The roadmap lists some of the more notable upcoming features and improvements but is not a complete list of all that is coming to Visual Studio.

When you look at the roadmap, you’ll see that we grouped items by quarter. Since every quarter includes several minor and servicing releases, the actual delivery of a feature could happen any time during the quarter. As we release these features and improvements, we’ll update the roadmap to indicate the release in which they are first available. The roadmap also includes suggestions from all of you, which are linked to the community feedback source.

Please let us know what you think about the roadmap in the comments, as our primary goal is to make it as useful as we can to you. We will be refreshing the document every quarter – with the next update coming around July. Stay tuned!

Thanks,

John

John Montgomery, Director of Program Management for Visual Studio
@JohnMont

John is responsible for product design and customer success for all of Visual Studio, C++, C#, VB, JavaScript, and .NET. John has been at Microsoft for 17 years, working in developer technologies the whole time.

BUILD 2018

Supporting Jetty for Java in Visual Studio Code

$
0
0

Eclipse Jetty is a popular web server and servlet container in Java community. We’ve released a new Jetty extension for Visual Studio Code that makes it easy to run and deploy WAR packages (Web Application aRchive), operate your Jetty servers, and interact with your application from within the editor. Today this extension includes the following features:

  • Add Jetty Server from download directory
  • Start/Restart/Stop/Delete Jetty Server
  • Run/Debug/Delete WAR packages
  • Open WAR package directories in File Explorer / Finder
  • Open Server homepage
  • Open WAR package homepage

Jetty for Java in Visual Studio Code

Other Updates

There are many additional new features added to our Java extension lineup for VS Code.

Debugger for Java

  1. Support restart frame. It allows you to restart at the beginning of a method or any method on the stack. This is useful when using DCEVM or jrebel to inject code changes and rerun them.
  2. Support auto-complete for debug console. It works the same as in the editor.

Java Test Runner

  1. Support for test configurations. You can now configure your test setting through command java.test.configure. It supports following configurations:
    • projectName
    • workingDirectory
    • args
    • margs
    • preLaunchTask
  2. And you can run/debug with config through CodeLens or test explorer context menu.

Tomcat

  1. Support automatically run operations against the server when there is only one Tomcat Server in workspace
  2. Enable “Open in Browser” command for idle server too
  3. Support right click on server to select a war package to debug

Maven

  1. Added support for setting JAVA_HOME and other environment variables through configuration settings.
  2. Supported to put popular archetypes ahead when generating projects.
  3. Supported to append default options for mvn commands.

Provide feedback

Your feedback and suggestions are especially important to us and will help shape our products in the future. Please help us by taking this survey to share your thoughts!

Join us at //Build

If you’re attending Microsoft //Build, please join us for a workshop session on Monday, May 7, in which we will walk you through the experience to create and “dockerize” a java Spring Boot app and then deploy it to the cloud. You can also find our team at the “Tools” area in the expo if you’d like to talk to the team behind the Java support for Visual Studio Code.

Try it out

Please don’t hesitate to try using VS Code for your Java development and let us know how you like it! VS code is a lightweight and performant code editor and our goal is to make it great for Java developers!

Xiaokai He, Program Manager
@XiaokaiHe

Xiaokai is a program manager working on Java tools and services. He’s currently focusing on making Visual Studio Code great for Java developers, as well as supporting Java in various of Azure services.

Azure Storage Explorer Generally Available

$
0
0

We are pleased to announce the general availability of Microsoft Azure Storage Explorer. Storage Explorer provides easy management of Azure Storage accounts and contents, including Blobs, Files, Queues, and Table entities. For example, you can easily manage your Azure Virtual Machines disks as Blobs. Azure Cosmos DB and Azure Data Lake are also supported as preview features.

General Availability Highlights

  • Improved sign-in experience. Based on your feedback, we’ve updated sign-in once to quickly and reliably connect to your Azure subscriptions from your developer tools on the same device. If you experience any issues, please open an issue on GitHub.
  • Open feedback platform on GitHub: Microsoft/AzureStorageExplorer. Instead of filling out a survey to offer a suggestion, you can now open Storage Explorer issues on GitHub. You can search existing issues, add comments to issues you fell are more important, share workarounds with other users, and receive updates when issues are resolved.
  • Accessibility support. We believe technology should empower every individual to work with efficiency and high productivity. As part of this release, we are proud to deliver features including better keyboard navigation, such as quickly jumping between panels, improved screen reader support, such as adding aria-live tags to activities, and tons of little fixes to our high contrast themes. We’ll actively look for your feedback on GitHub.

Looking Ahead

We’re working on a variety of features, including:

Next steps

Download latest Storage Explorer today from Storage Explorer landing page.
For any feedback, please report to GitHub: Microsoft/AzureStorageExplorer.

Catherine Wang, Program Manager, Azure Developer Experience Team
@cawa_cathy

Catherine is a Program Manager for Azure Developer Experience team in Microsoft. I worked on Azure security tooling, Azure diagnostics, Storage Explorer, Service Fabric and Docker tools. Interested in making development experience simple, smooth and productive.

Introducing Visual Studio IntelliCode

$
0
0

Visual Studio IntelliCode brings you the next generation of developer productivity by providing AI-assisted development. Every keystroke and every review is informed by best practices and tailored to your code context. You can try it out today by downloading the experimental extension for Visual Studio 2017 that provides AI-powered IntelliSense.

What is IntelliCode?

Visual Studio IntellICode

IntelliCode is a set of AI-assisted capabilities that improve developer productivity with features like contextual IntelliSense, inference and enforcement for code styles, and focused reviews for your pull requests (PRs.)

AI-assisted IntelliSense, and the other features shown at BUILD 2018, are just the start. Over time you’ll see more ways that we’ll assist your end-to-end developer workflow.

Check out this video for a demo of some of the capabilities IntelliCode will offer.

IntelliCode demo video

What can IntelliCode do now?

As you type, AI-assisted IntelliSense recommends the most likely API. This makes it easier to learn a new API and dramatically reduces the number of keystrokes required to complete a line. With more context from the code you write, IntelliSense becomes more accurate.

IntelliCode’s improvements are not just about statement completion. IntelliCode also provides guidance as to the most appropriate overload for that API given the current code context. No more extraneous scrolling!

AI-assisted IntelliSense: better recommendations with every keystroke

AI-assisted IntelliSense: better recommendations with every keystroke

How does it work?

IntelliCode generates recommendations by using a machine-learning model that is trained on thousands of public codebases – today it uses over 2000 GitHub repos that each have more than 100 stars to ensure that you’re benefiting from best practices. The model is used in your IDE along with your local code context to provide .NET related APIs that are likely to be the most relevant for you given the line of code you’re writing. We’ll be growing and improving the model over time so the recommendations will get better as we progress.

While it’s still very early, you can download and experiment with this capability in the IntelliCode extension right away. We welcome your feedback.

What’s next?

Beyond what is currently in our experimental extension, here are a few of the things IntelliCode is experimenting with. Right now, the extension is only C#, but we want to expand to other languages later.

Automatic definition of styles and formatting: no more style inconsistencies

Automatic definitions of styles and formatting: no more style inconsistencies

Consistency is important for maintainability; in fact recent research shows that 18% of PR comments are related to coding conventions, styles and naming issues.

IntelliCode can automatically generate an .editorconfig file that best matches your current styles and formatting. Once generated, this file will help you maintain consistency in your code. Fixing up formatting issues is a snap with existing lightbulbs or with a new, code-cleanup command.

Assisting with every review

As developers, you know that code reviews can be time consuming. It’s challenging to focus on the right things when other issues get in the way. IntelliCode makes reviews less painful for everyone by providing focus for the reviewer, and an automated, first-level review.

Find misused variables

With automatic generation of comments in files for potential issues, you’ll be able to identify and fix issues faster. For example, IntelliCode can detect variable misuse, often introduced through copy/paste where a variable is of the correct type but used in the wrong context. These analyses go beyond style concerns or what a conventional static analysis tool can find – it can find actual bugs in your code. It’s discovered bugs in our code too!

Assistance with every review

Get recommendations for files to review

IntelliCode focuses your reviews by indicating which files may need extra attention. These recommendations are based on machine-learning heuristics for the history of the files, their dependencies, the code complexity and history. These capabilities can be applied alongside CI analysis services and other code review processes. The results can be surface in the IDE and in web-based tools. For example, review comments generated by the IntelliCode analyzers can appear in your online Visual Studio Team Services’ pull requests (PRs).

Some of IntelliCode’s analyzers use machine-learning on public codebases, and are then specialized to your own repository. When these analyses become available, they will require a sign-up and registration process.

Why IntelliCode?

Millions of repos of code are now available in the public domain. This code represents a tremendous amount of knowledge that can be accessed at your fingertips, tailored to your context.

Microsoft is investing extensively in machine-learning and AI technologies. We’re working with Microsoft Research to leverage the latest techniques to learn from source code and deliver new, innovative ways to enhance the coding life of developers, so that you can deliver your software with greater confidence and velocity.

Get Involved

We are excited to give you an early glimpse into IntelliCode, which is currently optimized for C#. Although we are sharing some of it today in an IDE extension (download) you can try right away, today’s demo is just a hint into what’s coming soon.

As we expand the capabilities to more scenarios and other languages, we’ll announce a limited preview of IntelliCode. If you want to learn more, keep up with the project, and be invited to the private preview please sign up!

Happy Coding!

Amanda

Amanda Silver, Director of Program Management, Visual Studio and Visual Studio Code
@amandaksilver, #VSIntelliCode

Amanda Silver is a Director of PM for Microsoft’s Developer Division. She was one of the primary language designers on the LINQ project (Language INtegrated Query) which incorporates query expressions and XML as native types in .NET. She was involved with Chakra, the JavaScript engine that powers Edge, since 2009 which was later open sourced in 2015. In 2012, her team launched TypeScript – a cross-platform, typed, superset of JavaScript that compiles to plain JavaScript. Her team delivers the Visual Studio platform and Visual Studio Code. They recently released Visual Studio Live Share and Visual Studio IntelliCode. Unleashing the creativity of developers is her unrelenting passion.

Visual Studio for Mac version 7.5 and beyond

$
0
0

Last year at Build, we launched Visual Studio for Mac, our native macOS IDE for developers building cloud, web, and mobile applications using .NET. Updates have been rolling out at a steady pace ever since, and we’re excited to announce the release of Visual Studio for Mac version 7.5. We have also continued to bring more Visual Studio 2017 code to the Mac.

Our mission has always been to delight developers, and we have something for everyone in this release. You can get started by downloading the new release or updating your existing install to the latest build in the Stable channel.

Here are some of the features we’re most excited to share with you:

  • ASP.NET Core developers now have full Razor editor support. We’ve also introduced JavaScript and TypeScript support.
  • For iOS developers, we added WiFi debugging support for iOS and tvOS applications. We also improved the iOS provisioning system.
  • Android developers will enjoy the new Android SDK manager built right into the IDE, as well as a device manager to keep track of all your devices and emulators
  • Xamarin.Forms developers will enjoy an improved XAML editing experience
  • Cloud developers have support for Azure Functions development using .NET Core.
  • We support .NET Core 2.1 RC and C# 7.2.
  • Code-styling rules can be configured per-project using .editorconfig files.
  • A preview of Team Foundation Version Control support for Team Foundation Server and Visual Studio Team Services is now available.

We’re also shipping improvements to performance and stability, accessibility, and multi-language support, along with fixes for a number of bugs reported by our vibrant developer community. You can find the full list of changes in our release notes.

ASP.NET Core development with Razor, JavaScript, and TypeScript Editor Support

We partnered with the Roslyn and Visual Studio JavaScript tooling teams to reuse Razor, JavaScript, and TypeScript editor source code, bringing the editing experiences you know and love from Visual Studio 2017 to the Mac.

Official Razor support includes IntelliSense and syntax highlighting in .cshtml files

IntelliSense and syntax highlighting in chtml files

Our JavaScript editor has been rewritten to provide the core editor experience you expect, including IntelliSense, enhanced colorization, and brace completion. We’ve also added TypeScript editing support, which shares the same IntelliSense and colorization as our JavaScript experience.

TypeScript Editor in action

Use .editorconfig files to Set Code Style Rules in Projects

One of my favorite features is finally here: .editorconfig

Visual Studio for Mac will now format your code following the conventions specified in the .editorconfig file. This will allow you to set your coding style, preferences, and warnings for your project; making it simpler for code that you contribute to other projects to follow the practices of those projects.

Xamarin.Forms Development

We now ship Xamarin.Forms templates that take advantage of .NET Standard Libraries.

Working with XAML just got better, too, with IntelliSense improvements providing better support for self-closing elements and more completions.

Android Development with Xamarin

On the Android side of the house, we added an integrated Android Device Manager dialog, eliminating the need to rely upon 3rd-party tools for device and emulator management. You can find this under Tools > Device Manager.

Integrated Android Device Manager dialog

iOS Development with Xamarin

iOS fans will enjoy a streamlined Entitlements editor experience, making it a breeze to add capabilities and services to your iOS apps.

Simply open the Entitlements.plist file and jump right in! Not only that, our new Automatic Signing experience makes deploying your application to devices very simple. In the Signing section of the Info.plist editor, you’ll find using Automatic Signing makes the burdens of manually tracking your entitlements and provisioning devices things of the past.

Building Serverless solutions with Azure Functions

Our new Azure Functions templates now support the Azure Functions .NET Core SDK, empowering you to build, debug, and test Azure Functions locally. In addition, item templates provide guidance for building functions using the most common triggers, enabling you to get up and running with new functions in minutes.

After creating a new Azure Functions project, right-click and select Add > Add Function, then choose your favorite function from the template dialog. Check out our documentation for a walkthrough to create your first Function in Azure.

New Azure Function dialog

.NET Core 2.1 RC and C# 7.2

Visual Studio for Mac version 7.5 now supports .NET Core 2.1 RC. Major improvements include faster build performance, better compatibility with .NET Framework, and closing gaps in both ASP.NET Core and EF Core. You can read more about the .NET Core 2.1 RC release in the announcement blog post. Support for the newest C# release, version 7.2, is also available today.

Working with your source with Team Foundation Version Control

One of our most popular feature requests has been to add support for Team Foundation Version Control (TFVC) to access source saved in Team Foundation Server or Visual Studio Team Services. We heard you loud and clear! Today, we’re previewing a new extension to do just that.

To install the extension, navigate to Visual Studio > Extensions… in the Visual Studio for Mac menu and search the gallery for “team foundation”. We support Get, Commit (with associated work items), version history, and more.

Feedback

We hope you’ll find Visual Studio for Mac version 7.5 as delightful as we do. Let us know what you think! Your feedback helps us improve our products and better understand your needs as a developer.

Please let us know about issues via Help > Report a Problem. You’ll be able to track your issues and receive updates in the Visual Studio Developer Community.

You can also provide product suggestions via the Help > Provide a Suggestion menu and vote on suggestions at the Visual Studio for Mac UserVoice site.

Miguel de Icaza

Miguel de Icaza, Distinguished Engineer, Mobile Developer Tools
@migueldeicaza

Miguel is a Distinguished Engineer at Microsoft, focused on the mobile platform and creating delightful developer tools. With Nat Friedman, he co-founded both Xamarin in 2011 and Ximian in 1999. Before that, Miguel co-founded the GNOME project in 1997 and has directed the Mono project since its creation in 2001, including multiple Mono releases at Novell. Miguel has received the Free Software Foundation 1999 Free Software Award, the MIT Technology Review Innovator of the Year Award in 1999, and was named one of Time Magazine’s 100 innovators for the new century in September 2000.


Visual Studio 2017 version 15.7 and version 15.8 Preview 1

$
0
0

Today at Build, we announced the release of Visual Studio 2017 version 15.7 and the first preview of the next update, Visual Studio 2017 version 15.8 Preview 1. If you would rather try these without installing them, check out the Visual Studio images in Azure that will be available soon.

Before digging in, I’d like to call out other Visual Studio and .NET news:

There are also two really interesting previews I’d call your attention to:

We will publish blog entries on these soon, and as we do we’ll update this post with the links.

There is a lot we have accomplished in this release and I’ll share the highlights in this post. It is a long post, so grab a cup of your preferred warm beverage and read on. For the complete list of all the updates in today’s releases, check out the Visual Studio 2017 version 15.7 release notes and list of bugs submitted by you that are fixed.

Installer Updates

One of the first things you’ll probably notice is a nice change to the way updates work. You can now initiate a check for updates (Help -> Check for Updates) and, after you save your work and choose “Update Now,” Visual Studio will automatically apply the update and reopen where you left off.

Starting with this release, you can reduce the installation footprint on your system drive by directing the download cache, shared components, and some SDKs and tools to separate locations. Because these pieces are shared among Visual Studio installations, you can only set the locations with your first installation, meaning that you can’t change them later. If you have a solid-state drive (SSD), we recommend that you install the Visual Studio core product on your SSD because this will make Visual Studio run significantly faster.

New Install Location tab in the Installer

Performance Improvements

We’ve done a lot of work on Visual Studio performance during the Visual Studio 2017 cycle, particularly things like solution load (see this post for some of the most recent improvements), but we’re making continual improvements. Here are a few other improvements to performance in this update.

UI Responsiveness: One change that will improve general UI responsiveness in version 15.7 is that the debugging windows are now asynchronous. This means that they will no longer block Visual Studio as they do work. This change will allow for faster stepping because you can continue interacting with Visual Studio without interruption.

.NET mobile performance improvements: Visual Studio will boot and deploy the Xamarin runtime on your device while a compile is taking place. This reduces the time that you have to wait to see your app show up. With our test app, on a fresh device and no previous deployment, including launching the Android emulator, we see performance gains ranging between 33% to 300% depending on the scenario.

TypeScript Performance: We’ve made background analysis of closed files optional (“Only report diagnostics for files opened in the editor” under Tools > Options > TextEditor > JavaScript/TypeScript / Project).

Editor Productivity Improvements

With each release, we add capabilities that improve developer productivity, particularly focusing on that “inner loop” of editing, building, and debugging.

.NET Refactorings and Navigation: Every release, we increase the number of refactorings and improve navigation for our managed languages. In Visual Studio 2017 version 15.7 we added the following refactorings:

  • Toggle between foreach loop and for-loop (C# and Visual Basic)
  • Make private field read only (C# and Visual Basic)
  • Convert LINQ query expression into a foreach loop (C#)
  • Convert implicit type to explicit type (C#)

We also enabled Go To Definition (F12 or Ctrl+Click) in more scenarios, like on LINQ query clauses, deconstructions, and on the ‘override’ keyword (to navigate to base).

XAML IntelliSense: The XAML editor now provides IntelliSense for authoring conditional XAML. When using a type that is not present in the target-minimum version of your app, the XAML editor now not only warns but also provides several options to fix it. The quick fix Lightbulb figures out the right conditional using statement based on the platform version where the type was first introduced, allowing the app to target a wider range of platform versions while being able to consume the latest controls.

XAML IntelliSense

Xamarin.Forms XAML Editing Improvements: If you use Xamarin.Forms in Visual Studio 2017 version 15.7 you will notice a vastly improved IntelliSense experience when editing XAML. The Xamarin.Forms XAML editing experience is now powered by the same engine that powers WPF and UWP. This brings many enhancements including improved matching, Lightbulb suggestions, code navigation, error checking, resource completion, and markup extension completion.

TypeScript Editing and TypeScript 2.8: Visual Studio 2017 version 15.7 will include TypeScript 2.8. We’ve continued our push to help make TypeScript and JavaScript developers more productive by adding support for fixing all occurrences of a problem in a document (for example, removing unused variables), organizing imports (including sorting and removing unused declarations), and displaying the lightbulb more proactively when optional improvements are possible. We’ve also fixed some of the top issues that you have raised, including premature triggering of snippets, un-cancellable refactorings, hard-to-disable formatting, and incorrect TypeScript version selection. These improvements are powered by TypeScript 2.8, so for the best experience, we recommend updating your existing projects to use the latest TypeScript version.

C++ ClangFormat: We’ve added ClangFormat support for C++ developers in the IDE. Like with EditorConfig, you can use ClangFormat to automatically style and format your code as you type, in a way that can be enforced across your development team. For more information, see the ClangFormat Support blog post.

Clang Format

C++ CMake: This release of Visual Studio includes features to make it easier than ever to use CMake without needing to generate projects and Solutions. The new CMake CMake Targets View provides an alternative way to view a CMake project’s source in the Solution Explorer; instead of a folder-based view, it organizes the code into individual CMake targets. Additionally, CMake projects now support single file compilation and static analysis of C++ code, without the need to generate a VCXProj file. The version of CMake that ships with Visual Studio has also been upgraded to 3.11.

C++ Standards Conformance: And last, but not least in this section, I want to highlight that Visual C++ is now conforming to ++11, C++14, and C++17. Yes: the MSVC compiler toolset in Visual Studio version 15.7 conforms with the C++ Standard! We’re not going to stop there with our conformance effort. Expect to see more future communications from our team as we alleviate the remaining caveats. More details are available at the Visual C++ Team Blog post on how MSVC conforms to the C++ Standard.

Debugging and Diagnostics

IntelliTrace Events and Snapshots for .NET Core: IntelliTrace’s new step-back debugging feature, which we first shipped in Visual Studio 2017 version 15.5, is now supported for debugging .NET Core applications. The feature automatically takes a snapshot of your application on each breakpoint and debugger step. This enables you to go back to a previous breakpoint or step and view the state of the application as it was in the past. To enable this feature, go to Tools > Options > IntelliTrace settings > and select ‘IntelliTrace events and snapshots’. IntelliTrace step-back is a Visual Studio Enterprise feature available on Windows 10 Anniversary Update or above for debugging .NET applications.

Step Back Forward Buttons Demo gif

Source Link Authentication: The debugger now supports authenticated Source Link requests for Visual Studio Team Services and private GitHub repositories. When debugging code that was built on another computer, such as a library in a NuGet package, Source Link enables the debugger to show correctly matching source code by downloading it from the internet. To build your own code with Source Link enabled see https://aka.ms/SourceLinkSpec. For VSTS repositories, authentication is provided by signing into Visual Studio. For GitHub, we leverage credentials from the GitHub extension for Visual Studio and the Git Credential Manager for Windows. If Source Link fails due to an authentication error a new “Source Link Authentication Failed” page is shown to explain the issue. This page allows you to login to VSTS or GitHub and retry the Source Link request.

Edge Debugging: Visual Studio ASP.NET and ASP.NET Core developers on Windows Insider builds can now set breakpoints and debug their JavaScript files using Microsoft Edge browser. Visual Studio will use the new Edge DevTools Protocol developed by the Microsoft Edge team when targeting Microsoft Edge browser, which means that developers will be able to debug and fix JavaScript issues from within Visual Studio in both Microsoft Edge and Google Chrome. We are glad to enable this oft-requested feature from our customers and would love to hear what you think about it.

Mobile Development

We’ve made many improvements to the mobile development experience, some listed elsewhere in this post, but for the core platform support, here are a few.

Android Development Improvements: We are now distributing the Android Oreo SDK (Android API level 27) and are shipping the Android emulators with Quick Boot enabled. Additionally, Visual Studio will now detect scenarios where the project requires a different version of the Android SDK that is installed and will download required components in the background.

Apple Development Improvements: The iOS, macOS, tvOS, and watchOS apps now feature a fully static type system. This brings many benefits, such as smaller app size, faster app startup, and reduced memory usage. We have also introduced the [Weak] attribute for fields that make it simpler to write code that is garbage collection friendly in Apple platforms. The provisioning of iOS devices has historically been a chore, requiring multiple trips to the documentation. We have incorporated the same experience that we shipped on macOS and you can now provision your devices in seconds and keep your entitlements up to date with the click of a button.

ASP.NET, Cloud, and Web Development

Visual Studio 2017 version 15.7 is the recommended version of Visual Studio to use with .NET Core 2.1 and has a bunch of new features like a new managed socket implementation and various improvements like better support for HTTPS. It doesn’t matter which you install first, either way Visual Studio version 15.7 will find .NET Core 2.1 and offer it as an option.

Deployment to Azure App Services on Linux: Visual Studio now offers you the ability to deploy non-containerized applications to Azure App Service on Linux in addition to our previous support for apps built with Docker. To publish your application to App Service and run in Linux, from the Publish dialog choose “App Service Linux” and select “Create new.”  To continue to publish a containerized application to App Service for Containers using Linux, choose “Create new App Service for Containers.”

Key Vault Connected Service: Please don’t store your application keys in your app – if possible use Azure Key Vault. We’ve made it easier in this release with the Connected Service experience – using it will add the right configuration the NuGet packages to your project and enable you to access secrets from the Key Vault. Once the Key Vault has been added, you will be able to manage secrets and permissions through the Azure portal. This is available for both ASP.NET and ASP.NET Core applications. We’ve also made it easier to use Key Vault during development: when running an ASP.NET or ASP.NET Core application on the local machine, the app may not have access to the Key Vault from the account specified under Tools > Options > Azure Service Authentication, so it won’t be able to run locally. Visual Studio detects that case and flags it for you with an error.

Universal Windows Platform Development

We have included the Windows 10 April 2018 Update SDK, Build 17134 as the new required SDK associated with the Universal Windows Platform workload. We have also added support for generating Windows Machine Learning class wrappers for an ONNX file that is added to a UWP project.

Automatic updates for sideloaded UWP apps: The Universal Windows Platform allows distributing applications without the Microsoft Store by using a mechanism called “sideloading.” With Visual Studio 2017 version 15.7 using the latest Windows 10 SDK there is now tooling to easily configure the automatic update settings for these UWP apps.

Loading code from C# Optional Packages: You can now create a new “Optional Code Package” Universal Windows project type. This project allows you to author C# code to be loaded in the context of the main application package when creating a related set. Learn more about creating C# Optional Code Packages.

Visual Studio 2017 version 15.8 Preview 1

In addition to Visual Studio 2017 15.7, we also have a Preview of 15.8 (the release notes are here). To install, you can get the preview here, or if you already have a prior Preview installed, either click on the in-product notification or check for an update directly. Previews of Visual Studio 2017 install side by side with generally available releases, so you can try the preview at the same time you have the GA version for your main coding work. Alternatively, with an Azure subscription, you can provision a VM with Visual Studio 2017 on it through the Marketplace.
C++ Quick Info Tooltips: C++ Quick Info tooltips on macros now show what they expand to and not just their definition. This is particularly useful for complex macros that reference other macros, as it’s now clear what the macro identifier will be replaced with by the preprocessor. See an example of what the tooltip now displays in the picture below.

Example of Macro Tooltip Improvements

Docker Single Project Experience: In this Preview, we’ve added a new single project Docker container experience for ASP.NET Core web projects, which builds on top of the existing Docker composed-based container tooling and makes it easy to create, debug, and build Docker containers right from Visual Studio. You can either add Docker support when creating the project, or you can add it to an existing project through right clicking on the project’s context menu in Solution Explorer. For more details on how to utilize this feature, please refer to the Visual Studio 2017 version 15.8 Preview 1 release notes.

LibMan – New Client-Side Library Manager for Web Apps: We are implementing a new tool for managing client-side libraries, colloquially known as “LibMan.” Designed as a replacement to Bower, LibMan allows you to easily acquire and manage static, client-side files for your web project from various sources, including CDNJS. You can read more about it in the post: Library Manager: Client-side content manager for web apps.

Share Your Feedback

As always, we want to know what you think. Please install Visual Studio 2017 version 15.7 and Visual Studio 2017 version 15.8 preview 1 and share your thoughts and concerns.

Please let us know any issues you have via the Report a Problem tool in Visual Studio. You can track your issues in Visual Studio Developer Community where you can ask questions and find answers. You can also engage with us and other Visual Studio developers through our new Gitter community (requires GitHub account), make a product suggestion through UserVoice, or get free installation help through Live Chat Support.

Thanks,

John

John Montgomery, Director of Program Management for Visual Studio
@JohnMont

John is responsible for product design and customer success for all of Visual Studio, C++, C#, VB, JavaScript, and .NET. John has been at Microsoft for 17 years, working in developer technologies the whole time.

Microsoft Build 2018: New releases for Visual Studio, Visual Studio for Mac, .NET Core and Xamarin.Forms

$
0
0

Microsoft Build has always been a time when we deliver a wealth of developer-focused announcements. It’s an opportunity to share our vision for developer experiences across mobile, AR/VR, cloud, web, desktop, IoT and AI. This year, I’m excited to have brought this vision to life with more than a few exciting announcements:

  1. .NET Core 2.1 RC
  2. Future of Windows Desktop Development
  3. Visual Studio 2017 version 15.7
  4. Visual Studio for Mac version 7.5
  5. Xamarin Forms 3.0 General Availability
  6. Visual Studio Live Share Public Preview
  7. Introducing Visual Studio IntelliCode

For an overview of announcements across the company, check out Scott Guthrie’s blog post; but for a round-up of Visual Studio and .NET headlines, read on.

.NET Core 2.1 RC

As of today, .NET Core 2.1 Release Candidate (RC) is available with a “Go-Live” license to use in production. .NET Core 2.1 improves on previous releases with hard-won performance gains and many new features:

  • ASP.NET Core SignalR. Developers have been using SignalR to build real-time web communication solutions since 2013 on the .NET Framework. The stack has been streamlined and improved to run on the cross-platform and higher performance .NET Core runtime. We also released SignalR as an Azure service.
  • ASP.NET Core web platform enhancements including support for Razor UI in class libraries, improvements in building WebAPIs, security enhancements, a new Identity UI library and HttpClientFactory.
  • Entity Framework Core 2.1 introduces significant capabilities like lazy loading, data seeding, value conversions, query types, and GroupBy translation.
  • .NET Core 2.1 significantly improves build & runtime performance. It also introduces a new deployment and extensibility model for global tools.
  • ASP.NET Core 2.1 is more than 15% faster than version 2.0. This means that when ASP.NET Core is released, it will top the TechEmpower benchmarks as the fastest mainstream web framework on the planet.

Of course, .NET Core remains free, cross-platform, and open source – just as it has been since 2014.

Learn more about .NET Core 2.1 RC.

Future of Windows Desktop Development

While we’re excited to release .NET Core 2.1 RC, we’re not stopping there. Today, we introduced the roadmap for .NET Core 3, which brings desktop development to our open source .NET stack. We are adding Windows Presentation Foundation (WPF) and Windows Forms on top of .NET Core. As always, developers building Universal Windows Platform apps will also continue to benefit from all the .NET Core improvements.

.NET Core 3.0 will enable Windows desktop apps use a globally installed .NET, or an app local copy, or build a single .EXE which includes .NET. Thus, .NET apps will no longer be impacted by system-wide updates. More importantly, this will allow us to make improvements to WPF and Windows Forms that we previously could not have done with .NET Framework without risking compatibility to existing apps

With .NET Core 3.0, developers will have the ability to share and easily integrate UI controls across all the major Windows desktop frameworks. You’ll be able to incorporate whatever UI controls make the most sense for your scenario, or even take a phased migration approach to modernizing your app’s UI. Developers will be able to seamlessly integrate almost all the Windows 10 API surface area into their .NET apps such as Cortana, Windows Hello, Windows ML, Rome, and more. And developers will be able to take advantage of the performance improvements and new API’s in .NET Core.

Developers targeting .NET Framework 4.8, the next version of .NET Framework, will also benefit from the improvements we plan to make such as the new Edge-based WebView control that they can host inside their apps, with more controls planned. And support for XAML Islands bringing UWP UI into existing applications.

This roadmap represents a significant investment in Windows desktop development by empowering developers to adopt the latest innovations in Windows 10 and .NET Core in their WPF and Windows Forms apps.

Learn more about the .NET Core 3.0 Roadmap.

Visual Studio 2017, version 15.7

Our flagship IDE, Visual Studio, received a significant upgrade today with the announcement of Visual Studio 2017 version 15.7. John Montgomery’s blog post has a full run-down of all the new capabilities, but some of the more significant headlines include:

  • Cloud development: You’ll find several improvements to the project scaffolding and unit testing. Additionally, you can publish Helm charts directly to Azure Kubernetes Service (AKS). You can now also directly publish .NET applications to Kubernetes containers. For your ASP.NET and ASP.NET Core applications, you can configure the Key Vault connected service directly from the IDE.
  • Debugging: IntelliTrace’s new step-back debugging, first shipped in Visual Studio 2017 version 15.5, is now available for .NET Core applications. The feature automatically takes a snapshot of your application on each breakpoint and debugger step so you can step “back in time” to view previous application states.
  • MSVC C++ 17 conformance: Today, we are happy to announce we have reached full C++ 17 conformance in MSVC with Visual Studio 2017 version 15.7. We also added ClangFormat support for C++ developers in the IDE. Developers can use ClangFormat to automatically style and format your code as you type, in a way that can be enforced across your development team.
  • Python: This release contains an opt-in preview of the Python debugger based on the popular open source pydevd debug engine, offering improved performance for many debugging scenarios.
  • iOS and Android mobile development with Xamarin: The XAML editing experience has been greatly improved with full IntelliSense support. iOS devices can be provisioned for development with a single click, saving developers a lot of time and steps. Android and iOS project templates have been re-written to use the latest modern navigation patterns and are now better organized for improved discoverability.

Learn more about Visual Studio 2017, version 15.7

Visual Studio for Mac, version 7.5

Visual Studio 2017 wasn’t the only IDE to get an update. Today, we’re announcing Visual Studio for Mac version 7.5. This release includes bug fixes, performance improvements, and several new features:

  • New editors for Razor, JavaScript, and TypeScript for building web projects
  • Updated UI and templates for building serverless solutions with Azure Functions and .NET Core
  • .NET Standard Library projects are now a fully supported option for sharing code between platforms when building Xamarin.Forms solutions.
  • Preview support for Team Foundation Version Control (TFVC) in Team Foundation Server (TFS) and Visual Studio Team Services (VSTS) has arrived addressing one of our top UserVoice requests. Developers now have the option to use the existing Git source control integration or the new TFVC integration to manage their code.

Learn more about Visual Studio for Mac, version 7.5

Xamarin.Forms 3.0 General Availability

Today, we’re announcing immediate availability of Xamarin.Forms 3.0. Xamarin.Forms 3.0 delivers improved stability, faster performance, and new capabilities aimed at making it easier for you to create beautiful apps that work on Android, iOS, macOS, and Windows devices.

Xamarin.Forms 3.0 now builds with .NET Standard 2.0 using multi-targeting, while still maintaining support for PCL profiles and other .NET Standard versions. Projects load much faster when you use .NET Standard project types.

Xamarin.Forms 3.0 also includes a strong focus on developer productivity. Many developers are already familiar with the Visual State Manager already found in XAML for UWP and WPF. It’s now available for Xamarin.Forms, too. We’ve also heard from many ASP.NET developers who can build amazing layouts for the web using Flexbox and CSS. To empower these developers to build equally impressive layouts on mobile, we’ve added two features to Xamarin.Forms: FlexLayout and CSS. Xamarin.Forms 3.0 introduces both features without compromising the existing XAML experience desktop developers have come to know and love. Finally, because Xamarin apps are deployed globally, we also included right-to-left language support and many quality improvements in the 3.0 release.

Learn more about Xamarin.Forms 3.0

Visual Studio Live Share Public Preview

Today, we announced the public preview of Visual Studio Live Share. Now any developer can use Live Share to collaborate in real-time with other developers, with instant bi-directional collaboration directly from their existing tools like Visual Studio 2017 and Visual Studio Code. With Visual Studio Live Share:

  • It doesn’t matter if the developer sharing doesn’t use the same editor or have the same OS as you; join a Live Share session from your own development environment. No need to install project- specific dependencies or configure runtimes. You’ll view the project in your development tool, retaining all your customizations and themes.
  • Each team member in a Live Share session can separately open files, navigate, edit, and refactor code. Your changes are instantly reflected in your teammate’s editor. You can quickly jump to a teammate’s location and see their cursor as they make edits or pin to follow their actions. Want to focus their attention? Highlight a piece of code and it will highlight on their screen as well.
  • Use Live Share with any language on any application pattern, including serverless, cloud native, and IoT development. At Connect() 2017, we showed Live Share working with JavaScript and Node.js. Today, Live Share supports nearly every language supported by your development tool, including C#, Python, Java, Go, C++, and
  • Full-context sharing – Use Live Share to collaborate across all parts of your development workflow: co-editing, shared debugging, shared terminals, and shared servers (ports).

Learn more about Visual Studio Live Share

Visual Studio IntelliCode

Visual Studio IntelliCode is a new capability that enhances everyday software development with the power of AI. Today, IntelliCode provides intelligent suggestions to improve developer productivity and code quality in the tool that developers love, Visual Studio. Our vision is to apply AI to empower developers across the entire development lifecycle.

At Build, we shared a sneak peak of IntelliCode, showing how it uses AI to deliver better context-aware code completions, guide developers to code to the patterns and styles of their team, find difficult-to-catch code issues, and focus code reviews on areas that really matter.

Developers can sign up for news and a future private preview, as well as gain access to an experimental extension at http://aka.ms/intellicode

Send us Your Feedback

Our developer tools and services are shaped by your feedback, so please let us know what you think. To download, install and read documentation for all today’s announcements, go to:

If you have any trouble, you can report a problem from inside the IDE on both Visual Studio and Visual Studio for Mac.

To track issues, ask questions and find answers, explore the Visual Studio Developer Community. Or, to engage with our team and other Visual Studio developers in real-time chat, try our new Gitter community (requires GitHub account). We welcome your product suggestions through UserVoice. And, should you need it, you can also get free installation help through Live Chat Support.

Finally, don’t forget that we have three full days of announcements, deep dives, and developer interviews to share. You can live-stream or watch on-demand video later from the Microsoft Build website.

Happy coding.

Julia Liuson, CVP Developer Division

Julia Liuson is Corporate Vice President of Developer Tools where she oversees business and software development of Visual Studio, Visual Studio Code and .NET – including CLR, Windows tools, all programming languages, user experience, and cloud development tools. She is a strong advocate of diversity in the workplace and a champion of women in STEM disciplines.

Hyper-V Android emulator support

$
0
0

Today, at Build 2018, we announced a preview of the Google Android emulator that’s compatible with Hyper-V, available on the Windows 10 April 2018 Update. This enables developers with Hyper-V enabled on their machines to use a hardware accelerated Android emulator, without needing to switch to Intel’s HAXM hypervisor. Amazing work was done by the Windows Hyper-V team, with help from the Xamarin team, to make to this happen.

Today’s preview means you can use Google’s Android emulator side-by-side with other Hyper-V based technologies, including Hyper-V VMs, Docker tooling, the HoloLens emulator, and more. This means that any Android developer on Windows, who also uses Hyper-V, can use a fast Android emulator that will always support the latest Android APIs, works with Google Play Services out of the box, and works with all features in the Android emulator, including camera, geolocation, and Quick Boot.

Hyper-V Emulator Docker

Try the preview

The Windows Hypervisor Platform was introduced in the Windows 10 April 2018 Update and enables third-party virtualization stacks to utilize the Windows Hypervisor for hardware acceleration. If you are using Hyper-V, this stack replaces Intel HAXM as the hypervisor for the Android emulator.

Support for using the Windows Hypervisor as an accelerator for the Android emulator is currently in preview and requires the Windows 10 April 2018 Update. Here are the steps to get it installed.

1. Enable Hyper-V and the Windows Hypervisor Platform

Open Turn Windows features on or off and select Hyper-V and the Windows Hypervisor Platform checkboxes. For these features to take effect, you will need to restart your machine.

Turn Windows Features On or Off settings dialog

2. Install the Visual Studio Tools for Xamarin preview

To enable IDE support for the Android emulator, such as debugging, you must install an updated preview of the Visual Studio Tools for Xamarin. First, ensure you have Visual Studio 2017 version 15.8 Preview 1 or higher with the Mobile development with .NET (Xamarin) workload installed.

Download and open the preview installer. Click Install.

3. Update to Android Emulator 27.2.7 or above

In Visual Studio, select Tools > Options > Android > Android SDK Manager. Click the Tools tab, select the Android Emulator component, and select Apply Changes.

Android SDKs and Tools Manager

Please note: More recent versions of the emulator (27.2.8, 27.3.0, or later), require an emulator flag while the feature is in the preview. To do this, create or edit the file C:\Users\<your-username>\android\advancedFeatures.ini and add the line “WindowsHypervisorPlatform = on”, or start the emulator from the command line with “-feature WindowsHypervisorPlatform”.

4. Start debugging!

Now when you debug your Android apps, you can use the latest Android SDKs in a fast emulator, right from Visual Studio alongside Hyper-V based technologies like Docker.

Share your feedback

We need your help to make using the Google Android emulator with Hyper-V an amazing experience. Be sure to share your feedback in Visual Studio by going to Help > Send Feedback > Report a Problem if you experience any problems or strange behavior. Please provide the following information in your bug report:

  • Android emulator log – In Visual Studio, open the Output window and select the Debug output pane.
  • Android emulator configuration file – In File Explorer, navigate to %HOMEPATH%\.android\avd\ and attach the configuration settings file (.ini) for the Android emulator.
  • System Information – Open System Information and click File > Export.

For more information on configuring the Hyper-V emulator, and for a listing of known issues, visit our documentation.

Miguel

Miguel de Icaza, Distinguished Engineer, Mobile Developer Tools
@migueldeicaza

Miguel is a Distinguished Engineer at Microsoft, focused on the mobile platform and creating delightful developer tools. With Nat Friedman, he co-founded both Xamarin in 2011 and Ximian in 1999. Before that, Miguel co-founded the GNOME project in 1997 and has directed the Mono project since its creation in 2001, including multiple Mono releases at Novell. Miguel has received the Free Software Foundation 1999 Free Software Award, the MIT Technology Review Innovator of the Year Award in 1999, and was named one of Time Magazine’s 100 innovators for the new century in September 2000.

Visual Studio and Unity 2018.1, even better together

$
0
0

The Visual Studio team is excited about the Unity 2018.1 release: It’s the start of a new release cycle packed with great new features like the Scriptable Render Pipeline and the C# Job System. You can read the full blog post by Unity for all the details on what’s new in the 2018.1 release.

First and foremost, we’re thrilled Unity chose Visual Studio as the default editor for both Windows and macOS so that developers get the same great editing and debugging experience in Visual Studio across PC and Mac. With this new release, Visual Studio for Mac is now included in the installer, instead of MonoDevelop on a Mac.

Download and Install Unity dialog showing Visual Studio for Mac

With this release, the Unity scripting runtime now also supports .NET 4.6 APIs and C# 6 by default. This gives you access to modern .NET libraries, SDKs, and tools. All Visual Studio products are already fully compatible with the new runtime for development and debugging.

Configuration dialog showing Unity scripting runtime now also supports .NET 4.6 APIs and C#6 by default

On top of this, additional features are supported thanks to the new runtime:

  • You can set the next statement while debugging (Ctrl+⇧+F10 on Windows, ⌘+⇧+F10 on macOS).
  • Improved support for evaluation (especially for generics, nullables, and collections).
  • Support for DebuggerHidden and DebuggerStepThrough attributes.
  • Better debugging performance and stability.

As you can see in the screenshot above, two .NET profiles are now available:

  • The .NET Standard 2.0 profile is your best choice for cross-platform and optimized build size.
  • The .NET 4.x profile gives you access to the full API, suitable for backwards compatibility.

You can learn more about the updated runtime support in this recent Unity blog post.

We’ve worked closely with Unity on this release and we are very pleased that all Unity developers can now benefit from a more reliable and faster programming and debugging experience with Visual Studio!

Jb Evain, Principal Software Engineer Manager
@jbevain

Jb runs the Visual Studio Tools for Unity experience He has a passion for developer tools and programming languages, and has been working in developer technologies for over a decade.

Improving the responsiveness of critical scenarios by updating auto load behavior for extensions

$
0
0

The Visual Studio team partners with extension authors to provide a productive development environment for users, who rely on a rich ecosystem of quality extensions. Today, we’re introducing an update to extension auto load based on feedback from our community of developers, who need to quickly start Visual Studio and load their solution while deferring other functionality to load in the background.

As part of ongoing performance efforts to guarantee a faster startup and solution load experience for all users, Visual Studio will change how auto loaded packages work during startup and solution load scenarios. Please see the upcoming changes for extension authors below and let us know if you have any questions. The team is actively answering any questions you might have regarding this on the ExtendVS channel on Gitter.

Upcoming changes:

In Visual Studio 2015, we added support for asynchronous packages (AsyncPackage base class) and asynchronous auto load. Extensions have been opting into asynchronous load to reduce performance issues since then. However, there are still some extensions that are loading synchronously, and it is negatively impacting the performance of Visual Studio.

In light of that, changes are coming to start the process of turning off synchronous auto load support. This will improve the user experience and guarantees a consistent startup and solution load experience, providing a responsive IDE. As part of this, changes to auto load behavior in a future Visual Studio update will be as follows:

  1. Async packages that load on the background have smaller performance impact than synchronously loaded packages, but still the cost is non-zero due to IO contention with foreground thread when starting up Visual Studio or opening a solution. To optimize startup and solution scenarios specifically, the IDE will not auto load async packages during those scenarios even on background threads. Instead the IDE will push all auto load requests into a queue. Once startup or solution load is completed, the IDE will start loading queued packages asynchronously as it detects pauses in user activity. This could mean that a package is never automatically loaded in that session if it’s a short session, or that packages which were queued to be loaded during startup might not load before a user opens a solution.
    Please note that this covers all auto load requests regardless of the source UI context. For example, synchronous auto load requests from any UI context (e.g. SolutionHasSingleProject) or rule-based UI contexts that were previously activated while a solution was being loaded will not be added to the queue. Other sources of package loads, such as project factory queries and service queries, will not be impacted by this change.
  2. All packages that utilize auto load rules will have to support background load and implement asynchronous initialization. The IDE will no longer synchronously auto load packages in any UI context, including rule-based UI contexts.

While asynchronous load support was added in Visual Studio 2015, we know many extensions also want to support Visual Studio 2013 in a single package. In order to make that possible, we have provided a sample that shows how to create a Visual Studio package that loads synchronously in Visual Studio 2013 but also supports asynchronous load in Visual Studio 2015 and above.

Timing:

The Visual Studio team is committed to working with extension owners to help make these changes as soon as possible and with as little disruption as possible for end-users. So, the changes will be phased in over multiple updates:

Visual Studio 2017, version 15.7:

  • The Visual Studio Marketplace is posting a reminder during submission of a non-compliant extension (i.e., an extension that auto-loads but is not an async-package that supports background load).
  • The Visual Studio SDK includes a new analyzer that will issue a build reminder for non-compliant extensions.

Visual Studio 2017, version 15.8:

  • Async packages that support background load will be loaded after Visual Studio startup and solution load are completed (this is update #1 mentioned above).

In a later update, Visual Studio will completely disable auto-loading of synchronous extensions (update #2 mentioned above). End users will see a notification in Visual Studio informing them about extensions that were impacted.

Impact on package implementations:

These changes may require changes to existing packages that utilize the ProvideAutoLoad attribute and inherit from the Package base class, including but not limited to:

  • Synchronous packages (those inheriting from the Package base class) must be converted to support asynchronous loading and enable background load. We also encourage package owners to move initialization code to the thread pool as much as possible to ensure users continue to see a responsive IDE. We will be monitoring extensions and UI delays to track responsiveness issues caused by auto loaded packages. You can find more information on diagnosing package auto load performance in our guidance on Microsoft Docs.
    In order to catch potential issues with async conversion, we encourage all package owners to install the latest SDK and Threading analyzers from NuGet in to their projects.
  • If your package needs to utilize the main thread because it calls into UI thread bound Visual Studio APIs that take a long time to execute, please let us know as we are looking for opportunities in converting such services to implement async methods or be free threaded to avoid responsiveness issues when loading packages in background.
  • Packages that used to load at the beginning of solution load and rely on solution events will need to change implementation as they will no longer receive such events. Instead the package can enumerate the contents of a solution when the extension is loaded. See code sample.
  • Like above, packages that used to load at startup and relied on solution events will have to handle the case where it is loaded after solution load is completed. It is possible for solution load to occur during and closely after startup giving IDE no chance to load startup packages (altering the load behavior of packages from previous versions of Visual Studio).
  • Packages that register command status handlers will need to ensure their default command states are valid. With these changes there will be a timeframe where the QueryStatus handlers are not registered. Generally, we encourage package owners to utilize rule-based UI contexts as much as possible to determine command states via metadata instead of code-based QueryStatus handlers, and will be looking for feedback in what additional terms can be added to rule-based UI contexts to move away from code-based handlers.

Testing async packages that auto load in the background:

Update#1 mentioned above will change the timing of when async packages auto-load in the background. To help you test your package with this behavior, Visual Studio 2017 versions 15.6 and 15.7 include the new auto load manager in the product behind a feature flag (in version 15.8 Preview 2 and later this will be enabled by default). With this feature flag enabled, Visual Studio will defer auto-loading of async, background loadable packages until startup and solution load complete and Visual Studio is idle for some time. Synchronous auto-loading packages will have no change in behavior.

To enable the new auto load behavior, you can run both the following commands in your Visual Studio installation directory:

    vsregedit set <VSROOT> HKCU FeatureFlags\Shell\AutoLoadRestrictions Value dword 1

    vsregedit set <VSROOT> HKLM AutoLoadPackages AllowSynchronousLoads dword 1

You can use the following command to change the idle time to a large value to aid in testing your extension. For instance, to set the idle time to 60 seconds:

    vsregedit set <VSROOT> HKLM AutoLoadPackages MinimumInputIdleTime dword 60000

To go back to existing behavior, you can run:

    vsregedit set <VSROOT> HKCU FeatureFlags\Shell\AutoLoadRestrictions Value dword 0

Resources:

Mads Kristensen, Senior Program Manager
@mkristensen

Mads Kristensen is a senior program manager on the Visual Studio Extensibility Team and has published over 100 free Visual Studio extensions over the course of the past 5 years.

Viewing all 1039 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>