Quantcast
Channel: Category Name
Viewing all 10804 articles
Browse latest View live

2.1 Million Square Kilometers of New Imagery in Western Canada

$
0
0

We are happy to announce that we have published another imagery update for Canada. This latest update covers 2.1 million square kilometers of western Canada, pushing the total area delivered for Canada to 5.1 million square kilometers.

Check out the stunning scenery of western Canada now available on Bing.com.

Sonora Island, British Columbia

Sonora Island is among the Discovery Islands of British Columbia. Named after a Spanish schooner that explored the region in 1775, it is a lauded outdoors adventures destination.

Sonora, British Columbia

Banff, Alberta

Located within the Banff National Park in Alberta, the town of Banff is a popular tourist destination for outdoor sports with over 3 million national park visitors each year. Also, in 1984 the Banff National Park was declared a UNESCO World Heritage Site.

Banff, Alberta

Vernon, British Columbia

Vernon is located in the Okanagan region of British Columbia. Host to the Vernon Winter Carnival, which is known as the second largest in North America, the city comes together to celebrate during the annual ten-day event.

Vernon, Alberta

For views of our latest imagery for eastern Canada, go to http://blogs.bing.com/maps/February-2017/3-Million-Square-Kilometers-New-Imagery-in-Canada.

- Bing Maps Team


Relationship Hacks: An Allowance System for Adults

$
0
0

Nintendo Switch - YOU DESERVE ONEI'm setting a goal for myself to finish my half-finished book relationshiphacks.com this year. In an attempt to make that happen (and because the recent podcast with my wife was wildly popular) I'm going to try to blog some guiding principles. Then I'll attempt to collect the feedback and comments, improve the posts, then move them into the book.

I got a Nintendo Switch yesterday. Bought it with cash, brought it home, set it up, and - with neither shame nor regret - showed my non-gamer spouse.

"That's cool," she said. "Is that the new Nintendo 64 they were talking about on the radio?"

No judgment. Not a comment about the $300 price tag. Nothing was sad like "do we really need another game?" or "what credit card did you buy that with?"

How is this possible? No fight (not even a lowercase F fight) and no tension.

My wife and I give each other an allowance. In cash.

Every two weeks when our paychecks are deposited, we each get an allowance. It's a $100 a week (yes, for some that's a lot, for others, it's not. It works for us.) and it's the same for each of us. We put all our money in one account, give ourselves the allowance, pay the bills, then if there is anything left over it goes it savings.

Let me back up. We used to a bicker and judge each other for our purchases. If you'd log into our bank you'd see something like:

  • Paycheck
  • Mortgage
  • Car Note
  • $5 Starbucks
  • $3 Subway
  • $8 Chipotle
  • $60 GameStop
  • $70 Nordstrom

HOLD UP. What is that GameStop? Well, what's this Nordstrom? Did you need to be getting that [widget?]

You get the idea. We needed to remove all that noise at the bottom of the ledger as it was distracting us from the larger goals.

Then my wife had the idea that we just needed to pay ourselves first. We can spend that money however we like - with promised zero judgment from the other spouse. That's crucial, otherwise the system doesn't work.

The allowance for anything that isn't "necessarily living stuff." So it's not for toothpaste, but it IS for eating out when we don't need to eat out.

I could have eaten at Chipotle each day this week, but that would come out of my allowance. Instead, I chose to eat at home all month and save my allowance for a Nintendo Switch.

This works - of course - both ways. My wife has hobbies and social stuff that she does, and she uses her allowance for that.

If you made it this far, perhaps you're thinking, "wow, you're a wimp" or "gee, he/she has you in their pocket." Wait.

Step back and absorb. We are grown-ass people. This system works because we designed it for us. All arguments around "frivolous" spending are gone.

This allows us the best of all worlds.

  • It keeps credit card spending to an absolute minimum. 
  • We are empowered and we empower each other with this system.
  • There's a certain sense of power in carrying cash. You know exactly how much you have and exactly when you have to stop spending.
  • We can decide if we want $200 shoes or a $100 meal or a $50 game. One spouse comes home excited about their purchase while the other greets them without resentment. The fixed allowance amount handles that.
    • Additional spending is discussed on a case-by-case basis. But we've picked an amount that is large enough that I could buy something crazy like a Vive - if I am willing to forgo movies, excessive eating out, etc.
  • It sets a good example for the kids as they watch us weigh the pros and cons of a purchase. Money is spent when it's in-hand and not on credit.

My wife and I are in a mixed marriage. It's not that I'm White and she's Black, is that I'm a techie/geek/nerd and she's fairly normal. ;) Of course, this kind of mix isn't gender or race specific. I know lots of couples of varying combos and flavors that bump up against issues in their relationships because of budding resentment, missed or poorly set expectations, divergent points of view around problem solving, and more.

I'd love to hear YOUR story of your partner and your "mix" and how you (mostly) solved it with a simple Relationship Hack like this. Sound off in the comments.


Sponsor: Check out JetBrains Rider: a new cross-platform .NET IDE. Edit, refactor, test, build and debug ASP.NET, .NET Framework, .NET Core, or Unity applications. Learn more and get access to early builds!


© 2017 Scott Hanselman. All rights reserved.
     

Announcing Visual Studio 2017 General Availability… and more

$
0
0

Now is an exciting time to work with developer tools. With a 25% increase in monthly active users of Visual Studio, 1.3 million active monthly users of Visual Studio Code, and a two-fold increase in active users of our Mac IDEs, I think our customers are excited too.

Since we released the Visual Studio 2017 Release Candidate, we’ve had nearly 700,000 downloads! We’ve been busy taking customer feedback and enhancing the user experience to deliver the most powerful and productive version of Visual Studio yet. We’ve also been fine-tuning the Visual studio family of tools. In November, we introduced previews of Visual Studio for Mac and Visual Studio Mobile Center and made Visual Studio Team Foundation Server 2017 generally available.

Now, the day that we have been working toward is here. I am excited to share that Visual Studio 2017 is generally available today. I encourage all of you to download Visual Studio 2017 today! We are also delivering updates across the Visual Studio product family, and adding new value for Visual Studio subscribers and Visual Studio Dev Essentials members.

Visual Studio 2017: The Most Productive Version Yet

With Visual Studio 2017, we’ve invested in several key areas – refining the fundamentals

Cloud and mobile development were top of mind as we built Visual Studio 2017. For streamlined cloud development, built-in tools provide integration with all your .NET Core, Azure applications, microservices, Docker containers, and more. It is easier than ever to build and deploy applications and services to Azure, directly from the IDE. Visual Studio 2017 with Xamarin make it faster for you to create mobile apps for Android, iOS, and Windows through updates like advanced debugging and profiling tools.

We also heard loud and clear that Visual Studio needs to be faster and leaner, even as applications and projects get larger. So we built a brand-new installation experience that is lightweight and modular. We also made multiple enhancements to improve Visual Studio performance across the board. Visual Studio 2017 also has new features that allow development teams to easily adopt modern DevOps practices and collaborate to react to market changes faster and continuously. To extend developers’ ability to incorporate their databases into DevOps, accelerating release cycles, Redgate Data Tools are now included in Visual Studio Enterprise 2017.

I hope that you’ll download Visual Studio 2017, try it out, and let us know what you think. You can also learn more on John Montgomery’s post covering all that’s new in Visual Studio 2017.

Updates to Visual Studio for Mac, Visual Studio Team Foundation Server and Visual Studio Mobile Center

With 5 million Visual Studio Team Services registered users and a two-fold increase in downloads of our Mac IDEs over the past six months, we are seeing customers realize the potential of the full Visual Studio family. Today, we’re bringing the next wave of updates with Team Foundation Server 2017 Update 1, Visual Studio for Mac Preview 4, and updates to the Visual Studio Mobile Center Preview.

  • Visual Studio for Mac Preview 4. Visual Studio for Mac is our IDE, made for Mac to build mobile, cloud, and macOS Since the introduction at Connect(); mid-November, the team has been busy and added updated .NET Core project support, NuGet and mobile tooling improvements, and implemented many bug fixes and performance optimizations. You can read more about Visual Studio for Mac in Miguel’s blog post where you can give it a try! Please continue to share feedback as we shape the product.
  • Visual Studio Team Foundation Server 2017 Update 1 available. Today, we are releasing Team Foundation Server 2017 Update 1, the collaboration platform for every developer. Team Foundation Server 2017 Update 1 adds value to on-premises customers, including a new process template managing experience, npm support in package management, additional repository permission management, pull request improvements, test impact analysis, branch policy improvements, and a personalized home . For more information on what’s new in Team Foundation Server 2017, check out Brian Harry’s blog.
  • Visual Studio Mobile Center preview updates. Mobile Center now has expanded support for mobile apps beyond Swift, ObjectiveC, and Java, to include support for mobile apps built with Xamarin and React Native as well as enhanced analytics. You can try the Visual Studio Mobile Center Preview today for free by going here.

New value for Visual Studio Enterprise subscribers and Visual Studio Dev Essentials members

With the release of Visual Studio 2017, we are bringing all-new benefits for Visual Studio Enterprise subscribers and Dev Essentials members. The Enterprise DevOps Accelerator offer brings organization everything they need to implement DevOps at scale and modernize their toolchain, including Visual Studio Enterprise, continuous deployment services with continuous integration (CI) and cloud-based load testing, beta distribution through HockeyApp, a discount on Azure compute resources, and on-site expert DevOps coaching.  Find more information here. Further, Visual Studio subscribers and Dev Essentials members can log in to their respective portals for additional training and support offers from Microsoft and our partners.

We hope that you’re as excited about Visual Studio 2017 as we are. Make sure to download today keep the feedback coming.

julia-liuson-2Julia Liuson, Corporate Vice President, Visual Studio

Julia is responsible for developer tools and services, including the programming languages and runtimes designed for a broad base of software developers and development teams as well as for Visual Studio, Visual Studio Code, and the .NET Framework lines of products and services. Julia joined Microsoft in 1992, and has held a variety of technical and management positions while at Microsoft, including the General Manager for Visual Studio Business Applications, the General Manager for Server and Tools in Shanghai, and the development manager for Visual Basic.

Visual Studio 2017: Productivity, Performance, and Partners

$
0
0

Today we released Visual Studio 2017. Start your download and read on to learn more about some of the highlights of this release. For the complete list of changes in the release, check out the Visual Studio 2017 release notes. Some of the things I would like to highlight are:

Fundamentals: Productivity and Performance

Improved startup and improved project load. Multiple enhancements come together to make Visual Studio 2017 start up to 3 times faster than Visual Studio 2015. Solution load times are 2-4 times shorter, and build performance is faster, particularly for C++ projects as Ankit Asthana wrote on the VC++ blog. Check out this post by Dan Taylor on improved overall Visual Studio responsiveness that leads you into a deep dive on these improvements.

Enhanced Navigation. Visual Studio 2017 dramatically improves code navigation, from “Go to All” to Find All References to Indent Guides. For example, Find All References used to display its search results as a flat list in the Results Window. Visual Studio 2017 colorizes the results and provides custom grouping, sorting, filtering, and searching to help you rapidly home in on the specific reference you were looking for. But most powerful is Go to All (ctrl+T or ctrl+,), which has undergone a complete transformation. Go to All is a fast, complete search for any file, type, member or symbol declaration in a solution. Icons at the bottom of the search bar allow you to filter your results by group or adjust the scope of the search. You can also customize settings like placement of the search bar, a live preview of the files containing the highlighted result, and additional file information for each result, by clicking the gear icon in the bottom-right corner.

go-to-all

Keyboard Shortcuts for GoTo

Go To AllGo To LineGo To FileGo To TypeGo To MemberGo To Symbol
ShortcutCtrl+T or Ctrl+,Ctrl+GCtrl+1, FCtrl+1, TCtrl+1, MCtrl+1, S
Query PrefixNo prefix:ftm#


Load files without needing a solution.
One request we heard from customers was to be able to edit files without needing to open a project or solution. We listened and are happy to bring you a solution (wordplay mildly intended): in Visual Studio 2017, you can open and work on any file for a long list of languages from C# to C++ to Ruby to Go. For a full list of all capabilities available to you read this blog post on open any folder in Visual Studio.

load-files

IntelliSense filtering. IntelliSense now provides filters to quickly narrow down that member you’ve been looking for. Filtering helps you get to what you need without having to wade through many, many types to get to it.

intellisense

Language improvements: refactorings, style analyzers, and more. There’s more here than we can easily fit into a short paragraph. We’ve added new C# language refactoring commands that help you modernize your code to the latest standard. New style analyzers and support for EditorConfig let you harmonize coding standards across your team. You can edit XAML while your WPF or UWP application is running and see changes in real-time. The C++ compiler and standard library are updated to enhance support for C++11 and C++14 features. Lastly, a new language service for TypeScript and JavaScript, provides support for the latest standard JavaScript features and provides rich type inference across both languages.

CMake support for C++. Support for CMake is now available in Visual Studio 2017. You can start coding by directly loading your CMake projects in Visual Studio. It is easy to switch between configurations provided by CMake and CppProperties.json file. Further configuration is also supported via CMakeSettings.json file that sits in the same folder as CMakeLists.txt file. For an overview of CMake support see the Visual C++ Team blog or watch this 10-minute CMake Video.

Linux support for C++. Visual C++ for Linux Development is a popular extension which is now part of Visual Studio 2017. To learn more about Linux development with C++ watch this video.

Live unit testing. Live unit testing, as the name suggests, tells you in real time if your unit tests will pass or fail because of the edits you just made to your code, without leaving the code editorin. Check out this blog post to learn more about live unit testing in Visual Studio 2017.

live-unit-testing

Run to Click. Most of us use temporary breakpoints. Run to Click is much slicker. Now while you’re stopped at a break state under the debugger, when you hover your mouse over a line of code you’ll see the Run to Click glyph. Click on the glyph and execution continues to and halts on that line.

run-to-click

Exception Helpers. We’ve added exception helpers, so you can immediately see the root cause of an exception with instant access to inner exceptions in a compact, non-modal dialog. Additionally, you can now exclude breaking on exception types thrown from specific modules by clicking the checkbox to add a condition while stopped at the thrown exception.

exception

Small and lightweight installation. We made it easier to get up and running with Visual Studio 2017 with our new installer. The smallest installation is just one-tenth of the size of the previous version, and it installs in just a minute or two. We make it easy for you to install just the frameworks and tools you need to get up and running quickly.

5-Star Mobile Applications

XamarinForms Previewer. One of the most time-consuming parts of development is the build and run cycle – the time between writing a line of code and seeing it execute. Real-time feedback makes development faster, easier, and more fun for developers. The XamarinForms Previewer renders a live preview of a page side-by-side with the XAML markup, allowing you to see your user interface come to life in Visual Studio as you type.

Improved Xamarin Forms XAML IntelliSense. When you open any XAML document for Xamarin Forms in Visual Studio 2017, you will now greatly improved IntelliSense. The new IntelliSense supports bindings, custom properties, custom controls, converters, and much more.

Connected Services. The new Connected Services experience in Visual Studio 2017 makes it much easier to connect your mobile application to cloud services such as Azure Mobile Apps data storage and authentication . Adding a service to your project will add all required dependencies and any required initialization code to your mobile targets.

The first Connected Service we are providing for mobile developers enables you to connect your app to an Azure App Service backend, providing easy access to authentication, push notifications, and data storage with online/offline sync. This feature also allows you to create a new App Service directly from Visual Studio and have it provisioned without having to visit the Azure Portal.

Cloud Development

.NET Core. Visual Studio 2017 now supports building .NET Core 1.0 and 1.1 applications. .NET Core, which includes ASP.NET Core and Entity Framework Core, is Microsoft’s open source framework for building cloud and server applications and microservices for Windows, macOS, and Linux. It is fast and lightweight: on the Tech Empower web benchmark ASP.NET Core scores in the top 10 fastest web frameworks ahead of Java servlets, Node, Ruby, and PHP.

dotnet-core

Simplified container support. Container development automates the repetitive tasks of setting up and configuring development environments. No longer do developers have to install complex software on their machines in order to duplicate their production machines, instead relying on a simple file that pulls in dependencies as a packaged container. Visual Studio 2017 supports building containerized applications on both Windows and Linux. .NET Core and .NET applications can be containerized during creation or after creation with a simple right-click gesture and can be run and debugged inside the container during local development.

container-support

Azure App Service support. Azure App Service provides hosting on ASP.NET and ASP.NET Core and Visual Studio has great support for publishing and debugging applications on App Service. Visual Studio 2017 now expands that support to hosting .NET Core containerized applications in App Service. .NET and Visual Studio 2017 make container development easy.

azure-app-service

For additional details check out the latest posts on .NET Blog.

DevOps

Visual Studio 2017 improves many aspects of working in DevOps environments, from improvements to version control to improvements to the Developer Analytics tools to a preview of the ability to configure a CI/CD pipeline directly from within Visual Studio. Of particular interest are some of the improvements in Visual Studio’s Git support. We’ve added new Git features to Visual Studio that allow you to do more of your end-to-end workflow without leaving the IDE. You can easily view the diff for outgoing commits, perform a force push to complete a rebase or push an amended commit, remove your upstream branch, and continue patch rebase from Visual Studio. Additionally, because we moved to git.exe–which allows us to provide the most up-to-date features–we support SSH, respect your config options, and show in Team Explorer exactly what you see in the command line.

Most interestingly Visual Studio also includes tools not just to perform DevOps on your source code, but on your database configuration as well, thanks to the inclusion of the Redgate Developer Tools Core Edition. To extend Visual Studio 2017 DevOps capabilities to SQL Server database development, install the Data Storage and Processing workload and you’ll get:

  • Redgate SQL Search. Redgate SQl Search is included with all editions of Visual Studio 2017, increases your productivity by helping you quickly find SQL fragments and objects across multiple databases.
  • Redgate ReadyRoll Core. Redgate ReadyRoll Core is included with Visual Studio Enterprise 2017, helps you develop migration scripts, manage database changes using source control, and safely automate deployments of SQL Server database changes alongside applications changes.
  • Redgate SQL Prompt Core. Redgate SQL Prompt Core is included with Visual Studio Enterprise 2017, helps you write, format, and refactor SQL code. You can write SQL more quickly and accurately with the help of intelligent code completion. SQL Prompt autocompletes database and system objects and keywords, and offers column suggestions as you type. This results in cleaner code and fewer errors because you don’t need to remember every column name or alias.

Additionally, your Visual Studio Enterprise subscription comes with six months of access to WhiteSource Bolt for open source vulnerability management and license checking, and to Parasoft for service virtualization. Check out the new subscriber benefits post for more details.

The Visual Studio Ecosystem

Many customers extend Visual Studio with solutions from the Visual Studio Marketplace. With today’s announcement, we have over 100 partners simultaneously shipping their extensions with the release, making over 700 extensions available to use with Visual Studio 2017.

One of the more popular extensions is Microsoft’s Productivity Power Tools. Over the last year, we’ve been reconfiguring the Power Tools to be a discrete set of extensions, and today we’re making many of them available in Visual Studio 2017.

vs-marketplace

 

Also, today we’re making available a preview of the Python Tools. We wanted to ensure that you have access to the Python tooling, as we are finishing up the full localization to enable us to publish them in a future minor update to all interested Visual Studio 2017 users.

Try it out and please give feedback

By now, Visual Studio 2017 may have finished installing for you. If it has, great! I’d like to address two questions we get asked a lot:

  • Can I install Visual Studio 2017 alongside Visual Studio 2015? Yes. Visual Studio 2017 works side by side with these previous versions of Visual Studio: Visual Studio 2012, Visual Studio 2013, and Visual Studio 2015. Visual Studio 2017 can’t run side by side with an RC or preview version of Visual Studio 2017 or Visual Studio “15”.
  • Can I install Visual Studio 2017 on top of a Visual Studio “15” Preview or Visual Studio 2017 RC? If you currently have Visual Studio 2017 RC or Visual Studio “15” Preview installed on your machine, you should see an ‘update’ button in the new installer. Click that and you will good to go.

If you’re looking for the data science workload that was in VS 2015, it will be coming in a future update including R support.

If you have further questions, read the Visual Studio 2017 FAQ for other commonly asked questions. Want to know more about compatibility, check out Visual Studio 2017 compatibility and Visual Studio 2017 system requirements. Also, be sure to read this article to learn about offline installations.

Visual Studio 2017 has a lot of new and improved features for you to try. For the complete list of what is included in this release, along with some known issues, check out the Visual Studio 2017 Release Notes.

As always, we welcome your feedback. For problems, let us know via the Report a Problem option in the upper right corner, either from the installer or the Visual Studio IDE itself. Track your feedback on the developer community portal. For suggestions, let us know through UserVoice.

Finally, check out Visual Studio 2017 Launch Event to see members of the engineering team demo the product, and tune in on March 8 for a full day of live training.

John Montgomery 2013John Montgomery, Director of Program Management, 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 18 years, working in developer technologies the whole time.

Open Source Scanning in Visual Studio Team Services with WhiteSource Bolt

$
0
0

Most organizations today consume open source software in their development projects. The reuse of components enables great productivity gains. However, this practice has an unintended consequence: you can reuse security vulnerabilities or violate licenses without realizing the risk. I wrote about this in an article in MSDN Magazine on Rugged DevOps.

For users of VSTS, there is now a great extension to help discover and remediate the risk: WhiteSource Bolt is now available in the marketplace. WhiteSource, an open source security & management platform provider, has been working with Microsoft  to offer an integrated solution within the VSTS product, so that you can scan components directly from your build and release pipeline. TFS support is coming soon.

When you install the Bolt extension, it is ready to use in trial mode. I found that I could add the build task with no parameter configuration and run the component scan successfully on first try. It’s an extraordinarily easy flow.

You add Bolt as a build task, save and queue the build and then you have a report on vulnerabilities and licenses that looks something like this:

whitesource-bolt-report

There are a few things to note about this report. In the table under the summary, you see each vulnerable component listed. On the left is a hyperlink to the source information about the vulnerability. On the right, for each component, is a link to the most recommended fix.

If you’re a security geek, you’ll probably note that of these seven high-vulnerability components, only one is enumerated in the National Vulnerability Database (as CVE-2016-2515). WhiteSource identifies the other six from its own security research.

If you have Visual Studio Enterprise , you now get 6 months use of WhiteSource Bolt for one team project included with your subscription. You can redeem a code from your benefits page. WhiteSource has posted a page for VS subscribers with more detailed instructions..

 

Visual Studio Code C/C++ extension March 2017 Update

$
0
0

Last week marked an important and exciting milestone for the C/C++ extension for Visual Studio Code: this extension has been installed for over 1 million times since it shipped just a year ago! Thanks to everyone who tried it and provided us invaluable feedback to help shape the extension what it is today.

But we are still early in this journey! We have been and will continue to add features and fixes to the extension. So please keep your feedback coming! Just last week we shipped another update (March 2017) to the C/C++ extension for Visual Studio Code. The original blog post has been updated with changes in this update.

If you have this extension installed already, Visual Studio Code sends a notification for the update and installs the update for you automatically. If you haven’t installed it before, download the C/C++ extension for Visual Studio Code to try it out.

Download C/C++ extension for Visual Studio Code

In addition to several bug fixes noted in the change log, we added the new addWorkspaceRootToIncludePath setting to allow users to disable the automatic parsing of all C++ files under the opened workspace root and its subfolders. By default, the extension parses the workspace root to provide an out-of-box code browsing experience. This new setting was added because some users with large amounts of code files have told us that recursively parsing all of the folders under the opened workspace root could be time consuming and isn’t desired in certain situations. If you find yourself in this situation, the new addWorkspaceRootToIncludePath setting can be set to ‘false’ to force the extension to only parse folders *specifically* listed in the includePath.

Tell us what you think

Download the C/C++ extension for Visual Studio Code, try it out and let us know what you think. File issues on GitHub and suggestions on UserVoice. If you haven’t already provided us feedback, please take this quick survey to help shape this extension for your needs.

MSVC: The best choice for Windows

$
0
0

The C++ product team here at Microsoft offers a great C++ experience in the Visual Studio IDE, the Visual Studio Code editor, and various other tools and services. That includes the topic of this blog post: the Microsoft Visual C++ compiler and libraries toolset (MSVC).

Our goal for MSVC is to be the best compiler choice on Windows for targeting Windows, regardless of what editor or IDE you choose to use. We aim to deliver on our goal with continuous investments in the following key areas: full C++ conformance, better errors and warnings, runtime performance, reliability, build throughput, and the best security. Let’s look at each one in more detail.

The best C++ conformance

Getting to full conformance with the C++ Standard is our number one priority when it comes to our compiler. We’ve written a dedicated post discussing our road to conformance. Please go read C++ Standards Conformance from Microsoft.

Better errors and warnings

Effective compiler diagnostics are hard. We know that there are many places where our warnings and errors could improve. We’ve started small, by indicating the column number in MSVC diagnostics. But there is more targeted work to come in the area of improved diagnostics: conforming behavior for ternary operator, missing diagnostics for incorrect code, detailed continuation messages for generic error codes, better warning level configurations for system headers, and more. Look for details on this blog in the coming months.

Similarly, we’ve been making great strides in the quality and variety of warnings generated from our C++ code analysis. One good example of this is the C++ Core Guidelines checkers, which ship as part of VS 2017. These checkers are built to enforce rules in the C++ Core Guidelines, a cross-industry coding standard that helps you write code that is correct by design.

We’ve made a number of improvements recently in C++ code analysis. We’ve made improvements in the base rulesets for code analysis in VS 2017 and in the C++ Core Guidelines checkers.

Code generation and optimization (runtime performance of your code)

We have three goals in optimizing your code, and we aim to be the best in each area:

  1. Runtime performance of your code: we want it to run as fast as possible.
  2. Reliability and correctness: It doesn’t matter how fast your code is if does the wrong thing. Our first focus is reliability of the compiler and correct code generation.
  3. Security: Lots of tools search for memory vulnerabilities from “outside the box”. Our optimizer contains powerful technology to make your code safe without tools.

With regards to runtime performance, our optimization framework got a big rewrite with VS 2015 Update 3. MSVC’s new SSA (static single assignment) optimization framework opens up new possibilities for how we can make your code run faster. We’re taking advantage of this new optimization framework in VS 2017 to make your code faster.

Optimization isn’t just about speed: it’s about correctness. We test our compiler, libraries, and optimizer daily by building Windows and Office as well as more than 50 OSS projects. We also have almost a million custom-written regression tests that run with every source change checkin, full-suite testing with several hundred thousand more tests daily, and performance and throughput testing.

There are many tools that try to make your code secure from outside the box: Valgrind and address/thread sanitizers are popular examples. And there are many of these tools on Windows as well, both from Microsoft and other companies. But MSVC features powerful technologies inside the compiler that integrate security with your code. For example, Control Flow Guard, is highly-optimized security feature that combats many memory corruption vulnerabilities. We can’t talk openly our current security research but we’re always working to make your code (and ours!) safe from increasingly sophisticated attackers.

Build throughput

We’ve also greatly improved build throughput: making our compiler toolset compile your code faster. Features like /debug:fastlink in VS 2015 reduced link times by 2-4x. In VS 2017, feature improvements to /debug:fastlink give an additional 30% reduction in link time. Here are more suggestions on how to use /debug:fastlink as well as other techniques for faster build times.

How do I get the newest MSVC toolset?

The best way to get our compiler and libraries toolset is as part of the latest version of Visual Studio. Major changes to the VS installer let you install just the parts you need. You can install just the C++ workloads without having to install other languages if that’s what you prefer. You can also optionally install workloads for specific C++ scenarios.

You can even install the C++ Build Tools on your build machines without needing to install the VS IDE. These are the same tools that are installed with VS 2017 but are intended for build machines. There’s usually no need to install an IDE on a build machine because no development happens on the machines. With VS 2017 you can choose to install just the MSVC toolsetin a scriptable, standalone installer.

What if you want to check out new features that have been implemented since the last VS update? We’ve created a simple way to try out a new toolset with an easy-to-install NuGet package that installs in a C++ project or solution. We’ve also helped to get our compiler toolset integrated on the Compiler Explorer at gcc.godbolt.org, a popular web app that lets you compare compiler features and code generation across many C++ compiler toolsets.

For libraries, we’ve created a Windows-specific library package manager that lets you quickly and easily install many open source libraries directly from their repos. We started with an initial list of libraries that you suggested in a survey, plus some of the most popular libraries from GitHub. The number of supported libraries that you can install with VCPkg is always growing.

In closing

As always, we welcome your feedback. Feel free to send any comments through e-mail at visualcpp@microsoft.com, through Twitter @visualc, or Facebook at Microsoft Visual Cpp.

If you encounter other problems with MSVC in VS 2017 please let us know via the Report a Problem option, either from the installer or the Visual Studio IDE itself. For suggestions, let us know through UserVoice. Thank you!

Official Release of TFVC Support for the Visual Studio Team Services Plugin for Android Studio and IntelliJ

$
0
0

In the 1.115.0 release of the Visual Studio Team Services plugin for Android Studio and IntelliJ, Team Foundation Version Control (TFVC) support is transitioning from preview mode to official release. TFVC support was added in a preview state starting September 2016 and continually has had more functionality added to it with each iteration. Its core features enable users to work with their TFVC repositories from inside of Android Studio and the variety of JetBrains IDE’s such as IntelliJ IDEA and Rider EAP. Users can seamlessly develop without needing to switch back and forth from the IDE to the command line to perform their Team Services actions. It also includes additional features that you otherwise wouldn’t get from the command line client, such as seeing an updated status of your repository’s related builds along with the capability to browse work items assigned to you or from your personal queries.

The following are the current features we support:

  • Checkout a TFVC repository from Team Services or Team Foundation Server 2015+
  • Execute all basic version control actions such as add, delete, rename, move, etc.
  • View local changes and history for your files
  • Create, view, and edit your workspace
  • Checkin and update local files
  • Merge conflicts from updates
  • Lock and unlock files and directories
  • Add labels to files and directories
  • Configure a TFS proxy

Check out our brief demo of getting up and running inside of Android Studio. For a more comprehensive look at the plugin, checkout our presentation and tutorial inside of IntelliJ.

To start using the TFVC features, download the latest version of the plugin and follow the setup requirement steps.

To keep up-to-date on the growing TFVC and Git feature set, check out our team site.

If you would like to contribute to our plugin, we have open sourced our code on GitHub.


Extend your App Success with Visual Studio 2017 Launch Partners

$
0
0

Since the release of Visual Studio 2015, the ecosystem of technologies around Visual Studio has diversified and grown significantly.  That is why the Visual Studio Partner Program now represents over 6,500 extensions and integrations across Visual Studio, Visual Studio Code, Visual Studio Team Services, and Xamarin.  This vibrant community of partners not only creates tools that help customize and enrich your development experience.

The ecosystem of extensions available for Visual Studio 2017 today is quickly growing and, upon publishing this, we’ve passed 700 extensions!  This number represents twice as many Visual Studio Partners as launched with us for Visual Studio 2015.   We welcome you to peruse a full list of our Partners’ Sim-Ship Extensions and start using their technologies through the Visual Studio Marketplace.

partners

We continue to bring you tools through the Visual Studio ecosystem that enhance your complete DevOps environment.  Particularly exciting are the updates to the Productivity Power Tools for Visual Studio 2017.  Learn about how we have made these free tools more flexible and easy to manage in Justin Clareburt’s post.  You can also increase your productivity by automating your testing framework through Parasoft or, as you saw in the keynote, optimizing database changes and deployments with RedGate.   Not only have we made these great tools available to you through Visual Studio 2017 Subscription Benefits, our DevOps Partners have been certified to help you bring these advanced DevOps practices to life.  We are happy to announce the re-launch of the DevOps Partner site, in which you can search for over 125 experts across the globe.

Together, the Visual Studio Partners and the DevOps Partners bring you over thirty 20th Anniversary Product Offers.  This gives you a chance to easily explore new technologies to use with Visual Studio 2017 and take advantage of services that can accelerate your DevOps practice.  So whether you are looking for more advanced charting libraries, want to optimize on debugging, or need help migrating to SQL Server, we encourage you to see what our partner networks have to offer.

Are you interested in authoring your own extensions for Visual Studio 2017?  Visit the Visual Studio Extension site for documentation, code samples and a community forum that can help you get started.  In addition, we encourage you to join the Visual Studio Partner Program for free and take advantage of the benefits we have built to give you access to the product teams behind Visual Studio and keep you posted on activities and opportunities.

nandiShawn Nandi, Senior Director, Partnerships and Planning

Shawn drives partnerships and planning for the developer business at Microsoft as well as product management for Visual Studio developer programs and subscriptions.

Mobile Center: Xamarin support, detailed app analytics, and more

$
0
0

Since our announcement of the Visual Studio Mobile Center Preview at Connect();,  we’ve had an amazing response from the developer community. I’d like to thank the thousands of you who’ve created accounts, kicked the tires of our lifecycle services, and provided feedback to help us create the simplest, most effective way to build, test, deploy, and monitor mobile apps from a single service.

As we head toward General Availability , we’ve incorporated that feedback into our roadmap, added new services, doubled down on existing services, and increased the size of our engineering team to make it all happen. Here’s an update of where we stand, and a preview of what’s to come.

Any developer. Any app. Any platform.

Mobile Center works with you, wherever you are, and whatever your toolset. Any iOS or Android developer working in Objective-C, Swift, Java, or React Native or Xamarin, you can take advantage of everything we offer, from continuous integration to testing to release management and analytics.

mobile-center

Complete mobile lifecycle management

Mobile Center is mission control for your mobile apps, designed to let you focus on apps instead of ops. How exactly do we do that? Here’s a look at our Beacon Services:

  • Build automates cloud-based builds every time you commit code. You can even build iOS apps automatically, without a Mac.
  • Test execute automated UI tests across operating systems on thousands of real-world devices with every Build. Test supports a range of frameworks, including Appium, UITest, Calabash, and Espresso. These tests integrate directly into your CI pipeline, so you know the results of your code changes almost immediately.
  • Distribute automatically moves passing builds to beta testers or app stores.
  • Crashes and Analytics provide detailed, real-time data about your apps in the wild, so you can identify emerging trends and fix bugs and performance issues before they become problems.
  • Tables and Identity provide scalable backend authentication, sync, and storage solutions so you can focus on building your app, instead of the infrastructure around it.

What’s coming Next

We’re hard at work on all the features in our product roadmap. Future versions of Mobile Center will include expanded platform support for Universal Windows Platform and the Cordova framework, as well as push notifications and

Mobile Center is free during Preview. If you haven’t yet checked it out, sign up for free today.

keithKeith Ballinger, Director of Program Management for Mobile Developer Cloud Services

Keith was previously the VP of Product for Xamarin, which Microsoft acquired in March of 2016. Keith has a strong background in entrepreneurship, engineering, and product management, dating back to his time as a PM on the original .NET team. Previous to Xamarin, Keith was the Chief Architect at the YC-backed startup Standard Treasury, building an API-first bank. He’s the author of two books on programming, “.NET Web Service: Architecture and Implementation” and co-author of “Special Edition: Using ASP.”

 

New benefits for Visual Studio subscribers and Dev Essentials members

$
0
0

Today at the Visual Studio 2017 launch event we announced a set of new and updated benefits for our subscribers. If you missed any of the event or want to watch the on-demand trainings, check out the launch event page. If you’re a current Visual Studio subscriber or Dev Essentials program member activate your new benefits to get started right away.  To learn more about our developer subscriptions and programs visit the Visual Studio site.

We’re pleased to announce the following new and updated benefits:

Office365 Dev Account

Visual Studio Enterprise subscribers now get multi-user access with 25-seat Office365 developer account to create and test applications for Office365.

Opsgility on-demand training

Visual Studio Dev Essentials members now have 3-month subscription to one of the most comprehensive video libraries of Microsoft Azure curriculum available. After the 3-month period, members will be eligible to upgrade to a full Opsgility membership plan for 25% off, including full lab guides and more. For more information, see Opsgility’s blog.

Parasoft Virtualize/SOAtest Professional Desktop

Visual Studio Enterprise subscribers get a 6-month subscription with full access to Parasoft Virtualize/SOAtest Professional Desktop. These tools provide test automation to help ensure the security, reliability, and performance of transactions across modern business systems. Simulate and test the behavior of unavailable and evolving applications and systems. At the end of the 6-month period, users qualify for a 25% discount on the price of annual subscription.  For more information, check out Parasoft’s benefit page.

Pluralsight on-demand training

We heard your feedback and revamped the Pluralsight benefit this year!

Visual Studio Enterprise subscribers now have full access to Pluralsight’s entire course catalog and technology learning platform for 12 months, so you can dive into courses, learning paths and assessments on mobile, Web, and DevOps.  After 12 months, you’ll have access to 40 selected courses or you can purchase a full Pluralsight subscription with 25% discount.

Visual Studio Professional, Visual Studio MSDN Platforms, and Visual Studio Test Pro subscribers now have access to 40 selected courses on Pluralsight’s new learning platform. As before, we’ll update these trainings periodically over the course of the year to help keep your skills up-to-date with new technology. If you want to purchase a full Pluralsight subscription, you can also take advantage of the 25% discount.

In celebration of the anniversary, the first 1000 Visual Studio Enterprise subscribers who sign-up for the updated Pluralsight benefit and complete one course will get a special, limited edition 20th Anniversary Visual Studio t-shirt and a multi-purpose tool from Pluralsight.*

Redgate Data Tools

Visual Studio Enterprise subscribers now have Redgate Data Tools included with their subscription to extend DevOps processes to SQL Server and Azure SQL databases and increase your productivity when working with SQL! Develop, source control, and safely automate deployments of databases changes, right alongside your application changes using tools like ReadyRoll Core, SQL Prompt Core, and SQL Search. To learn more check out this post on Redgate Data Tools in Visual Studio 2017.

WhiteSource Bolt

Visual Studio Enterprise subscribers get a 6-month subscription with full access to WhiteSource Bolt, an open source management tool integrated with Microsoft Visual Studio Team Services and Team Foundation Server platforms. It’s a lightweight solution that helps developers identify problematic open source components earlier in the development process to increase the overall security and quality of applications. At the end of the 6-month period, users qualify for a 25% on the price of annual subscription to the extension. For more information, see WhiteSource’s blog.

Again, you can enjoy the videos from the launch and on-demand videos here and don’t forget to download Visual Studio 2017!

Log into the Visual Studio Subscriptions portal today to get your new benefits.

Let us know what you’d like to see by sharing your feedback, suggestions, thoughts, and ideas in the comments below!

nandiShawn Nandi, Senior Director, Partnerships and Planning

Shawn drives partnerships and business planning for the developer business at Microsoft as well as product marketing for developer programs and subscriptions including Visual Studio Subscriptions and Dev Essentials.

*Limit one t-shirt and tool per subscriber. This giveaway ends on May 1, 2017 or while supplies last, and is not redeemable for cash.  Taxes, if any, are the sole responsibility of the recipient.  Any gift returned as non-deliverable will not be re-sent. Please allow 6 – 8 weeks for shipment of your gift. Microsoft reserves the right to cancel, change, or suspend this offer at any time without notice.

Redgate Data Tools in Visual Studio 2017

$
0
0

Today during the Visual Studio launch event, we announced that we’ve partnered with Redgate to include Redgate Data Tools in Visual Studio 2017. Redgate Data Tools includes three components that extend DevOps practices to SQL Server and Azure SQL databases and increase your productivity while doing database development.

Here’s a brief overview of each of them:

  • ReadyRoll Core allows you to develop, source control, and safely automate deployments of database changes alongside application changes. ReadyRoll Core is available in the Enterprise edition of Visual Studio 2017.
  • SQL Prompt Core offers advanced code completion for SQL. SQL Prompt Core is available in the Enterprise edition of Visual Studio 2017.
  • SQL Search lets you find SQL objects fast and easily explore across databases. SQL Search is available in all editions of Visual Studio 2017.

You can install Redgate Data Tools using the Visual Studio Installer through the Data storage and processing workload or through the Individual components tab.

01_redgatedatatools

In this post, I’ll highlight how each of the Redgate Data Tools can improve your SQL database development.

Deploy database changes with confidence using ReadyRoll Core

Managing your database changes and incorporating them into your DevOps pipeline has always been difficult. Keeping track of what scripts need to be run and managing database states is often painful and error-prone. ReadyRoll Core simplifies this process by turning changes to your database schema into database migration scripts. These migration scripts can then be checked into source control and deployed to your other databases.

When you’re working in a ReadyRoll project and make changes to your development database using Visual Studio, SQL Server Management Studio, or another tool of choice, ReadyRoll Core will list the changes you’ve made and show you the differences.

02_redgatereadyrollcompare

Then, you can tell ReadyRoll Core to create a migration script based off these changes and add the new migration script to your project. You can modify the generated migration script yourself if needed.

03_readyrollmigrationscript

Once you’re done making changes, you can check these migration scripts into source control alongside any other updates you made to your application and share your work with your team.

Redgate also offers a ReadyRoll Visual Studio Team Services plugin that includes VSTS build and release tasks to safely deploy these migration scripts to other databases. This way, you can keep your database deployments consistent across multiple instances. You can set up VSTS to automate these database deployments to shift your database development further left and learn about potential problems sooner.

04_readyrollvsts

Check out Redgate technical lead David Simner’s video on Channel9 for an overview of how you can use ReadyRoll Core for your own database development.

Make writing SQL code a breeze with SQL Prompt Core

SQL Prompt Core is a suite of SQL code editing productivity enhancements that help you write SQL code efficiently. Most importantly, SQL Prompt Core offers advanced code completion that automatically suggests SQL commands, column names, and more as you type.

SQL Prompt Core is more than autocomplete though – it provides a myriad of other quality of life improvements that come together to simplify writing SQL code. Here are two of my favorite examples:

  • Expanding wildcards – hitting the tab button after the * in a SELECT * FROM statement will expand the wildcard.

05_sqlpromptwildcard

SQL Prompt will then replace the * with all available columns in that table.

06_sqlpromptwildcardexpanded

If you don’t want all columns, you can highlight the * instead and start typing to select the subset of columns that you need.

07_sqlpromptwildcardselect

  • Suggestions for joins – SQL Prompt can complete join statements for you automatically and suggest possible joins based on foreign key relationships or column similarities as you type.

08_sqlpromptjoin

Search quickly across SQL databases with SQL Search

Finding SQL objects can be tricky and time-consuming when dealing with complex databases or when you’re unfamiliar with a database. SQL Search saves you time by quickly finding fragments of SQL in tables, views, stored procedures, and more.

09_sqlsearch

If you’re a database developer, you may have run into scenarios where you need to change a column and all stored procedures that reference that column. SQL Search makes this a cinch. Simply search for the column name and SQL Search will display all references to it. Double clicking an occurrence navigates you to it in the SQL Server Object Explorer, where you can make the appropriate changes.

Use Redgate Data Tools today in Visual Studio 2017

We’re excited to include Redgate Data Tools in Visual Studio 2017 to make your database development easier and more efficient. Download Visual Studio 2017 to try them out, and feel free to share your feedback with Redgate. Check out Redgate’s SQL Toolbelt as well if you’re interested in their other offering.

jeff-gaoJeff Gao, Program Manager, Visual Studio Platform

Jeff is a Program Manager on the Visual Studio Platform team focused on improving the product acquisition experience.

Run To Click Debugging in Visual Studio 2017

$
0
0

You have many options when navigating through your code with the debugger in Visual Studio including setting breakpoints, stepping, and using Run to Cursor. In Visual Studio 2017 we have introduced Run to Click, a new way to more easily debug your code – point and click style. You no longer need to set temporary breakpoints or step several times to execute your code and stop on the line you want. You now can get all the benefits of Run to Cursor (Ctrl+Shift+F10) without searching through the context menu or taking your hand off the mouse for a two handed shortcut combination. Run to Click works while debugging in any programming language in VS including C#, VB, C++, and Python.

Point and Click Debugging

When stopped at a break state under the debugger, a light green “run execution to here” glyph subtly appears next to a line of code where your mouse is hovered.

RunToClickICONOff

Move your mouse to the glyph and click the button. Your code will run and stop on that line the next time it is hit in your code path.

RunToClickICONOn

This is especially useful if you naturally have one hand on the mouse while debugging to inspect variables with data tips in your code. You can quickly Run to Click a line of code, inspect the variables on that line, and then continue debugging all while keeping focus and attention in that location. Run to Click between the same method, different methods, and within loops!

RunToClickBasic

Special Notes

Remember that Run to Click will run the execution of your application that you are debugging until that line of code is reached.

  • If you click on a line of code that won’t be hit, the application with finish executing.
  • If you click on a line of code that resumes the application waiting for additional user input, once that code path is triggered by the input, you will break where you performed the Run to Click.
  • If you Run to Click on a line and the execution path triggers a breakpoint, the debugger will stop at any breakpoints in the path. When you hit “continue” (F5) execution will continue and you will stop on the line where you triggered run to click (just like if you had set a breakpoint on that line).

You can turn off Run to Click from the checkbox Debug/Options/Enable Run to Click.

Wrap Up

Run to Click improves your productivity by helping you get to the code you want to inspect faster. Try it out by downloading Visual Studio now (https://www.visualstudio.com/downloads/) and let me know what your think! We are always wanting your feedback so drop your questions and comments in the section below, or tweet @VS_Debugger.

Announcing .NET Core Tools 1.0

$
0
0

Today, we are releasing .NET Core Tools 1.0. It’s an exciting day and an important milestone in the .NET Core journey. The tools are supported on Windows, macOS and Linux. You can use them at the command-line, with VS Code or as part of Visual Studio 2017.

You can download the new .NET Core tools at .NET Core Downloads, for using .NET Core on the command-line.

The tools are also integrated into Visual Studio 2017, also releasing today. You need to select the .NET Core cross-platform development workload when you install Visual Studio.

You can read more about the Visual Studio 2017 release in Announcing Visual Studio 2017 General Availability… and more. Also check out Visual Studio 2017: Productivity, Performance, and Partners.

Visual Studio for Mac also includes support for .NET Core. Visual Studio for Mac Preview 4 is also releasing today.

Visual Studio Code works great with .NET Core, too. The C# extension is a must-have for .NET Core development, and is typically suggested to you as soon as you open a C# or csproj file. You can also try a more experimental extension that offers csproj intellisense.

New versions of the .NET Languages are included in Visual Studio. You can now use C# 7, Visual Basic 15 and F# 4.1. C# 7 is already supported with .NET Core (just by using the latest Roslyn!). We expect F# support in the first half of 2017 and then VB support after that.

.NET Core 1.0.4 and .NET Core 1.1.1 were also released today. Both releases include a set of reliability updates to improve the quality of .NET Core. You can download the .NET Core Runtime releases via our .NET Core Runtimes download page. If you are looking for the .NET Core SDK to get the latest tools, try the .NET Core SDK download page.

A Quick Tour of .NET Core

There are some great experiences and features that we’ve built over the last several months, a big step forward over the tools that were previously available for .NET Core.

You can take the tour of .NET Core by watching What’s new in .NET Core and Visual Studio 2017. It’s a great video, showing you a lot of the new .NET Core experience in just 8 minutes.

We are encouraging everyone doing .NET Core development to move to Visual Studio 2017, including migrating from project.json to csproj. We will not be supporting csproj and MSBuild for .NET Core in Visual Studio 2015.

Let’s take a look at some of the key improvements, starting with the command-line experience, moving to Docker and then into Visual Studio.

Command-line experience

You can very quickly create and run a .NET Core app on your favorite OS. Let’s see what the experience looks like on Windows, creating and launching a .NET Core 1.0 console app. You need the .NET Core SDK installed for this experience.

C:\>dotnet new console -o myappThe template "Console Application" created successfully.C:\>cd myappC:\myapp>dotnet restore  Restoring packages for C:\myapp\myapp.csproj...C:\myapp>dotnet runHello World!

Docker experience

You can see a similar command-line experience using Docker. In this example, I’m creating and launching an ASP.NET Core 1.1 MVC site using a .NET Core SDK Linux Docker image with Docker for Windows (I prefer “Stable channel”). You just need Docker for Windows installed, configured to Linux containers for this experience. You do not need .NET Core installed. You can do the same thing with .NET Core and Windows containers.

C:\Users\rich>docker run -p 8000:80 -e "ASPNETCORE_URLS=http://+:80" -it --rm microsoft/dotnetroot@9ea6f0be8ef7:/# dotnet new mvc -o mvc --framework netcoreapp1.1The template "ASP.NET Core Web App" created successfully.root@9ea6f0be8ef7:/# cd mvcroot@9ea6f0be8ef7:/mvc# dotnet restore  Restoring packages for /mvc/mvc.csproj...root@9ea6f0be8ef7:/mvc# dotnet runHosting environment: ProductionContent root path: /mvcNow listening on: http://+:80Application started. Press Ctrl+C to shut down.

I then navigated the web browser to http://localhost:8000 and saw the following page load, instantly. I still find this configuration amazing, loading ASP.NET sites from a Linux container, on Windows. Try it; it works!

mvc-app-template

 

Visual Studio Templates

There are new templates that you can use in Visual Studio 2017, for .NET Core, ASP.NET Core and .NET Standard. You can see them located in the new project dialog, displayed in the following screenshot.

new-project

 

You should use the ASP.NET Core template if you want to build web sites or services, use the .NET Core template for tools or .NET Core experimentation and use the .NET Standard (Class Library) templates for libraries that you want to use with multiple apps of different application types (for example, .NET Core, .NET Framework and Xamarin). There are also platform-specific library templates (for example, .NET Core (Class Library) and .NET Framework (Class Library)) that enable you want to take advantage of APIs available in those respective platforms and not in .NET Standard.

The ASP.NET Core “new project” experience includes a version picker, making it easy to select the version of ASP.NET Core that you want. The selection controls both the .NET Core target framework and ASP.NET Core package versions. See the experience in the following screenshot.

new-aspnetcore-project

Editing csproj files in Visual Studio

With .NET Core projects, you can edit project files “live” while the project is loaded. This option is available by right-clicking on the project file and selecting Edit [project-name].csproj. You can add or remove package references and other aspects of the project file. It seems magic compared to the existing Visual Studio “Unload Project” experience. See the new experience in the following screenshot.

edit-project-file

.NET Standard Project-to-Project References

.NET Standard libraries are a new project type that you can use in nearly all .NET project types. They are the replacement for and a big step forward over Portable Class Libraries. You can now reference .NET Standard projects and NuGet packages from .NET Framework, Xamarin and Universal Windows Apps. The image below shows a .NET Framework console app with a project dependency on a .NET Standard project, which has dependencies on two popular NuGet packages.

netstandard-p2p

Migrating project.json Projects to csproj

We’re now encouraging everyone to migrate to MSBuild and csproj from project.json. As I stated above, we will not be supporting any of the new .NET Core tools in Visual Studio 2015. We also won’t be updating the Visual Studio 2015 experience.

There are two experiences for migrating project.json projects. You can migrate project.json files on the command-line, with the dotnet migrate command. The command will produce a .csproj project file that you can use with the latest .NET Core tools or open in Visual Studio 2017.

You can also open .xproj files in Visual Studio 2017. Visual Studio will migrate your .xproj files for you, producing a .csproj file that you can use going forward for use with both Visual Studio 2017 and with the latest tools at the command-line.

Visual Studio for Mac

Visual Studio for Mac is an IDE for mobile-first, cloud-first workloads with support for building iOS, Android, and Mac apps in C# and F# with Xamarin, as well as web and server apps with .NET Core and ASP.NET Core. You’ll find the same Roslyn-powered compiler, IntelliSense code completion, and refactoring experience you would expect from a Visual Studio IDE. And, since Visual Studio for Mac uses the same MSBuild solution and project format as Visual Studio, developers working on Mac and Windows can share projects across Mac and Windows transparently.

Documentation

.NET Core documentation and ASP.NET Core documentation have been updated to document the .NET Core Tools 1.0 and Visual Studio 2017 experience.

We still have a lot of work to do to improve and expand the docs and will endeavor to do just that. Like the .NET Core product, the .NET Core docs are open source. Please don’t hesitate to file issues and improve the docs with a pull request.

What’s in the release

Let’s first define the release. We released the following today:

  • .NET Core Tools 1.0.0 – only ships in Visual Studio 2017
  • .NET Core Tools 1.0.1 – available in the SDK and via Docker SDK images
  • .NET Core Runtime 1.0.4 – available as a Runtime install or Docker image and in the .NET Core SDK
  • .NET Core Runtime 1.1.1 – available as a Runtime install or Docker image and in the .NET Core SDK

We didn’t intend to release two versions of the SDK on the same day. That would be silly! Instead, there is a good story! Support for Fedora 24 and OpenSUSE 42.1 Linux distros was added to the .NET Core SDK 1.0.1 and is missing from the .NET Core SDK 1.0.0 release. The short version of the story is that we missed an internally-set date to update the .NET Core 1.0.0 release for these two distros, so were forced to create the 1.0.1 in order to make Fedora and OpenSUSE developers happy.

We also updated both .NET Core 1.0 and 1.1, with patch releases. Both releases contain a variety of reliability fixes and no new features.

You can also read the .NET Core Tools 1.0 release notes to learn more about the changes.

Docker

The latest .NET Core runtime and tools are available in the following Docker SDK images:

  • 1.0.4-sdk
  • 1.0.4-sdk-nanoserver
  • 1.1.1-sdk
  • 1.1.1-sdk-nanoserver

You can also use the latest .NET Core runtime images, which are recommended for production deployments since they are much smaller than the SDK images:

  • 1.0.4-runtime
  • 1.0.4-runtime-nanoserver
  • 1.1.1-runtime
  • 1.1.1-runtime-nanoserver

We adopted changes to the Docker tag scheme we use at microsoft/dotnet. The “-projectjson” and “-msbuild” differentiation is now gone. The tags are significantly simpler, as you can see from the tags above.

We have changed the tags multiple times over the last few months. These changes were required to properly represent the changing nature of the product. We believe that we will no longer need to make significant tag scheme changes going forward and that we are now at “steady state”. Thanks to all .NET Core Docker users for your patience!

As previously stated, we will no longer be producing any project.json-based Docker images.

Closing

Thanks to everyone that helped to get .NET Core Tools to 1.0. There are so many people to thank that helped the product get to today and we thank you for your patience as we iterated on our tools. We hope that you are happy with the product, specifically the 1.0 tools. Sincerely, thank you!

I looked back in our blog history and found the first mention of .NET Core and related tools on this blog. Enjoy that. Certainly, much of what I wrote there remains true. There are some DNX-isms that we’d still like to bring back, too.

.NET Core 1.x is just the start of this new platform. We’re very excited to see what you do with it. We’ll listen closely to your feedback and look forward to working closely with many of you on GitHub.

Again, thanks so much for using the product and for helping us build it.

Note: You can always find our released builds documented in release notes.

Binary Compatibility and Pain-free Upgrade: Why Moving to Visual Studio 2017 is almost “too easy”

$
0
0

Visual Studio 2017 is a major leap forward in terms of C++ functionality compared with VS 2015. We hope the new release will delight you in your day-to-day job as soon as you can upgrade.

This blog post focuses on the steps needed to upgrade from Visual Studio 2015 to 2017. As promised in our BUILD 2016 talk “6 reasons to move your C++ code to Visual Studio 2015” (click to jump to 1h:04), in this release, our team made it distinctively easy to move your codebase to Visual Studio 2017. And here are the four reasons why.

Get MSVC 2015.3 toolset via the Visual Studio 2017 Installer

Loading your C++ projects targeting an older C++ toolset inside Visual Studio 2017 does not change your project. This allows you to load it back in the previous IDE in case you need to go back, or you still have teammates that are not fully upgraded to 2017. To make it zero-impact to load your existing projects inside Visual Studio 2017, just like in previous releases, the IDE supports project round-tripping.

In previous releases, you had to install both the latest and the old Visual Studio side-by-side for the latest IDE to be able to build your projects. Visual Studio 2017 allows you now to install the MSVC 2015 (v140) toolset directly, making it convenient to bootstrap a new machine as well as reducing the disk footprint of the installation by only installing the needed toolset and not the whole VS 2015 IDE bits.

installerplatform-toolset-selection

VC Runtime in MSVC 2017 is binary compatible with 2015

There are a lot of improvements in the C++ compilers and libraries in this release of Visual Studio that will entice you to move to Visual Studio 2017’s latest toolset (v141) – new standard conformance features, improved codegen, faster build throughput. You may be worried however that your third-party library dependencies are not ready for such a jump. We often hear from customers that this is the number one migration blocker to a new C++ toolset (whether they consume dependencies as binaries or even directly as source).

With the latest MSVC toolset however, you don’t need to worry about this at all. That’s simply because the latest VC Runtime is binary compatible with the VS 2015’s VC Runtime. In other words, if you have a library built with the v140 platform toolset, that binary and your code consuming it will continue to work even if you built your code with the v141 MSVC toolset.

Any binaries built with MSVC v141 toolset will link against the 140 version of the VC Runtime. The VCRedist is only backward compatible, so you will need to redistribute the latest VCRedist 140 available in VS 2017 with your app.

C:\src\ClockApp\Debug>dumpbin ClockApp.exe /IMPORTS | findstr .dll
mfc140ud.dll
KERNEL32.dll
USER32.dll
GDI32.dll
COMCTL32.dll
OLEAUT32.dll
gdiplus.dll
VCRUNTIME140D.dll
ucrtbased.dll

Hundreds of C++ libraries on Vcpkg are now available for Visual Studio 2017

If you haven’t heard about VCPkg yet, no worries – it’s an open-source project from Microsoft to help simplify the acquisition and building of open-source libraries on Windows. If you did use Vcpkg with Visual Studio 2015 for one or more of your open-source dependencies, then you will be happy to learn that these libraries (close to 180 at the time of this writing) are now compiled using MSVC v141 toolset and available for consumption in Visual Studio 2017 projects.

Because v141 is binary compatible with v140, all your existing packages will continue to work without recompilation; however, we do recommend recompiling when you can to enjoy the new compiler optimizations we’ve added to v141!

MSVC compiler version revs to 19.1 (from 19.0 in Visual Studio 2015)

Last but not least, the compiler part of the MSVC v141 toolset is revving only as a minor version in Visual Studio 2017. Note that we continue to make important progress towards C++ conformance as well as improved codegen. As these improvements are made, certain changes to make your code standards-conformant may be required on your side. All these changes are documented in our C++ conformance improvements in Visual Studio 2017 topic on docs.microsoft.com.

compiler-version

Call to action

Visual Studio 2017 comes with many new capabilities that we want you to take advantage of as soon as possible. That’s why we’ve made it probably “too easy” to migrate your projects from Visual Studio 2015. Try it today and let us know what you think!

Before you go, also check out the rest of our announcement posts for VS 2017 launch event, download Visual Studio 2017 and share your feedback with us either in the comments below or on developercommunity.visualstudio.com


Check for const correctness with the C++ Core Guidelines Checker

$
0
0

This blog post was written by Sunny Chatterjee and Andrew Pardoe

The C++ Core Guidelines focus on simple ways that you can improve the correctness and safety of your code. We introduced the C++ Core Guidelines Checkers to help automate enforcement of the C++ Core Guidelines in your code.

One of the easiest and most important changes you can make to your code is to mark immutable data as `const`. It’s not us and the Core Guidelines who believe that: see this fantastic blog post from Bruce Dawson about the benefits of adding const to your code. (He also mentions that on MSVC removingconst can make some code faster, but that reflects a compiler bug that we are fixing thanks to Bruce’s feedback.) Because const is so important we’ve added a new C++ Core Guidelines checker about const correctness.

We created four new rules in the C++ Core Guidelines checker that cover all of the rules in the currently contained in the Constants and Immutability section of the C++ Core Guidelines. We didn’t actually add these checks for all of the rules—we implemented a check for rule #2, “By default, make member functions const” but removed it because it raised too many false positives on valid code—see below for details. Also, the tool will not warn that you could mark a stub function as const because we recognize that you’ll probably just remove the const later when you implement the function.

Const checker rules

Con.1: By default, make objects immutable

This rule is a general idea that states that we should always mark objects as const unless we’re writing to them. We cover this rule through more specific implementation of subsequent rules in our checker.

Con.3: By default, pass pointers and references to consts

Our checker enforces this rule. You can pass a pointer or reference to a non-const object, but if you do so, the caller shall assume their argument will be modified. If the function does not modify the object, we should mark the object as const to make the intent explicit.

Advantages of this check
  • Makes the intention of the callee explicit to the caller about whether or not an argument will be modified.
  • Future modifications in function body doesn’t change the expectations of the caller.

We use certain heuristics to reduce noise –

  • We don’t ask to mark arguments that are passed by value or the pointer arguments themselves as const.
  • We don’t ask unused arguments be marked as const since we don’t have enough information about their intent.
  • We don’t enforce this on virtual functions as the author may want to follow a specific derived behavior.
Examples
// Expect 26461: The input pointer argument b in function f7 can be marked as const
int f7(const int *a, int *b)
{
    return *a + *b;
}

struct S0
{
    virtual void m();
};

// Expect 26461 on 'p' but don't report on unnamed parameter.
S0 f8(int *p, int *)
{
    (p == nullptr);

    // Don't report on return UDT.
    return{};
}

Con.4: Use const to define objects with values that do not change after construction

Our checker enforces this rule. It’s similar to con.3, but applies to all variables and not just pointer or reference arguments. It helps prevent surprise from unexpected changes in object values.

Advantages of this check are pretty similar to con.3
  • Makes it easier to reason about code if we know if an object is immutable at the point of declaration.
  • Future modification of the code cannot change the immutable property of the object.

Like con.3, we use certain heuristics to reduce noise –

  • We avoid suggesting const usage on un-used variables – they rarely add any value.
  • We don’t suggest to mark the pointer or reference themselves as const, since users mostly care about the data that they point to.
Examples
int f5()
{
    // Expect 26496: Variable m is assigned only once, use const.
    int m = 5;
    const int a = 10;
    if (m > a)
        return m;
    return a;
}

Con.5: Use constexpr for values that can be computed at compile time and F.4: If a function may have to be evaluated at compile time, declare it constexpr

Our checker encourages programmers to declare functions that may have to be evaluated at compile time as constexpr.

Examples
// Expect 26497: could be marked constexpr if compile-time evaluation is desired
int f1(int a, int b)
{
    return a + b;
}

constexpr int f2(int a, int b)
{
    return a + b;
}

void f3()
{
   // Compile-time evaluation
    constexpr int m = f2(10, 20);
    
    // Expect 26498: This function call f2 can use constexpr if compile-time evaluation is desired.
    const int m2 = f2(10, 20);
}

Rule 2: the one we didn’t include

Con.2: By default, make member functions const

In the initial prototype, we included this check. However, after running this check on some real-world code, we decided to remove it from the shipping version of the checker. We didn’t want programmers to mark their member functions as const when they were logically non-const. For the intrepid, there’s a good discussion of logical and physical constness on the isocpp.org web page: https://isocpp.org/wiki/faq/const-correctness#logical-vs-physical-state.

Here’s an example where the member function is logically non-const. You could mark member function bar as const, e.g., void bar() const { *data_  = GetData(); }. While it doesn’t alter the pointer data_ itself, it could alter the memory pointed to by data_. Thus this function is not logically const.

class Test
{
public:
    // This method should be marked “const” since it doesn’t change the logical state of the object.
    MyData foo() const { return *data_; } 
    
    // This method shouldn’t be blindly marked as “const”. It doesn’t alter the pointer data_ itself.
    // However, it alters the state of memory pointed-to by it.
    void bar() const { *data_ = GetData(); }

private:
    // data_ is a pointer to a “MyData” object
    MyData *data_;
};

 

Send us your feedback!

As always, we welcome your feedback. For problems, let us know via the Report a Problem option, either from the installer or the Visual Studio IDE itself.For suggestions, let us know through UserVoice. And you can always reach us through e-mail at cppcorecheck@microsoft.com.

C++ Code Analysis improvements in Visual Studio 2017 RTM

$
0
0

This blog post was written by Sunny Chatterjee and Andrew Pardoe

Visual Studio 2017 RTM release includes the C++ Core Guidelines Checkers as part of Code Analysis tools for C/C++. We have gotten a ton of useful feedback on the early previews of these checks through our external customers. Thank you for engaging with us and giving us great feedback. This feedback helped us improve the quality of the final released version of  C++ Core Guidelines checks. Some of these improvements are explained in detail in this blog post about const correctness.

Besides shipping the C++ Core Guidelines checker, we also fixed  more than 150 bugs in our core analysis engine. All of these fixes are available in the Visual Studio 2017 RTM. As a result, developers should expect to see accuracy improvements in C++ code analysis. Download Visual Studio 2017 today and let us know what you think of the improvements to code analysis!

Here are some notable fixes that were frequently reported. These fixes were made as a result of direct external feedback.

  1. False positive during dereferencing null-pointer checks (C6011)
    1. https://connect.microsoft.com/VisualStudio/feedback/details/1645136/c6011-occurs-const-cast-to-const-members-after-if-statement
    2. https://connect.microsoft.com/VisualStudio/feedback/details/1981990/inappropriate-analyzer-warning-when-casting-to-reference-in-constructor
    3. http://connect.microsoft.com/VisualStudio/feedback/details/2556936/static-analysis-c6011-warning-false-positive-in-short-circuited-conditionals
    4. https://connect.microsoft.com/VisualStudio/feedback/details/2750342/static-analysis-false-positive-when-using-a-bracketed-ternary-operator
    5. https://connect.microsoft.com/VisualStudio/feedback/details/3078125/false-positive-dereferencing-null-pointer-warning-when-taking-a-named-reference
    6. https://connect.microsoft.com/VisualStudio/feedback/details/3082362/static-analysis-false-positive-when-comparing-ptr-nullptr-vs-simply-ptr
  2. False positive during uninitialized memory checks (C6001)
    1. http://connect.microsoft.com/VisualStudio/feedback/details/1858404/false-positive-in-c-static-analysis-c6001
    2. https://connect.microsoft.com/VisualStudio/feedback/details/2607792/erroneous-report-from-sal
  3. False positive around inconsistent annotation checking (C28252 and C28253)
    1. http://connect.microsoft.com/VisualStudio/feedback/details/2053524/wsutil-compiler-version-1-0095-creates-a-file-that-triggers-warnings-c28252-and-c28253-even-when-compiled-with-w0
  4. False positive during annotation parsing (C28285)
    1. http://connect.microsoft.com/VisualStudio/feedback/details/2358718/sal-analysis-warning-c28285-when-using-local-static-variables
  5. False positive during strict type match checking (C28039)
    1. https://connect.microsoft.com/VisualStudio/feedback/details/2573764/sal-false-positive-on-strict-type-match
  6. False positive when checking for local vs. global declarations on enum classes (C6244)
    1. https://connect.microsoft.com/VisualStudio/feedback/details/3101212/incorrect-static-analysis-warning-of-enum-class-enumerators-hiding-other-declarations
  7. MSBuild error MSB4018 during code analysis runs: The “MergeNativeCodeAnalysis” task failed unexpectedly
    1. https://connect.microsoft.com/VisualStudio/feedback/details/3113987/error-msb4018-the-mergenativecodeanalysis-task-failed-unexpectedly

Send us your feedback!

We hope that the C++ Code Analysis tools in Visual Studio 2017 help improve your code and make you more productive. We’d like to thank you all and as always, we welcome your feedback. Please tell us what you like and dislike about our current toolset and what you’d like to see in future releases.

For problems, let us know via the Report a Problem option, either from the installer or the Visual Studio IDE itself. And you can always reach us through e-mail at cppcorecheck@microsoft.com.

Visual Studio 2017 for C++ developers – you will love it

$
0
0

Here on the C++ product team at Microsoft, our mission is to make the lives of every C++ developer on the planet better. We try to do that via various avenues, including but not limited to,

  1. by enthusiastically participating with the C++ Standards committee to help the language itself be better for every C++ developer in the world,
  2. by providing the Microsoft Visual C++ (MSVC) Compiler, which we aim to be the best compiler choice on Windows for targeting Windows,
  3. by continuing to enhance the C++ extension for Visual Studio Code, which is useful to all C++ developers regardless of the platform they do their development on, and finally,
  4. by improving Visual Studio, which is the most fully-featured IDE on the planet.

It is that last investment, Visual Studio, which I wanted to focus on in this blog post. Specifically, we’ll focus on the latest release, Visual Studio 2017, which we are confident you are going to love! We have blogged previously about the value in VS2017, so this post will just be a summary pointing to older posts we wrote that are now all updated for the final RTM release. First, we’ll summarize the new installation experience, then how it is pain-free to upgrade, then the new capability to open any folder of code (including CMake-based solutions), then how Visual Studio is for everyone, and finally what is new for productivity and performance.

Faster installation and your hard disk will thank you

When you install VS2017, you’ll encounter a new screen that organizes your installation options by what we call “Workloads”, so you can pick the one(s) that you care about while ignoring the others. The workloads most relevant to C++ developers are: Universal Windows Platform development, Desktop Development with C++, Game development with C++, Mobile development with C++, and Linux development with C++.

This is exciting because it makes it easy for you to pick exactly what you want to have installed, without the bits that you don’t, e.g. no ASP.NET bits if you are not also a web developer. The obvious benefits are that you end up with less visual noise while you are using the product, less use of your disk space, and you can get everything installed faster! For example, if you only pick the Linux development with C++ workload, you can get it all installed in under 6 minutes on a typical developer machine. The Desktop Development with C++, which most Visual Studio C++ users use today, takes less than 12 minutes. It is worth mentioning that what you are seeing is not only a reorganization at the UI level, but a complete rewrite of our installer.

vc2017_installing

Pain-free upgrade

Before joining Microsoft, when I was a customer, I was always excited about a new Visual Studio version, but also apprehensive about “upgrading” my projects and dealing with a few new errors/warnings on my codebase that worked fine in the “older” Visual Studio.

If you are currently using VS2013 or older, and you initially want everything to continue working as it was, there is good news for you: just use the older compiler and libraries toolset that is already on your disk with the latest Visual Studio. If you are already using VS2015, even on a clean machine (instead of side-by-side), you’ll notice in the new VS2017 acquisition experience described in the previous section that there is an option to install just the toolset that shipped with VS2015 (rather than the whole VS2015 IDE), so that you can continue using the older toolset while enjoying the benefits of the latest VS2017 IDE!

Of course one of the many reasons you are moving to VS2017 is to use the latest toolset with build throughput improvements, faster generated code, and the standards conformance goodness of the latest compiler and libraries so you will upgrade to the latest toolset, which by the way is binary compatible with the one that ships with VS2015. You can further take advantage of the standard version compiler switches and the permissive- switch that help you ease into the conformance at your own pace. For any language conformance changes you encounter, you’ll find we put significant effort in making our documentation great for that eventuality.

Finally, for any open source 3rd party libraries you depend on, our new package management solution vcpkg with its growing repository of libraries has your back. And if you have adopted that already for your VS2015 projects, you’ll find they automatically work when you move to VS2017.

vc2017_props

Just point Visual Studio to your code

In the previous section, we touched on upgrading projects where the assumption was that you already have Visual Studio projects, or more accurately MSBuild-based projects. What about those of you who use other C++ build systems, such as makefiles or CMake? Until this VS release, you needed to create VS projects and add your code to that, or somehow generate a VS project from your current build system. Now, you can just “Open Folder” with any code directly in Visual Studio 2017! Depending on your build system you will automatically get some IntelliSense, navigation, building, and debugging capabilities… and you can improve those experiences by further configuring and adding information in JSON text files. For those of you who have chosen CMake, you will love the CMake-support in Visual Studio, just point VS to your CMakeLists.txt files and enjoy.

vc2017_cmake

Use Visual Studio for all your projects and target platforms

When we talk to some of you, we know you keep an older version of Visual Studio side-by-side with the latest. As we already established earlier in this post, there should be no reason for you to use the old IDE, just use the older toolset in that project with the latest Visual Studio 2017 IDE.

Some of you use VS for one project, but not for your other projects. In the past, there were many valid reasons for that, such as you didn’t want to convert your nmake-based (or other non-MSBuild-based) codebase to MSBuild; as established earlier, now you can just point Visual Studio 2017 to any folder of C++ code and work with it.

Another reason we hear is that folks use Visual Studio to target Windows, and other IDEs to target other platforms. Again, there is no need for that now. As touched on earlier when talking about workloads, from Visual Studio you can target Android and iOS and Linux. Implicit in that statement is that you should also not be thinking about Visual Studio as the IDE that only pairs with the Microsoft compiler, instead you can use any C++ compiler you want with Visual Studio.

Some of you may prefer using editors instead of IDEs, and that is fine, check out the Visual Studio Code editor. And when you need some heavy debugging, you can easily switch to Visual Studio for that purpose (by launching the EXE as a project or attaching to the running process) and then switch back to your editor of choice.

In short, if you have chosen Windows as your development environment, regardless of what platform you target or what kind of project you are working on, Visual Studio 2017 is there to support you as a C++ developer.

vc2017_workloads

Be more productive than ever

The blog post until now has been essentially about how fast and easy it is to install the product, and how many options you have for getting your codebase in Visual Studio and make sure it builds. You are now ready to do real development, and for many of you, productivity is the main reason you use Visual Studio. It saves you a lot of time during your everyday development in what we call the tight inner loop of editing, navigating and debugging code. If you are not on VS2015 yet, the amount of productivity features we added to that VS2015 release will have you drooling and VS2017 takes that even further.

Visual Studio 2017 includes enhancements to existing features and new features such as: Find All References re-designed for larger searches, Introducing Go To the successor to Navigate To, C++ IntelliSense Improvements – Predictive IntelliSense & Filtering, Bing Developer Assistant with C++ support, C++ Edit and Continue improvements, enhancements to the Memory diag tool, enhancements to debug visualizers, the new Exception Helper, Run to Click, Attach to Process Filter and Reattach, .editorconfig, and new Git features. You can also learn about more VS productivity improvements beyond just for C++ code.

Beyond that kind of productivity, the team focused on the fundamentals of performance in the IDE. When you build during the inner loop, where all you want is for the build to complete quickly after the edits you have just made, so that you can run/test/debug your code, the linker will save you time with 2x to 4x faster links with the on-by-default and improved fastlink option (and watch the ch9 video). Beyond build throughput, you’ll find that VS starts up faster, loads solutions faster (video), IntelliSense is faster and generally working in the IDE will truly feel faster.

vc2017_speedex

 

Smile and take credit

And last but not least, you helped us build this release with your suggestions and bug reports – thank you! In the last year, we have completed 37 C++ UserVoice items, fixed 417 bugs reported through Connect, and fixed an additional 352 feedback items. Please keep the reports coming, you can report any issues you have with Visual Studio by going to Help > Send Feedback > Report A Problem, and we take your comments very seriously – thank you again.

vc2017_feedback

In Closing

We hope you’ll love using this release as much as we liked producing it. As you can see there are so many new capabilities to take advantage of, and the goal of this summary blog post is to collect all the relevant links in one place for those of you that haven’t been following in the past year – the real content is behind the links, so scroll back up and get clicking folks.

Announcing F# 4.1 and the Visual F# Tools for Visual Studio 2017

$
0
0

Announcing F# 4.1 and the Visual F# Tools for Visual Studio 2017

Last year, we announced F# 4.1 via a Peek in F# 4.1. As a recap, we mentioned:

  • Alpha support for .NET Core and .NET Standard
  • Language features for F# 4.1
  • A big update to the Visual F# tools for Visual Studio 2017 (called Visual Studio "15" at the time)

We’re tremendously excited to share updates in those areas.

.NET Core and .NET Standard Support for F# 4.1

Corresponding with the release of Visual Studio 2017 is preview support for using F# on .NET Core 1.0-1.1 and .NET Standard 1.6. Although this is in preview, certain pieces are RC-quality. Specifically, the following are in RC:

  • FSharp.Core as a .NET Standard NuGet package
  • The F# compiler running on .NET Core as a .NET Core console application
  • F# support in the .NET CLI and the .NET Core SDK

However, the following are not supported at this time, but will be supported in a future Visual Studio 2017 update:

  • F# support for .NET Core Visual Studio tooling
  • F# Interactive (FSI) running on .NET Core as a .NET Core console application

That means you can create an F# application on .NET Core via dotnet new in the .NET CLI, have it run on all platforms, and create NuGet packages based on .NET Standard 1.6 with F# today. Doing so is quite easy:

  1. Install .NET Core either through Visual Studio 2017 (Windows) or your the platform installer for your OS.

  2. Create a new folder with a meaningful name.

  3. Open a command line in that folder and invoke dotnet new.

    dotnet new console -lang f#

  4. Use dotnet run to compile and run your application.

    dotnet run

  5. Use dotnet publish to create a publish directory with your app and its dependencies.

    dotnet publish -o pubish-directory

  6. You can run the published .dll file with the dotnet command:

    dotnet path-to-dll/MyApp.dll

There are two important things to note about using F# on .NET Core today:

  1. Type Providers and fully-fledged Code Quotation compilers are not supported.
  2. Excluding (1), all other F# code runs on .NET Core 1.1 on all platforms.

.NET Core and .NET Standard are both moving towards a 2.0 release scheduled for later this year. The most significant aspect of this is bringing back the large amount of APIs which were not available in 1.0, along with reverting breaking changes to certain APIs such as Reflection. This will unblock support for Type Providers and Code Quotations, but there is still an open question about System.Reflection.Emit. This is needed to support Generative Type Providers and fully-fledged Code Quotation evaluators/compilers.

We are also aiming to land full FSI support and Visual Studio tooling support for F# on .NET Core in the .NET Standard/.NET Core 2.0 time frame.

To learn more about Type Provider support, see this issue. To learn more about FSI on .NET Core, see this RFC. To track F# support on the Roslyn Project System, see this Pull Request.

Lastly, we would like to extend a very special thanks to Enrico Sada for building out support for F# in the .NET CLI and .NET Core SDK since the early days of .NET Core. This support was built entirely by Enrico and other members of the F# community in partnership with Microsoft, which is a testament to how incredible the F# OSS community is.

F# 4.1 is Released

In the previous F# 4.1 blog post, we described and provided examples out all of the language features shipping in F# 4.1. We’re really excited about F# 4.1 because in addition to being driven by a community RFC process, F# 4.1 had many community contributions. To recap, here are those features:

  • Struct tuples which inter-operate with C# tuples
  • Struct annotations for Records (by Will Smith)
  • Struct annotations for Single-case Discriminated Unions
  • fixed keyword support
  • Underscores in numeric literals (by Avi Avni)
  • Caller info argument attributes (by Lincoln Atkinson and Avi Avni)
  • Result type and some basic Result functions (by Oskar Gewalli)
  • Mutually referential types and modules within the same file
  • Implicit "Module" syntax on modules which share the same name as a type
  • Byref returns, which support consuming C# ref-returning methods
  • Error message improvements (by Steffen Forkmann, Isaac Abraham, Libo Zeng, Gauthier Segay, Richard Minerich, and others)

Since then, the following have also shipped with F# 4.1:

Here are some examples of those features:

IReadonlyCollection<‘T> Implemented in list<‘T>

This is a very straightforward feature: F# lists now implement IReadonlyCollection<'T>.

Optional and DefaultParameterValue Attribute Support

The Optional and DefaultParameterValue attributes are used in F# for C#/VB interop so that C#/VB callers can see arguments as optional. Prior to F# 4.1, the F# compiler did not compile DefaultParameterValue correctly. Additionally, F# was unable to consume arguments defined in F# assemblies with the Optional attribute. These are now possible with F# 4.1. Here’s an example:

Additional Option Module Functions

New functions were added to the Option module in F# 4.1, providing a few different utilities.

Statically Resolved Type Parameter Improvements

Performance improvements and two major bug fixes for Statically Resolved Type Parameters (SRTP) were introduced. Prior to F# 4.1, there was a case where some usages of SRTP were capable of compiling, but shouldn’t have been. Additionally, it was possible to infer type names in SRTP syntax, but not actually specify the type name.

Compiler Performance, FSharp.Core Performance, and Error Message Improvements

Lastly, the community involvement for compiler performance, FSharp.Core performance, and Error Message improvements kept going since the initial F# 4.1 post. For example, improvements in predictions were made:

This effort by the community, particularly in predicting correct names for things, is crucial for F# adoption. We’re extremely excited this for F# 4.1 and look forward to future improvements. We’re incredibly thankful for the efforts of the F# community here.

Struct Single-case Discriminated Unions

Annotating single-case Discriminated Unions is fully supported and stable with F# 4.1. Here’s an example:

This allows you to do the same kind of typesafe domain modeling with Discriminated Unions you’ve done in the past, but this time with structs rather than reference types as the backing data type.

Struct Multicase Discriminated Unions

Annotating multi-case Discriminated Unions as structs is now also supported, with the following design caveats:

  • Each case must have a unique name
  • The type cannot be recursively defined

This feature is currently buggy and should not be used in production code. You can track the progress with this issue.

Using F# 4.1

You can use F# 4.1 with the following tools:

  • .NET Core and the .NET CLI
  • Visual Studio 2017
  • Visual Studio for Mac
  • Visual Studio Code with the Ionide plugin suite

If you’re interested in the design of the features in F# 4.1, you can see each RFC for F# 4.1 here.

Updates to the Visual F# Tools in Visual Studio 2017

Visual Studio 2017 ships with significant changes in the Visual F# Tools. We’re excited to share what’s new and what to look forward to.

What’s New

In short, the Visual F# Tools now use Roslyn Workspaces, which is the same IDE infrastructure that C# and Visual Basic use. This has enabled the F# community to provide many new features, leading to a much better UI experience that is closer in parity to C# and Visual Basic. Many of these features were ported over from the Visual F# Power Tools (VFPT for short), and are now "in-box". They include:

  • Find All References

https://msdnshared.blob.core.windows.net/media/2017/03/find-all-refs.png

  • Navigation Bar Support

https://msdnshared.blob.core.windows.net/media/2017/03/navbar.png

  • Syntax and Type Colorization in Hovers and Signature Help
  • IntelliSense Filters and Glyph Improvements
  • Fuzzy matching on names in IntelliSense

https://msdnshared.blob.core.windows.net/media/2017/03/colored-hovers.png

https://msdnshared.blob.core.windows.net/media/2017/03/intellisense2.png

https://msdnshared.blob.core.windows.net/media/2017/03/colorized-sig-help.png

  • Better colorization in the editor
  • Code Indentation Improvements
  • Breakpoint Resolution Improvements
  • Go to Definition Improvements
  • The ability to trigger Lightbulbs for various code fixes

https://msdnshared.blob.core.windows.net/media/2017/03/find-all-refs.png

https://msdnshared.blob.core.windows.net/media/2017/03/open-namespace.png

  • Semantic highlighting of tokens
  • Support in the new "Go to All" feature (ctrl+T)

https://msdnshared.blob.core.windows.net/media/2017/03/go-to-all.png

  • Roslyn-style Inline Rename
  • Many more improvements to other features

Note: Inline Rename is temporarily disabled due to a last-minute bug which caused the IDE to crash. The fix has already been completed and the feature will work in a future VS 2017 update.

To see the full list of features added, see the F# section of the Visual Studio 2017 Release Notes. As you can see, there were a tremendous amount of fixes and new features added by the community. This is new for the Visual F# Tools, and something we hope to see more of in the future.

Known Issues

There are a number of known issues which are either already fixed and pending a release, or are on the immediate roadmap for getting fixed. You can see this list here. Our highest priority is to address these issues. Items which are closed have already been completed.

See VS 2017 Status and Roadmap for F# and the Visual F# Tools for more context on what we have planned.

Model for Updates

Because of the rapid nature with which the Visual F# Tools are evolving, we are introducing a new model for releases of the Visual F# Tools:

Stable and thoroughly tested bits will ship in-box with Visual Studio 2017. Updates here will correlate with updates to Visual Studio 2017 itself.

There will be nightly, signed VSIXs for those who wish to try out the latest advancements in tooling. Think of these as builds of the latest master branch for Visual F#, signed so that you don’t have to do anything crazy to get them working correctly on your machine. These will not be as well-tested as those which will update alongside Visual Studio 2017, but will come with new features.

We’re still working out the final kinks in getting nightly signed builds working. We’ll draft a new blog post with instructions on where to get this VSIX, and how to install it, when we finish up testing to make sure everything works.

Historical Context

Prior to Visual Studio 2017, tooling for F# effectively lived in its own universe. Over time, especially with the release of Visual Studio 2015 and Roslyn, this has had a cost on the number of features available "in-box". The VFPT filled some gaps when compared to C# tooling features, but not everybody used the extension, and as the UI for C# and Visual Basic evolved, F# tooling was not able to take advantage of those UI advancements. Additionally, adding and improving features in the Visual F# tools or VFPT required knowledge of various Visual Studio SDK APIs. The barrier to entry for open source developers to add value was very high.

Late last year, we "flipped the switch" on our work to sit the F# language service atop Roslyn Workspaces. As a result, we introduced a vast number of bugs and regressions. The F# community worked tirelessly to address those issues, and along the way, added a significant amount of new features and improvements to existing features.

The work also hasn’t stopped, nor has it slowed. The F# community has been relentlessly adding more features and improvements to existing features at a pace that has been almost impossible to keep up with. We’re extremely excited about this release, and even more so about forthcoming updates which will address multiple regressions, make vast memory usage improvements, and introduce even more new features. The Visual F# Tools are evolving at a pace that they have never evolved before, all thanks to the amazing F# community.

A Thank You to the F# Community

Many people from across the F# community have contributed to F# 4.1 and the Visual F# Tools for Visual Studio 2017. We acknowledge all of them and extend our warmest thanks to them and their immense efforts in making F# so amazing.

The focus of this post is on F# 4.1 and the Visual F# Tools for Visual Studio 2017. These are but part of the overall F# ecosystem, which includes components such as FSharp.Data, Ionide, the Xamarin tooling for F#, and hundreds of F# community libraries and tools. While it is difficult to thank everyone by name, we would like to mention some specific individuals who have made many contributions to the F# 4.1 language design and the Visual F# Tools. Please note this doesn’t include contributions to the other components in the F# ecosystem. We have also inevitably forgotten some specific people, and please feel free mention them with a thank you in the comments below, or by linking to your favorite pull requests and comments.

Steffen Forkman has contributed over 100 Pull Requests in the past year, spearheading the improvements to F# 4.1 error message improvements. He has improved compiler performance, cleaned up code, increased our test coverage, and added Lightbulb suggestions in Visual Studio 2017. Moreover, he’s been a leader in the F# open source community, leading development for tools like FAKE and Paket to create a fantastic open source ecosystem. To those who know him, it should be no surprise that he’s been such a prolific contributor.

Vasily Kirichenko has contributed the majority of new features in the Visual Studio 2017 tools. Just a casual glance at the open Pull Requsts in the VisualFSharp repository will make it clear that Vasily is a truly special person in the F# community. He continues to implement entire features end-to-end, diving deep into the codebase to improve complex and incredibly difficult code. Frankly, we’re lucky to have him as a part of the F# community.

Enrico Sada is another prolific contributor who, as previously mentioned, created the .NET Core SDK bindings and .NET CLI support for F#. He has partnered with us and with the teams who own those areas to succeed there. But that’s not all. He made many significant contributions on multiple occasions to improve our test suite and CI system, which is the kind of important work that few people are willing to do. And of course, anyone who works with him knows that he’s one of the kindest individuals on the planet.

Ahn-Dung Phan has been an F# developer and active tooling and open source developer for a long time. As the original author of the Visual F# Power Tools extension (VFPT), he is incredibly knowledgeable about F# tooling in Visual Studio. As the Visual F# Tools moved from RC to RTW, he fixed endless bugs and ported over features from VFPT, including improving those features in the process. One such feature which is particularly involved in the Implement Interface analyzer and code fix, which any .NET developer knows is incredibly useful when working with interfaces. We’re incredibly happy to have accepted his many contributions.

Libo Zeng has been quite active in improving the F# compiler codebase. Libo has worked with the community in compiler error message improvements, and he has contributed multiple performance improvements to FSharp.Core and the F# compiler. Libo’s Pull Requests for performance improvements are always backed with benchmark results, making it obvious and easy to take his changes.

Avi Avni is an active member of the F# community and mentor through the F# Software Foundation’s mentorship program. He also contributed the Underscores in Numeric Literals feature for F# 4.1 end-to-end. For anyone who has attempted to contribute compiler features, you will know that this is no small task. He also worked with Lincoln Atkinson to implement Caller Info Argument Attributes in F# 4.1. He has also been working on an even bigger feature to recognize when a recursive function is not tail-recursive, which may end up in F# 4.2. This advanced feature will surely take time to get right, but we’re excited that he’s so involved here, and we look forward to what can be done in the future.

Will Smith is another active member of the F# community who contributed the Struct Records features for F# 4.1 in its entirety. Will technically works for Microsoft now, but he contributed the feature as an F# community member in his own time. He is an incredibly kind, intelligent, and helpful member of the F# community and demonstrated amazing patience as his language feature was getting rounds of feedback from us over a long period of time. We’re super happy to have his contributions, and we’re sure the greater F# community is as well.

Kurt Schelfthout, as mentioned above, also implemented an F# 4.1 language feature from end-to-end. He has also been active in F# language design and managing the F# Language Suggestions and F# Language RFC repositories.

Chet Husk has been active in F# language evolution and performed the large majority of work in moving F# Language Suggestions from UserVoice over to GitHub. This is a someone lengthy process, but because of his work, all of F# evolution is now done on GitHub.

Saul Rennison began contributing to the Visual F# Tools not too long ago, but his contributions have already had an impact. In addition to being active in code reviews and reporting issues, he contributed multiple fixes to the F# project system and MSBuild integration. He also contributed type colorization for FSI when run as a console app, giving us a taste of what may yet come for F# Interactive. We’re very excited that he’s so engaged in the Visual F# Tools.

Gustavo Leon made contributions deep in the F# compiler, including in the Constraint Solver (an area few dare to venture), to speed up compile times for code which makes heavy use of overload resolution. His work also improved Statically Resolved Type Parameters, and he was key in identifying tricky bugs there. He is also active in F# language evolution, contributing his ideas and feedback to F# language suggestions. His expertise is very much appreciated.

Jared Hester has been a member of the F# OSS community for quite some time, working on the Visual F# Power Tools and Ionide. In addition to extensive and detailed bug reports for IDE features, he contributed additions to Untyped Parse Tree traversal code which were necessary to implement IDE features. This kind of work is very difficult and detail-oriented, and we’re very grateful to have his contributions. He’s also very active in the F# language evolution process, providing numerous insights and feedback.

Marcus Griep has been one of the more active members of the F# OSS community in getting F# ecosystem support working on .NET Core and .NET Standard. This is crucial work which helps move us out of a "chicken and egg" situation. Additionally, he’s helped managed to F# Language Design and F# RFC repositories.

Gauthier Segay has been very active in the F# ecosystem, both in contributions and creating issues. There’s a good chance that you’ve seen him commenting on a bug somewhere. He was a contributor to the Visual F# Power Tools, and we hope to continue to see his enthusiasm for F# and the Visual F# Tools in the future.

Lastly, we would like to thank the F# Software Foundation for helping cultivate a growing F# community. Their mentorship program is one of their most exciting offerings in helping people learn F#, and the focus on community growth and empowerment has lead to a surge in new members over the past two years. Anybody can join for free, so we encourage all F# developers and anyone interested in learning F# to join. By joining, you automatically get access to all the benefits of the FSSF, including the mentorship program. We’re grateful to partner with such a special organization.

Thank you!

– Visual F# Team

Helping new customers get oriented, keeping our content up-to-date

$
0
0

We’re always working to keep our content as fresh and accurate as possible.

We have some new content that we’d like to highlight and hopefully have you spread the word.

On-boarding content for newcomers

We recently wrote a set of overview topics to help orient visitors new to Team Services and TFS. These topics provide a framework for newbies to understand how our supported set of platforms, services, clients, and Marketplace extensions fit together to support software development teams.

You can view these topics here:

Collaborate content

We’ve recently introduced a new area to highlight content that spans features and scenarios that support team collaboration. This content supports team collaboration across the traditional hubs of Code, Work, Build & Release, and Test. Which is why we’ve named this area Collaborate.

Under the Collaborate section, you’ll find content that supports sharing information, getting notification, and supporting team chat. Here’s a few of the new topics in this area:

Content updates

We also want to take this opportunity to point out the Content updates topic that we update with the release of new features every three weeks. This topic provides an index to release notes, blog posts, and content related to DevOps working with Team Services and TFS.

We started back in March 2016 and are now working are way through 2017.

We work to highlight topics that are brand new–usually covering new features or scenarios and significantly updated topics.

We appreciate your feedback and ratings

Your feedback and insights can help us better focus on where we should focus to address missing scenarios or to simply correct a typo or error.

As you review a topic, please rate it and leave a note of what works well or what’s missing.

We thank you,

Kathryn

Viewing all 10804 articles
Browse latest View live


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