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

Temporary Fix: Logitech BRIO Camera broken on Windows 10 Insiders 15042

$
0
0

I just updated my Windows 10 to Insiders Fast Build 15042, and suddenly my glorious new Logitech BRIO 4k webcam doesn't work! Well, it's all beta software, but it turns out the issue is with something in the Logitech INF files for their drivers. I'm assuming they'll figure it out, but the nutshell is that the first install works, but the driver gets messed up on the upgrade. You can't just pull out the camera and put it in again, you need to DELETE the drivers and have them redownloaded by Windows Update/Device Manager.

Here's a temporary fix (either until Logitech fixes it and it shows up in Windows Update or you take another Windows 10 upgrade):

Logitech BRIO stops working on Windows 10 Insiders UPGRADE

Go to device manager and right click the device and Uninstall Driver. If it has the checkbox "Delete this driver" then check it. That's required. IF (like me) you don't have that checkbox (I'm not sure why I don't) then you'll need to delete the Logitech driver from the DriverStore. You can do it manually but it's tricky and messy and hard.

We need to delete this driver so it gets reinstalled cleanly.

Driver 2/31/2017

Unplug your webcam. Then, go get the latest copy of DriverStoreExplorer from here https://github.com/lostindark/DriverStoreExplorer/releases and delete JUST this one driver.

Using the Driver Store Explorer

Now, go back to Device Manager and plug in your Logitech BRIO webcam. Note you'll get some super old 2006 driver. Right click the BRIO in Imaging Devices and Update Driver. This will get you BACK to your original state. You still have a driver that will break when you next take a "major" Windows update or Insiders Build, but at least you have a solution until it magically gets fixed.

Yay!


Sponsor: Big thanks to Progress! They recently published a comprehensive whitepaper on The State of C#, discussing the history of C#, what’s new in C# 7 and whether C# is still a viable language. Check it out!


© 2016 Scott Hanselman. All rights reserved.
     

MSTest V2 – Now and Ahead

$
0
0

MSTest V2 has crossed 100K downloads. It has been but just a few months since we shipped it on NuGet. Over this course of time, you have reported issues and given us feedback, and we have tried to address them as fast as we can, refreshing the bits at a feverish pace. We are now at a stage where, as of v1.1.11 MSTest V2 has shed the pre-release tag.
Thank you for your support.

mstestv2_100k

The following posts detail the MSTest V2 evolution until now:
Announcing MSTest Framework support for .NET Core RC2 / ASP.NET Core RC2
Taking the MSTest Framework forward with “MSTest V2”
Announcing MSTest V2 Framework support for .NET Core 1.0 RTM

I will summarize it again:
MSTest V2 sets the direction for how we intend to evolve the MSTest framework. The evolution will be informed by your feedback. Here are a few you told us about that we have addressed:
(1) Uniform app-platform support – this is a converged implementation that offers uniform app-platform support across desktop, Store, and UWP, ASP.NET Core 1.0, and .NET Core 1.0.
(2) Uniform DataRow support, for all MSTest based test projects.
(3) Ability to place the TestCategory attribute at the level of a class or assembly.
(4) Uniform, single end-user extensibility mechanism.
(5) Delivered as a NuGet package.
(6) Supported in the Create Unit Tests wizard (Visual Studio 2017 Preview 4 onwards)
(7) Supported in the Create IntelliTest wizard (Visual Studio 2017 Preview 4 onwards)
(8) Supported in the relevant in-box unit test project templates (Visual Studio 2017 Preview 4 onwards)
(9) Over the past several refreshes of the bits on NuGet, we also havefixedseveralissuesyoureported (these links call out a few, but there are many more we fixed).

So, what is ahead?
Thank you for asking. We are working on your ask here: make MSTest framework open source.
We want to unlock collaborative innovation! We are getting ready to go open source.
You would have already seen that mentioned in the VSTest OSS announcement post, and in our VSTS features timeline.

In the meantime, keep your feedback coming. We are listening.

TFS 2017 Management Pack

Happy 25th Birthday MFC!

$
0
0

February 26th marks the 25th anniversary for the Microsoft Foundation Classes (MFC). Join us in wishing MFC a big Happy Birthday!

img_20170227_125200-sm

MFC saw the light of day on February 26th 1992 and it has been a very large part of the Microsoft C++ legacy ever since. While Visual C++ 1.0 would only ship one year later (with MFC 2.0), in 1992 MFC 1.0 was laying the foundation as part of the Microsoft C/C++ 7.0 product. Here’s a snippet of that announcement that we dusted off from the Microsoft archives:

SANTA CLARA, Calif. — Feb.26, 1992
Microsoft Debuts C/C++ 7.0 Development System for Windows 3.1
High-Performance Object Technology Produces Smallest, Fastest Code for Windows 3.0, 3.1 Applications

“Microsoft C/C++ has been crafted with one goal in mind — to help developers build the best C/C++ applications possible for Microsoft Windows,” said Bill Gates, Microsoft chairman and CEO. “The combination of a great C++ compiler and the Microsoft Foundation Class framework gives programmers the benefits of object orientation for Windows with the production code quality they expect from Microsoft.”

[…]
C/C++ 7.0 provides a number of new object-oriented technologies for building Windows-based applications:

[…]
Microsoft Foundation Classes provide objects for Windows, with more than 60 C++ classes that abstract the functionality of the Windows Application Programming Interface (API). The entire Windows API is supported. There are classes for the Windows graphics system, GDI; Object Linking and Embedding (OLE) and menus. The framework allows easy migration from the procedural programming methodology of C and the Windows API to the object-oriented approach of C++. Developers can add object-oriented code while retaining the ability to call any Windows API function directly at any time; a programmer can take any existing C application for Windows and add new functionality without having to rewrite the application from scratch.

In addition, the foundation classes simplify Windows message processing and other details the programmers must otherwise implement manually. The foundation classes include extensive diagnostics. They have undergone rigorous tuning and optimization to yield very fast execution speeds and minimal memory requirements.

[…]
C++ source code is included for all foundation classes. More than 20,000 lines of sample code are provided in 18 significant Windows-based applications to demonstrate every aspect of the foundation classes and programming for Windows, including use of OLE.

Win32 APIs have been evolving with Windows, release after release. Through the years, MFC has stayed true to the principles outlined above by Bill Gates: to provide a production-quality object-oriented way of doing Windows programming in C++. When Win32 development slowed down in recent years and made room for more modern UI frameworks, so did MFC development. Nevertheless, we’re thrilled to see so many developers being productive with MFC today.

The Microsoft C++ team is very proud of the MFC legacy and fully committed to have your MFC apps, old or new, continue to rock on any Windows desktop and in the Windows Store through the Desktop Bridge. Thank you to all of you that have shared with us ideas, bug reports and code over the years. A special thanks to all the Microsoft and BCGSoft team members, present or past, that through the years have contributed to the MFC library, Resource Editor, MFC Class Wizard and other MFC-related features in Visual Studio. It’s been a great journey and we look forward to our next MFC adventures!

That’s our story, what’s yours? To share your story about MFC and/or Visual C++, find us on twitter at @visualc and don’t forget to use hashtag #MyVSStory

mfc-icons

The Microsoft C++ Team

The week in .NET – On .NET with Eric Mellino, Happy Birthday from Scott Hunter, OzCode

$
0
0

Previous posts:

On .NET

In last week’s episode, Kendra interviewed Eric Mellino to talk about his CrazyCore game and game engine:

This week, Phillip Carter will be on the show to walk an F# beginner and experienced C# dev (me) through the Tour of F#. We’ll stream live on Channel 9. We’ll take questions on Gitter’s dotnet/home channel and on Twitter. Please use the #onnet tag. It’s OK to start sending us questions in advance if you can’t do it live during the shows.

Happy Birthday .NET!

A couple weeks ago we got together with the Microsoft Alumni Network and threw a big .NET 15th birthday bash with former .NET team members & rock stars. We caught up with Scott Hunter, Director of Program Management for .NET, to share his excitement on past, present and future of .NET. Great times!

Tool of the week: OzCode

OzCode is a great Visual Studio debugging extension that makes debugging Linq considerably easier. Drill down into expressions, analyze the data set at any spot in a fluent call chain, analyze complex Boolean expressions, predict exceptions, and much, much more.

Debugging Linq with OzCode

User group meeting of the week: making toys in F# in NYC

The NYC F# .NET user group has a hackathon tonight at 6:30PM where you’ll explore toy making in F# with Steve Goguen.

Update to last week’s package of the week

In last week’s post, I showed NeinLinq, a way to use custom code with Linq in a more general way than is possible out of the box. The next day, I got a message from Damien Guard about a better way to achieve the same thing, that he developed with David Fowler in 2009. Check out his blog post from back then.

.NET

ASP.NET

C#

F#

New F# Language Suggestions:

Check out F# Weekly for more great content from the F# community.

Xamarin

UWP

Azure

Data

Games

And this is it for this week!

Contribute to the week in .NET

As always, this weekly post couldn’t exist without community contributions, and I’d like to thank all those who sent links and tips. The F# section is provided by Phillip Carter, the gaming section by Stacey Haffner, and the Xamarin section by Dan Rigby, and the UWP section by Michael Crump.

You can participate too. Did you write a great blog post, or just read one? Do you want everyone to know about an amazing new contribution or a useful library? Did you make or play a great game built on .NET?
We’d love to hear from you, and feature your contributions on future posts:

This week’s post (and future posts) also contains news I first read on The ASP.NET Community Standup, on Weekly Xamarin, on F# weekly, and on Chris Alcock’s The Morning Brew.

Team Services February Extensions Roundup

$
0
0

February is coming to a close and it has been the best month on record for the Team Services Extension ecosystem. We’ve set new records for customer installs and our community of publishers continues to grow. One of my favorite parts of this job is the relationship I get to build with our publishers. Seeing their investment in the platform and helping them be successful is awesome. This month, I want to highlight two extensions that aren’t new to the Marketplace, but are backed by publishers who continue to invest in them.

LaunchDarklyld_logo_blue

See it in the Marketplace: https://marketplace.visualstudio.com/items?itemName=launchdarkly.launchdarkly-extension

Managing your release pipeline with Team Services Release Definitions is one thing, using LaunchDarkly’s feature flags to manage the end to end release lifecycle of your features is a whole new experience. Leverage percentage rollouts and target granular user segments all with a friendly feature flag UI that anyone in your organization can use. To hear it in their own words, read more about this 5-star extension from LaunchDarkly’s blog post.

How it all works

The key to unlocking the full potential of this integration lies in LaunchDarkly’s extension of the Work Item Form. This is where you manage which feature flags correspond to your work, right from your work items.

ld1

LaunchDarkly Work Item Form Extension with Feature Flags

You will also find a new release task you can add to your Release Definitions where you can choose the environment you’re releasing to, set whether you want the feature flags associated with this release on or off, and control the percentage rollout you would like for those flags.

ld2

‘LaunchDarkly Rollout’ Release Task Configuration

To use all this goodness you’ll need a service endpoint connected to a LaunchDarkly account. For all of the details and walkthrough of how to set up this extension check out LaunchDarkly’s Team Services documentation.

Redgate ReadyRoll

redgate-readyroll

 

See it in the Marketplace: https://marketplace.visualstudio.com/items?itemName=redgatesoftware.redgate-readyroll

This is another 5-star extension and its aim is to eliminate the pain of building and deploying database changes. It does this through numerically ordered SQL migration scripts that take your schema from one version to the next. It also comes equipped with a suite of tools for previewing all of the changes before you deploy so you can rest easy.

Summary of Changes

As part of your build results you will see a summary of which migration scripts are pending deployment and which objects will be changed.

database_deployment_preview

Database Deployment Preview

Database Diff Report and Deployment Script

Also as part of the deployment preview your build results will include new tabs showing a database diff report as well as a look at the script that will be deployed to your database.

rr1

Database Diff Report

rr2

Database Script Preview

The extension also adds two new tasks

  • Deploy ReadyRoll Database Package – This deploy task will take the package produced by building a ReadyRoll project and deploy it to a target database.
  • Run tSQLt tests – This test task will run any tSQLt tests present in a database and output the results as a jUnit compatible file.

Redgate has a good tutorial with all of the details and steps you need to take to get off the ground and moving with this SQL deployment must have, check it out here: https://documentation.red-gate.com/display/RR1/Tutorial%3A+Visual+Studio+Team+Services

Are you using (or building) an extension you think should be featured here?

I’ll be on the lookout for extensions to feature in the future, so if you’d like to see yours (or someone else’s) here, then let me know on Twitter!

@JoeB_in_NC

Visual Studio Marketplace – Publisher Pivot

$
0
0

Visual Studio Marketplace is the exclusive destination for discovering extensions for Visual Studio IDE, Team Services and Code, and purchasing subscriptions. While consumers of the Marketplace benefit greatly from it, we want our publishers to have a great experience too. After all, it is they who make the Marketplace rich with real world extensions and integrations.

This post gives you a sneak peek at the set of publisher centric enhancements that we plan to bring to Marketplace in Q2 CY 2017. As always, the timelines and designs shared in this post are subject to change.

Publisher Hub

As the publisher of a VSTS extension, you want to know how your extension in performing. Publisher Hub would provide you all such context and more:

  • Insights about how your extension is being acquired, such as uptake around VSTS & TFS, conversion funnel from impressions to page views to installs
  • Information w.r.t. uninstalls of the extension along with related reasoning
  • Be able to analyze how the extension is being reviewed/rated & then drive actions right from this hub
  • And also, be able to download this data for your offline processing as need be

Hub

We are likely to enable this for paid extensions first.

Support for Extension Versions

Our publishers shared the following cases with us:

  • We wish to test the v2 of my extension while its v1 is being used by customers in production
  • I wish to patch my extension and try it out with a limited set of customers before sharing it more widely

For both above, a versioning story becomes essential where the in-development extension can be privately shared with selective account(s) to solicit feedback and aid testing. Hence we plan to enable a versioning story for extensions (Team Services and TFS only) in coming months. Likely on the following lines:

version

Q&A Support

User reviews on the extensions today is being overloaded by consumers for questions and support as opposed to just reviews. Since rating is mandatory in such situation, this can negatively affect the extension rating overall and in turn the publisher. Hence a Q&A section is being added to support dialogue between publishers and their consumers across all extension targets. Appropriate notifications would be sent when a question is posted or answered. qa

Announcing Azure Stack TP3 And Why You Should Care About It

$
0
0

Today we’re announcing the availability of Azure Stack Technical Preview 3. Azure Stack is the vessel we’re using to bring Azure technologies in a way designed to run on-premises. Azure Stack is aimed at rounding out a cloud strategy by providing additional choice and flexibility when using Azure.

You can easily factor Azure Stack into your plans when building applications. The tools you use, and DevOps processes you follow in Azure can be transferred to Azure Stack. You can use Azure Stack to help you solve the requirements applications may face around issues of regulation, data latency, data sensitivity, or customization. Think of Azure Stack as an extension of Azure, that enables organizations to run a true hybrid cloud, with some parts running behind the firewall, and some potentially running in Azure.

The reason we’re posting on the Visual Studio blog is that Visual Studio, Visual Studio Team Services and Team Foundation Server all include support for Azure Stack. There’s a unified deployment experience with across Azure and Azure Stack and you can set up a hybrid CI/CD pipeline wherever you need to run your app. Our goal is to help you invest in your skills, processes, and applications in a way that is transferable to any Azure cloud without too much complexity.

If you’re interested in learning more about Azure Stack, take a look at our Azure Stack page.

Take a look at the TP3 announcements, play with the product and give us your feedback on what you see.

Andrew Zeller, Senior Product Marketing Manager, Azure Stack

Andrew started working at Microsoft with the Windows Server and System Center products. For the last few years, he has been working on bringing cloud to datacenters.


Exploring the new DevOps - Azure Command Line Interface 2.0 (CLI)

$
0
0

Azure CLI 2.0I'm a huge fan of the command line, and sometimes I feel like Windows people are missing out on the power of text mode. Fortunately, today Windows 10 has bash (via Ubuntu on Windows 10), PowerShell, and "classic" CMD. I use all three, myself.

Five years ago I started managing my Azure cloud web apps using the Azure CLI. I've been a huge fan of it ever since. It was written in node.js, it worked the same everywhere, and it got the job done.

Fast forward to today and the Azure team just announced a complete Azure CLI re-write, and now 2.0 is out, today. Initially I was concerned it had been re-written and didn't understand the philosophy behind it. But I understand it now. While it works on Windows (my daily driver) it's architecturally aligned with Mac and (mostly, IMHO) Linux users. It also supports new thinking around a modern command line with support for things like JMESPath, a query language for JSON. It works well and clearly with the usual suspects of course, like grep, jq, cut, etc. It's easily installed with pip, or you just get Python 3.5.x and then just "pip install --user azure-cli."

Linux people (feel free to check the script) can just do this curl, but it's also in apt-get, of course.

curl -L https://aka.ms/InstallAzureCli | bash

NOTE: Since I already have the older Azure CLI 1.0 on my machine, it's useful to note that these two CLIs can live on the same machine. The new one is "az" and the older is "azure," so no problems there.

Or, for those of you who run individual Docker containers for your tools (or if you're just wanting to explore) you can

docker run -v ${HOME}:/root -it azuresdk/azure-cli-python:

Then I just "az login" and I'm off! Here I'll query my subscriptions:

C:\Users\scott\Desktop>  az account list --output table
Name CloudName Sub State IsDefault
------------------------------------------- ----------- --- ------- -----------
3-Month Free Trial AzureCloud 0f3 Enabled
Pay-As-You-Go AzureCloud 34c Enabled
Windows Azure MSDN AzureCloud ffb Enabled True

At this point, it's already feeling familiar. It's "az noun verb" and there's an optional --output parameter. If I don't include --output by default I'll get JSON...which I can then query with JMESPath if I'd like. (Those of us who are older may be having a little XML/XPath/XQuery déjà vu)

I can use JSON, TSV, tables, and even "colorized json" or JSONC.

C:\Users\scott\Desktop> az appservice plan list --output table   
AppServicePlanName GeoRegion Kind Location Status
-------------------- ---------------- ------ ---------------- --------
Default1 North Central US app North Central US Ready
Default1 Southeast Asia app Southeast Asia Ready
Default1 West Europe app West Europe Ready
DefaultServerFarm West US app West US Ready
myEchoHostingPlan North Central US app North Central US Ready

I can make and manage basically anything. Here I'll make a new App Service Plan and put two web apps in it, all managed in a group:

az group create -n MyResourceGroup
# Create an Azure AppService that we can use to host multiple web apps 
az appservice plan create -n MyAppServicePlan -g MyResourceGroup

# Create two web apps within the appservice (note: name param must be a unique DNS entry)
az appservice web create -n MyWebApp43432 -g MyResourceGroup --plan MyAppServicePlan
az appservice web create -n MyWEbApp43433 -g MyResourceGroup --plan MyAppServicePlan

You might be thinking this looks like PowerShell. Why not use PowerShell? Remember this isn't for Windows primarily. There's a ton of DevOps happening in Python on Linux/Mac and this fits very nicely into that. For those of us (myself included) who are PowerShell fans, PowerShell has massive and complete Azure Support. Of course, while the bash folks will need to use JMESPath to simulate passing objects around, PowerShell can keep on keeping on. There's a command line for everyone.

It’s easy to get started with the CLI at http://aka.ms/CLI and learn about the command line with docs and samples. Check out topics like installing and updating the CLI, working with Virtual Machines, creating a complete Linux environment including VMs, Scale Sets, Storage, and network, and deploying Azure Web Apps– and let them know what you think at azfeedback@microsoft.com. Also, as always, the Azure CLI 2.0 is open source and on GitHub.


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!



© 2016 Scott Hanselman. All rights reserved.
     

Xamarin University Presents: Getting Started with Xamarin for Visual Studio

$
0
0

Our mobile devices and wearables shape how we communicate and find information. Luckily, Visual Studio – including the latest version, Visual Studio 2017, launching on March 7– gives you all the tools you need to start building apps for the ever-growing connected device ecosystem. Whether you’re building for enterprise users or everyday consumers, Visual Studio’s built-in Xamarin mobile support allows you to bring your .NET skills and knowledge from the desktop, web, and Windows world to new platforms, including popular mobile devices and wearables.

Jumpstart your mobile development skills with Xamarin University’s free five-part webinar series, airing every Thursday in March. Xamarin University’s industry-leading mobile development curriculum includes 80+ courses from beginner to advanced, developed and delivered by industry experts for developers just like you. With this popular webinar series, you’ll get the step-by-step training you need to start building amazing mobile apps.

Register for the free “Xamarin University Presents” webinar series

Beginning on March 2nd, join us for one or all sessions and bring your questions. Xamarin University instructors and experts will be on hand for live Q & A.

  • Thursday, March 2nd, 9am PT: Intro to Xamarin for Visual Studio: Native iOS, Android, and Windows apps in C#– Xamarin University Guest Lecturer James Montemagno will show you how to create, debug, test and deploy apps for iOS, Android and Windows while maximizing the shared code between all platforms.
  • Thursday, March 9th, 9 am PT: Building your First Xamarin.Forms App– Adrian Stevens, Xamarin University curriculum manager, will walk you through building your first Xamarin.Forms application, including using a common set of controls to define a fully native UI for Android, iOS, and Windows.
  • Thursday, March 16th, 9am PT: Building Your First Android App– Xamarin University professor Judy McNeil will show you how to design native Android UIs with the Android Designer, add behavior, and deploy apps to Android emulators and devices – straight from Visual Studio.
  • Thursday, March 23rd, 9 am PT: Building Your First iOS App– Chris van Wyk, another expert Xamarin University professor, will dive into a typical Xamarin.iOS project, explore the MVC architecture, create screens with the Visual Studio iOS Designer, and test Xamarin.iOS apps on a simulator and real devices.
  • Thursday, March 30th, 9 am PT: Connected Mobile Apps with Microsoft Azure
    James Montemagno will teach you how to integrate various Azure App services into your Xamarin apps, including: cloud data storage, offline sync, push notifications, user authentication, and data and intelligence.

Sign up today.

We’re looking forward to seeing you soon and helping you build apps users love – now and in the future.

For even more hands-on guidance, don’t miss the Visual Studio 2017 launch event March 7-8 for keynotes, demos, and a full day of virtual training from Xamarin University!

Mark Smith, Principal Program Manager

Mark leads Xamarin University, where he helps developers learn how to utilize their .NET skills to build amazing mobile apps for Android, iOS, Windows and beyond. Prior to his career at Microsoft and Xamarin (acquired by Microsoft), Mark ran a consulting business, specializing in custom development

Accelerated Continuous Testing with Test Impact Analysis – Part 1

$
0
0

Continuous Testing in DevOps

In older testing strategies, large software changes were tested as a complete product after a so called “release to QA”, running almost all tests just before release. We know the downsides to that. On the other hand, DevOps is all about a fast development to delivery pipeline and continuous delivery of value. Releases are happening in days and weeks – not in years as they used to. In such a DevOps world, there is not going to be any continuous delivery if you do not have your testing right. Just as we have CI Continuous Integration (CI) and Continuous Delivery (CD), DevOps calls for Continuous Testing (CT).

Test Impact Analysis (TIA)

Can such continuous testing also be fast? Can it still be comprehensive? Should you just run all your tests all the time? At smaller scales running through all your test suites and emitting out copious test results may be tolerable, but this not scale. At a larger scale, for testing cycles to be fast, a more sophisticated view of what is comprehensive testing becomes essential. “Relevance” becomes critical – only run the most relevant tests and only report the relevant results.

The Test Impact Analysis (TIA) feature specifically enables this – TIA is all about incremental validation by automatic test selection. For a given code commit entering the pipeline TIA will select and run only the relevant tests required to validate that commit. Thus, that test run is going to complete faster, if there is a failure you will get to know about it faster, and because it is all scoped by relevance, analysis will be faster as well.

tia
TIA does come with a little overhead of its own (in order to build and maintain the mapping), and so is best applied only in cases where a test run itself takes a little long to complete (say, > 10 mins).

Enabling TIA

TIA is supported via the Version 2.* (preview) of the Visual Studio Test task. If your application is a single tier application, all you need to do is to check “Run only impacted tests” in the task UI. The Test Impact data collector is automatically configured. No additional steps required.

vstestv2task

If your application interacts with a service in the context of IIS, you need to additionally configure the HTTP Proxy data collector and the Test Impact data collector to run in the context of IIS (both, via the .runsettings file). Here is a sample .runsettings file that does this configuration: samplerunsettings.

enablingtia

Reporting

TIA is in integrated into existing test reporting at both the summary and details levels, including notification emails.

report

Robust Test Selection

But why should you trust TIA? How do you know that quality has not been compromised in all of this? To answer that we need to look at 2 aspects:
(1) what are the tests that get automatically selected
(2) policies that can condition test selection.

TIA will look at an incoming commit, and select the set of relevant tests – these will have 3 components
(1) The existing tests impacted by the incoming commit.
(2) Additionally, it will also select previously failing tests– if not, then over the course of several commits some earlier failing test case might just get lost … Therefore, TIA will keep track of tests that failed in the previous build and include them in the selection.
(3) It will also include newly added tests– what if your commit contains new tests? Such tests could uncover product bugs, right? So, TIA will select newly added tests as well.

Taken together, this complement makes for a robust selection of tests. Additionally, we allow (and recommend) running all tests at a configured periodicity.

Scope

TIA is presently scoped to the following:

  • Dependencies
    • Requires use of the Version 2.* (preview) of the Visual Studio Test task in the build definition.
    • Requires either VS2015 Update 3 onwards OR VS 2017 RC onwards on the build agent
  • Supported
    • Managed code
    • CI and in PR workflows
    • IIS interactions
    • Automated Tests (tests and application must be running on the same machine).
    • Build vNext workflow, with multiple VSTest Tasks
    • Local and hosted build agents
    • Git, GitHub, External Git, TFVC repos
  • Not yet supported
    • Remote testing (where the test is exercising an app deployed to a different machine)
    • xplat (Windows only).
    • UWP support.

Next post

We will continue this series in the next post, looking at more details, specifically: manual overrides, repo considerations, using TIA in PR builds, and interaction with Code Coverage. If you would like any other aspect covered in more detail, let us know.

In the meantime, start using TIA! Looking forward to your feedback.

Agent-based deployment in Release Management

$
0
0

Agent-based deployment in Release Management

We have been working on adding robust in-the-box multi-machine deployment using Release Management. You can orchestrate  deployments across multiple machines, perform rolling updates while ensuring high availability of the application throughout.

Agent based deployment capability relies on the same build and deployment agents. However, unlike the current approach, where you install the build and deployment agents on a set of proxy servers in an agent pool and drive deployments to remote target servers, you can install the agent on each of your target servers directly, and then drive rolling deployment to those servers.

Preview

Agent based deployment feature is currently in early adopter phase, if you would like to participate or If you have suggestions on how can we make agent-based deployment better, you can drop an email to us.

Deployment Group

Deployment group is a logical group of targets (machines) with agents installed on each of them. Deployment groups represent your physical environments. For example single box Dev, multi-machine QA or farm of machines for UAT/Prod. They also specify the security context for your physical environments.

Here are a couple of screenshots to explain how this experience is shaping up.

  • Create your ‘Deployment Group’,  register your machines with the cmdlet.createdeploymentgroup
  • Manage: Track the deployments down to each machine. Tag the machine in the group so that you can deploy to the targets having specific tags. deploymentgroups
  • Author release definition: If you are deploying to farm of servers, you can use deployment configuration options viz., one target at a time, or half the targets at a time, or deploy to all targets at once, or use custom value. 
    deploymentgroupphase
  • Deploy: view live logs for each server, download logs for all servers. Track your deployments steps for each server using Release log view.deploymentgrouplivelogs

 

Bootstraping agents: We have made bootstrapping the agents on the target simpler. You can just copy-paste the cmdlet appropriate for the OS and it will take care of downloading, installation and configuring the agent against the deployment group. It even has an option to generate the cmdlet with ‘Personal Access Token’ with right scope so that you don’t have to.

  • If it is Azure, you can do it on-demand using Team Services extension for the VM or use Azure PowerShell/CLI to add the extension which will bootstrap the deployment agent. Or you can automate using resource extension in the Azure template json.
  • We plan to enhance ‘Azure Resource Group’ task to dynamically bootstrap agents on the newly provisioned / pre-existing Virtual Machines on Azure.teamservicesagent

With this you can use the same proven cross-platform agent and its pull-based execution model to easily drive deployments on a large number of servers no matter which domain they are on, without having to worry about the myriad of pre-requisites.

Avoid these six mobile development pitfalls

$
0
0

In our previous post in this series, we talked about the three shifts you need to make to set your mobile apps apart. As you implement your winning strategy, plan to tackle the six common challenges discussed below, ranging from meeting demand to post-release improvement.

Discover how industry leaders tackle these issues in the e-book, Out-mobile the competition: Learn how to set your apps apart with mobile DevOps and the cloud.

Challenge #1: Mounting demand for apps

In response to the mobile explosion, enterprises have recognized the need to deliver exceptional mobile experiences to their business stakeholders, customers, and employees. International Data Corporation (IDC) predicts that, by 2018, the number of enterprise mobile apps will double and spending on mobility will reach 50% of enterprise IT budgets.1

How will your organization meet your users’ growing demand for mobile apps when it exceeds your teams’ ability to deliver?

Begin by examining your existing resources and internal processes—from team structure to technology investments—to determine if your current infrastructure allows you to quickly build and continuously deliver many high-quality apps for various device types, scenarios, and audiences.

Challenge #2: Talent shortage

Per a 2014 Forrester survey, 50% of organizations had fewer than five developers in-house, barely enough to field a single mobile team.2 Fast forward to 2017: Do you have enough developers to cover your needs, including building, testing, and maintaining mobile apps, for each of the major platforms—or do you require additional talent? Do those developers need to be trained on new languages, tools, or platforms?

Challenge #3: Device fragmentation

Since you can’t predict your users’ preferred devices, your apps need to work well on as many form factors, operating systems, and hardware configurations as possible. While managing multiple operating system updates and device fragmentation can be costly—the number of different Android devices alone more than doubled between 2013 and 20153—it’s necessary to ensure the seamless experiences your users expect.

Challenge #4: Adequate testing and QA

Mobile quality is critical to adoption and engagement but adds another layer of complexity to the release cycle. Manual testing is not a long-term solution: it is expensive, labor intensive, can’t scale with rapid release cycles, and usually involves only a small number of available devices. Expanding device coverage using simulators may appear to lower expenses, but this provides a false sense of security, since simulators cannot faithfully reproduce real-world hardware operating conditions.

Automated UI testing and beta distribution are critical to releasing apps that meet—and exceed—users’ expectations. Teams rapidly validate that apps work as expected, identify and prioritize issues, and distribute to internal and external testers for feedback and suggestions. Development teams can catch issues early in the release process and avoid adding new features on top of faulty code, while QA teams can focus on triaging and quickly fixing issues.

Challenge #5: Innovation with security

Five-star app experiences are more than just a pretty UX. Successful apps must provide standout utilities—examples include proactive recommendations or personalized notifications based on user need, activity, or environment—while ensuring secure, reliable access to the same local or cloud-based files, services, and systems of record as traditional apps. On top of that, your users expect mobile apps to include unique capabilities like contextual push notifications and offline data sync. And all this infrastructure must be able to scale to millions of users as your app takes off.

Cloud and hybrid cloud technologies allow organizations to securely connect their systems while also giving users the on-the-go access they need to be productive. Use of cloud platforms also enable updates at scale, with offline access and push capabilities, plus critical security services like permissions management and user authentication.

Challenge #6: The “after launch”

Many teams focus on getting apps out the door but fail to account for post-launch maintenance and analysis. This mistake robs developers of a continuous feedback loop that is essential to maintaining quality. Abandoning apps (by not updating them) is essentially a waste of current investments.

Teams that capture post-release analytics better understand where their future efforts can make the most impact. By monitoring apps in the wild, your organization can understand the complete range of critical services your users expect, and you can properly identify and prioritize new features and bug fixes based on hard data and real user feedback, thereby continuously delivering value to your users and your business.

Overcome these challenges with mobile DevOps and the cloud

With Microsoft’s mobile DevOps technology and cloud platform, you can not only avoid these common pitfalls, but continuously deliver apps that users love, and drive your business forward. Mobile DevOps automates every stage of the mobile lifecycle, from planning to continuous improvement, with secure connections to cloud services which enable you to quickly deliver the capabilities your users demand and scale for any scenario.

See how Microsoft can help youmake mobile your competitive advantage: Out-mobile the competition: Learn how to set your apps apart with mobile DevOps and the cloud.

Cormac Foster, Senior Product Marketing Manager

Cormac is responsible for mobile Product Marketing. He came to Microsoft from Xamarin, where he was responsible for Analyst Relations and thought leadership. Prior to Xamarin, Cormac held a variety of roles in software testing, research, and marketing.

References

1. IDC, “IDC FutureScape: Worldwide Mobility 2017 Predictions,” November 2016, http://www.idc.com/getdoc.jsp?containerId=US41334316

2. Forrester Report, “The State of Mobile App Development: Few eBusiness Teams Keep Pace With Customer App Expectations,” March 23, 2015, https://www.forrester.com/report/The+State+Of+Mobile+App+Development/-/E-RES120267

3. OpenSignal “Android Fragmentation Visualized” report, August 2015, https://opensignal.com/reports/2015/08/android-fragmentation/

How we are improving notifications in Team Services

$
0
0

Good communication is an essential ingredient to any successful development project. Whether the team is small or large, keeping everyone on the same page and informed as the project progresses helps reduce last minute surprises and ensures a smoother process overall.

Notifications, whether they arrive via email, Microsoft Teams, Slack, or some other system, push relevant information to recipients. Recipients don’t need to periodically check for new information; the information arrives when the recipient needs to be told something or when their action is required.

We have been working hard on features for Team Services that help ensure the right information is delivered to the right people at the right time. We are focused on …

  • Scale and performance: we made significant improvements to the overall performance of the pipeline. This includes faster processing of events and faster delivery of email and service hook notifications. This work was essential to ensuring notifications arrive in a timely manner, especially as the volume of activity increases and we add new and better ways for users to get notified.
  • Great out of the box experience: we want users to get notified about relevant activity in their projects, without them needing to do anything. This resulted in a set of new features including out of the box subscriptions and new delivery options for team subscriptions. These features will be enough for most users. If users or admins want to receive notifications about other activity, they can still do this via custom subscriptions.
  • Extensibility: delivering useful notifications for version control, Agile, build and release, is an obvious requirement, but Team Services is more than just the parts we build. Team Services is a platform that has a great set of core services, but is then extended through third-party extensions and integrations (see the Visual Studio Marketplace). We overhauled our notification services to be extensible and many of our own services now plug into the same extensibility points that third-parties will soon be able to plug into. This will enable third-party extensions and integration to publish events that can be delivered through various channels including email, Teams, Slack, and more.

New features

Here is a quick recap of some of the recent features we delivered. You may recognize some of this text from recent release notes, which I generously borrowed from. Note: the features discussed here are available now for Team Services and in Team Foundation Server 2017 Update 1 or later. You can learn more about notifications in earlier versions of TFS here.

Better configuration UI

It is now easier to manage what notifications you and your teams receive. Users now have their own account-level experience for managing notification settings (available via Notification settings in your profile menu).

This view lets users manage personal subscriptions they have created. It also shows subscriptions created by team administrators for all projects in the account.

Learn more about managing personal notification settings.

New delivery options for team subscriptions

Team administrators can manage subscriptions shared by all members of the team in the Notifications hub under team settings. Two new delivery options are now available when configuring a team subscription: send the email notification to a specific email address (like the team’s distribution list), or send the notification to only team members associated with the activity.

Learn more about managing team subscriptions.

Out of the box notifications (preview)

Prior to this feature, users would need to manually opt in to any notifications they wanted to receive. With out-of-the-box notifications (which currently must be enabled by an account administrator), users automatically receive notifications for events such as:

  • The user is assigned a work item
  • The user is added or removed as a reviewer to a pull request
  • The user has a pull request that is updated
  • The user has a build that completes

These subscriptions appear in the new user notifications experience, and users can easily choose to opt out of any of them.

To enable this feature for the account, an account administrator needs to go to Preview features under your profile menu, select From this account from the drop-down, then toggle on the Out of the box notifications feature.

Learn more about out of the box notifications.

Delivering certain notifications to all team members (preview)

Working with pull requests that are assigned to teams is getting a lot easier. When a PR is created or updated, email alerts will now be sent to all members of all teams that are assigned to the PR. This feature is in preview and requires an account admin to enable it from the Preview features panel (available under the profile menu). After selecting for this account, switch on the Team expansion for notifications feature.

Other stuff we are working on

We are already working on (or about to start on) a number of new features, not all of which I can disclose right now. Here are a few features we are working on:

  • Multiple recipients on the same email. Today when a particular email notification is sent to multiple users, each user receives an individual email. This makes it hard to know who else received the email and to have a conversation with the other users about the email’s contents. With this feature, a single email will be sent with each of the users on the TO line.
  • Improved custom subscription experience. It is not always easy to create a custom subscription today, especially one involving multiple conditions, with ANDs and ORs. We are planning to rebuild this experience to make it much simpler, but just as powerful (for those users that want the power).

 

Your feedback is important to us. Use the “send a smile” feature, comment on this post, or send to vssnotifications@microsoft.com.

Will Smythe

Always Set Impossible Goals

$
0
0

Impossible goals are like dreams, we always pursue them, with the hopes they will come true. In one of my recent experiences, I managed a feature crew, C++ Fast Project Load (FPL), a team of exceptional people. Personally, I’m very passionate about performance, as I believe it makes our interaction with our beloved machines much more satisfying.

As large codebases grow over time, they tend to suffer from a slow performance loading and building in Visual Studio. Most of the root causes were originating from our project system architecture. For years, we made decent improvements (percentages), just to see them wiped out, by the codebases steady growth rate. Hardware improvements like better CPUs or even SSDs helped, but they still didn’t make a huge difference.

This problem required an “Impossible Goal”, so we decided to aim very high, improving the solution load time by 10x! Crazy, no? Especially because for years, we were barely making small improvements. Goal set? Checked, now go, go, go!

A few years back, while working on Visual Studio Graphics Debugger, I faced a similar problem, loading huge capture files, which needed rendering (sometimes under REF driver, very slooow) and these took a long time especially for complex graphics applications. At that time, I employed a caching mechanism, which allowed us to scale and reuse previous computations, reducing dramatically the reload time and memory consumption.

For FPL, about a half a year ago, we started following a similar strategy. Luckily, we had a nice jump-start from a prototype we created 3 years ago, which we didn’t have time to finish it at that time.

This time, all the stars were finally aligned, and we were able to dedicate valuable resources to making this happen. It was an extraordinary ride, as we had to deliver at a very fast pace, a feature that potentially was capable of breaking a lot of functionality, and its merit was simply performance gains.

We started playing with very large solutions, establishing a good baseline. We had access to great real-world solutions (not always easy to find, given the IP constraints) along with our internal and generated solutions. We liked to stress the size beyond the original design sizes (500 projects). This time we pushed to an “Impossible Goal” (10x) for a good experience.

The main goals were to improve solution load times and drastically reduce the memory consumption. In the original design, we were loading always the projects like we were seeing them for the first time, evaluating their values, and holding them in memory, ready to be edited. From telemetry data, the latter one was totally unnecessary, as most of the user scenarios were “read-only”. This was the first big requirement, to design a “read-only” project system capable of serving the needed information to the Visual Studio components, which constantly query it (Design Time tools, IntelliSense, extensions). The second requirement was to ensure we reuse, as much as possible, the previous loads.

We moved all the project “real” load, and “evaluation” into an out-of-proc service, that uses SQLite to store the data and serve it on demand. This gave us a great opportunity to parallelize the project loading as well, which in itself provided great performance improvements. The move to out-of-proc added also a great benefit, of reducing the memory footprint in Visual Studio process, and I’m talking easily hundreds of MB for medium size solutions and even in the GB range for huge ones (2-3k projects solutions). This didn’t mean we just moved the memory usage elsewhere, we actually relied on SQLite store, and we didn’t have to load anymore the heavy object model behind MSBuild.

chrome

We made incremental progress, and we used our customers feedback from pre-releases, to tune and improve our solution. The first project type that we enabled was Desktop, as it was the dominant type, followed by the CLI project type. All the project types not supported, will be “fully” loaded like in early releases, so they will function just fine, but without the benefit of the FPL.

It is fascinating how you can find accidentally introduced N^2 algorithms in places where the original design was not accounting for a large possible load. They were small, relatively to the original large times, but once we added the caching layers, they tended to get magnified. We fixed several of them, and that improved the performance even more. We also spent significant time trying to reduce the size of the large count objects in memory, mostly in the solutions items internal representation.

From a usability point of view, we continue to allow the users to edit their projects, of course, as soon as they try to “edit”, we are seamlessly loading the real MSBuild based project, and delegate to it, allowing the user to make the changes and save them.

We are not done yet, as we still have a lot of ground to cover. From customer feedback, we learned that we need to harden our feature, to maintain the cache, even if the timestamps on disk change (as long as the content is the same, common cases: git branch switching, CMake regenerate).

impossible

Impossible Goals are like these magic guidelines, giving you long-term direction and allowing you to break the molds, which, let’s be fair, shackle our minds into preexisting solutions. Dream big, and pursue it! This proved a great strategy, because it allowed us to explore out of the box paths and ultimately, it generated marvelous results. Don’t expect instant gratification, it takes significant time to achieve big things, however always aim very high, as it is worth it when you will look back, and see how close you are, to once an impossible dream.


Fast acquisition of vswhere

$
0
0

I introducedvswhere last week as an easy means to locate Visual Studio 2017 and newer, along with other products installed with our new installer that provides faster downloads and installs – even for full installs (which has roughly doubled in size with lots of new third-party content).

vswhere was designed to be a fast, small, single-file executable you could download and even redistribute in a build pipeline or for other uses. To make this easy to acquire, I’ve published both a NuGet package and made vswhere available via Chocolatey.

choco install vswhere
vswhere -latest -products * -requires Microsoft.Component.MSBuild -property installationPath

You might notice a few other surprises in that command line I’ve implemented for our first packaged release of 1.0.40.

  • You can pass a single “*” to -products to search all installed product instances. Note that the asterisk is not a wildcard that can be used for pattern matching.
  • You can specify a single property to return only that property value. In PowerShell and some other script environments that makes it very easy to capture into a variable.

You can also install using the Chocolatey package provider for PowerShell, but a bug in the provider does not put vswhere in your PATH.

See our wiki for more information.

Productivity Power Tools for Visual Studio 2017

$
0
0

As we are getting set up to launch Visual Studio 2017 tomorrow, we wanted to let you know that we have released the Productivity Power Tools for Visual Studio 2017. So, you’ll be able to hit the ground running with all your favorite productivity features.

The Productivity Power Tools is a collection of extensions that improve the developer experience with Visual Studio IDE. Though not officially supported, they provide a great way to try out new features that we’re experimenting with. You can read more about the origins of Productivity Power Tools.

What’s New?

One of the key goals of this release was to break each of the Productivity Power Tools features into separate extensions. The main benefit of this is that it gives you more flexibility over how you acquire and manage the tools, as you can now hand-pick and install just the components that you want to use. Also, it means that each of the extensions can be updated and delivered at its own pace. Plus, it gives us the ability to monitor the popularity of each extension. Features that prove most popular will be considered for inclusion in future versions of Visual Studio.

The following is a list of features released as individual extensions for Visual Studio 2017:

  1. Align Assignments: Adds a command to Visual Studio to align assignments. By default, this is bound to Ctrl+Alt+]
  2. Copy as HTML: Adds support to copy the selected editor text to clipboard in HTML format
  3. Ctrl+Click Go To Definition: Make Ctrl+Click perform a “Go To Definition” on the identifier under the cursor
  4. Custom Document Well: Provides configurable behavior for the document well in Visual Studio
  5. Double-Click Maximize: Double-click window headers to maximize and dock them
  6. Editor Guidelines: Adds vertical column guides to the editor
  7. Fix Mixed Tabs: Detects when you have mixed tabs and spaces and offers to fix them for you automatically
  8. Match Margin: Draws markers in the scroll bar and highlights text in the editor for matches of the word under the caret
  9. Middle-Click Scroll: Enables scrolling in the editor pane using the middle-click mouse button
  10. Peek Help: Adds a command to Visual Studio to show F1 Help inline in the editor. By default, the command is bound to Alt+F1.\
  11. Power Commands for Visual Studio: A set of useful extensions for the Visual Studio IDE, including Remove and Sort Usings, Copy Path and Open Command Prompt
  12. Quick Launch Tasks: Adds accessibility and settings tasks to the Quick Launch tool
  13. Shrink Empty Lines: Shrinks lines that contain neither text nor numbers so that more lines can be displayed in the editor
  14. Solution Error Visualizer: Highlights errors and warnings in the Solution Explorer. Also allows Solution Explorer to be filtered by error type
  15. Time Stamp Margin: Adds a time stamp margin to the debug output window.

You can download and install the extensions from the Visual Studio Marketplace, or from the Extensions and Updates dialog inside the IDE.

If you want to install all the extensions in one go, check out the Productivity Power Tools 2017 Installer. Inspired by Mad Kristensen’s approach to Web Extensions, this is a bundle installer that will install the full suite of Productivity Power Tools for Visual Studio 2017.

How it works: Every time Visual Studio launches, this extension runs in the background and checks to see if any of the Productivity Power Tools are not installed. If any are missing, it presents a dialog box showing progress as it automatically downloads and installs them all.

If there are extensions installed by the pack that you don’t want to use, you can disable or uninstall them individually from Tools->Extensions and Updates.

What’s Missing?

If you’re looking for Structure Visualizer, you won’t find it in Productivity Power Tools 2017. Parts of Structure Visualizer proved so popular that they have been implemented in the product. Visual Studio 2017 now has a new feature called Structure Guidelines that is enabled by default for several languages. With this feature, vertical lines appear in the editor that line up with structured code blocks. Hovering on any of these lines will trigger a tooltip to pop up that shows all the ancestor blocks for that line.

You can enable and disable this feature in Tools->Options. Look for “Show structure guide lines” under Display in the Text Editor options page.

What’s Changed?

The Custom Document Well has been updated to expose all the commands for navigating directly to an open document by its position in the document well. By default, the commands for Window.GoToPinnedTab[X] and Window.GoToUnpinnedTab[X] are mapped to Ctrl+[Numpad X] and Ctrl+Alt+[Numpad X] respectively. Now that these commands are exposed, you can remap them to any other shortcuts you prefer (via Tools->Options, Keyboard).

Tip: If you are working with a laptop that doesn’t have the Numpad, you might want to map the Window.GoToUnpinnedTab[X] commands to Ctrl+1..0. (These are the same shortcuts used by most web browsers for navigating directly to tabs by their position.)
Just beware: re-mapping Ctrl+1 will remove the default Visual Studio 2017 shortcuts for Go To File/Type/Member/Symbol, and re-mapping Ctrl+0 will remove many of the Team Explorer shortcuts, so you might want to remap those while you’re at it.

Support / Contributions

We hope that you enjoy using the Productivity Power Tools in Visual Studio 2017. Much of the code is open-sourced and we welcome contributions. As an example, we recently received a bug fix for Ctrl+Click Go To Definition (thanks to Francesco Buldo), which was accepted and released the same day.

If you have any suggestions or need support, please let us know by opening issues on the Productivity Power Tools GitHub repo.

Justin Clareburt, Senior Program Manager, Visual Studio

Justin Clareburt is a Program Manager on the Visual Studio team, currently working in the Visual Studio extensibility space. He has over 20 years of Software Engineering experience having previously worked for several large organizations including Amazon, NewsCorp, Symantec, and the Australian Government. He brings to the team his expert knowledge of IDEs and a passion for creating the ultimate development experience.

New Git Features in Visual Studio 2017

$
0
0

We’ve added new Git features to Visual Studio 2017 that allow you to do more of your end-to-end workflow without leaving the IDE. You can perform a force push to complete a rebase or push an amended commit, easily view the diff for outgoing commits, unset your upstream branch, and continue patch rebase from VS. 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. Learn more about all of our Git features in Visual Studio and check out the Visual Studio release notes for what’s new in Visual Studio 2017.

Push force

When you rebase your branch or amend a commit, you’ll need to force push your changes to the remote branch. In Visual Studio 2017, you can now push --force-with-lease from the IDE. Rather than expose push --force, we’ve built the safer push --force-with-lease option. With --force-with-lease, your force push will only complete if the upstream branch has not been updated by someone else. This option safeguards you from accidentally overwriting someone else’s work.

To enable push --force-with-lease, you will need to enable it in Git Global Settings: team-explorer-git-settings

Now, when you initiate a push that will require --force-with-lease (such as a rebase or amend), you’ll be notified and asked to confirm if you want to proceed with push --force-with leasepush-force-with-lease

View Commit Diff

When you’re ready to push your commits, it can be helpful to review your changes. With Visual Studio 2017, you can now easily view the diff for your outgoing commits. If you go to the Sync page and choose “View Summary” under Outgoing Commits, you will see the diff.

You can also view the diff between any two commits. On the History page, select two commits then choose “Compare Commits…” in the context menu. In Team Explorer, you will now see the diff between these two commits. view-commit-diff

Unset Upstream Branch

In the event that you want to stop tracking an upstream branch, go to the Branches page, right click on a local branch, and unset its upstream: team-explorer-branches

SSH Support

Visual Studio 2017 supports SSH! In Repository Settings, you can set your remotes to use SSH: ssh-support

There is a known issue where cloning via SSH on the Connect page does not work. A fix will be available in an update.

As always, please leave your feedback in the comments, on UserVoice, or Report a Problem in the top right of Visual Studio.

Team Services/TFS Roadmap update

$
0
0

Last week, we published an update to our roadmap (otherwise known as “Features timeline” :)).

If your curious about what we are working on and when it is coming, I encourage you to go check it out.  This timeline is intended to give a rough idea what we are planning to deliver in the cloud over the next 6 months and when those things will land in on-premises TFS.  Some of them are self explanatory and some have linked blog posts or UserVoice items to provide a little more context.  I’m still waiting for a couple of blog posts to get published but they should be done soon.  If there’s something you don’t understand and would like more info on, let me know and I’ll see what I can do.

This is, of course, not everything we are working on.  Some things are either too speculative or too far out to talk much about yet.  And, of course, feedback constantly affects our prioritization so, in a few months, we’ll revisit it and, likely, make updates (both adding and removing things).

I’ll add a few comments on ones that I think are appropriate to comment on…

Git – Commit graph: Now, you will be able to view the Git graph (kind of like you can the TFVC Branch/Merge visualization).  Here’s a screenshot from the last sprint video on what this looks like in the web UI.

commitgraph

Build improvements – Multi-phase builds, conditional tasks, shared variables: There are some pretty important improvements here that enable you to scale out your builds across multiple agents and have “merge points” – this is one of the things “phases” gives you.  Conditional tasks also allows you to reduce the number of very similar build definitions you have and use conditionals instead.

Improved user management and invitation experience: Adding a new user now enables you to grant them access to appropriate projects and the appropriate licenses & extensions all in one place.

Managing licenses for large groups of users using AAD groups: There should be blog post on this one soon.  This is an increasingly important need as we are getting larger and larger accounts.  Today, you have to manage user licenses individually.  With this work, you will be able to assign licenses and extensions to groups and adding someone to the group will automatically grant them the correct licenses.

Git – Notifications for pull requests assigned to teams and improved email design: Super important to larger teams or people on multiple teams.  Now you can get notifications about any pull request assigned to any team you are on.  The pull request mails are also going to look much better.

CI/CD UI updates – task editor, landing pages, templates: Our CI/CD experience is getting a ton of improvements and this title really undersells it.  Among other things, the Build and RM UIs are going to become a lot more consistent (both are going to get better but the RM one, a lot better).  Of particular note is a new graphical view of a release pipeline that updates in “real-time” as releases propagate through environments, looking something like this:

releasegraph

 

Lot’s of good stuff in the works.  Much of it will rollout in previews first and then become “default” experiences.  As always, we love feedback.  Stay tuned for more…

Brian

 

Finding installed Visual C++ tools in Visual Studio 2017

$
0
0

There have been a number of questions from customers about how to locate the tools in the world of this new installation model.  The following blog post will share a number of options available for locating Visual Studio 2017 instances and provides various samples that illustrates the process in action.

How to find installed Visual Studio 2017 instances and C++ tools

There are multiple ways you can go about the finding the VS instances installed and determining the tools installed for each instance.

1.  vswhere.exe:   A stand-alone native executable that is redistributable and can be used to locate installed Visual Studio product instances for use in build and deployment scripts.  exe supports emitting different formats so far including plain text, JSON, and XML.  For example, the following batch script for vswhere will find the root path the latest installed version that also contains the C++ Desktop workload:

for /r "usebackq tokens=1* delims=: " %%i in (`vswhere.exe -latest -requires Microsoft.VisualStudio.Workload.NativeDesktop`) do (

if /i "%%i"=="installationPath" set dir=%%j

)

%dir% now contains the root installation path, if available.

2.  PowerShell API: This is the simplest API for finding VS installation instances and components, but of course requires PowerShell v3 and above.  If you are running on PowerShell v3 or v4, you will need to install also This is already included in PowerShell v5 that comes with Windows 10.  The following command will list all installed VS2017 instances that also installed the v141 toolset for x86 and x64:

First install the VSSetup module:

Install-Module VSSetup -Scope CurrentUser

After that is completed, the following script will list all installed instances with Visual C++ compilers installed:

Get-VSSetupInstance | Select-VSSetupInstance -Latest -Require Microsoft.VisualStudio.Component.VC.Tools.x86.x64

3.  Visual Studio Setup API: This COM API allows for querying installed VS instances and their components from a variety of programming languages (C++, C#, VB).  The code is not as simple as the PowerShell script, but we have multiple examples on GitHub of how to consume the API:

Samples on GitHub (Sample with no NuGet dependency)

Example: Finding instances with an installed Visual C++ toolset with the API

For a more specific example of using this COM API from C++ to list installed instances that include Visual C++ tools, check out this sample on GitHub.

It is inside PrintPackageReference function that my sample checks the name of each installed component in the instance to determine if the Visual C++ toolset is installed (i.e. if “Microsoft.VisualStudio.Component.VC.Tools.x86.x64” is installed).

//check if instance has VC tools
if (bstrId == L"Microsoft.VisualStudio.Component.VC.Tools.x86.x64") {
vcToolsFound = true;
std::wcout << L"Instance " << OLE2T(vcInstance) << " contains the VC++ 2017 compiler tools (x86 and x64 targets).\n";
}

If you build the solution, a simple command prompt will launch that can list installed Visual Studio instances, their components, and which instances have C++ tools installed.  To find the VC++ build tools on the machine with the tool, select option #3 in and it will indicate which instance have VC++ tools installed:1

Note:  This sample is not an official tool and is meant simply to instruct how to leverage the COM API to locate the installed Visual C++ tools.
 

 C++ installation workloads and components

Below is a table of the underlying names used to describe each C++ workload, as well as the underlying component names used by the installer for the options provided in each workload.  The  Visual C++ 2017 v141 compiler toolset component (x86 and x64 targeting), known as Microsoft.VisualStudio.Component.VC.Tools.x86.x64, comes included in the desktop workload as a recommended (pre-selected) component and is a required (always installed) component in the C++ game and build tools workloads.

WorkloadInstallation Name
Desktop development with C++Microsoft.VisualStudio.Workload.Universal
Universal Windows Platform developmentMicrosoft.VisualStudio.Workload.Universal
Linux development with C++Microsoft.VisualStudio.Workload.NativeCrossPlat
Game development with C++Microsoft.VisualStudio.Workload.NativeGame
Mobile development with C++Microsoft.VisualStudio.Workload.NativeMobile


Build Tools Workloads

MSBuild toolsMicrosoft.VisualStudio.Workload.MSBuildTools
Visual C++ build toolsMicrosoft.VisualStudio.Workload.VCTools

 

Desktop development with C++

desktop

Friendly NameComponent Name
VC++ 2017 v141 toolset (x86, x64)Microsoft.VisualStudio.Component.VC.Tools.x86.x64
C++ profiling toolsMicrosoft.VisualStudio.Component.VC.DiagnosticTools
Windows 10 SDK (10.0.14393.0)Microsoft.VisualStudio.Component.Windows10SDK.14393
Visual C++ tools for CMakeMicrosoft.VisualStudio.Component.VC.CMake.Project
Visual C++ ATL supportMicrosoft.VisualStudio.Component.VC.ATL
Windows 8.1 SDK And UCRT SDKMicrosoft.VisualStudio.ComponentGroup.NativeDesktop.Win81
Windows XP support for C++Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP
MFC and ATL support (x86 and x64)Microsoft.VisualStudio.Component.VC.ATLMFC
C++/CLI supportMicrosoft.VisualStudio.Component.VC.CLI.Support
Clang/C2 (experimental)Microsoft.VisualStudio.Component.VC.ClangC2
Standard Library ModulesMicrosoft.VisualStudio.Component.VC.Modules.x86.x64
IncrediBuildComponent.Incredibuild
Windows 10 SDK (10.0.10586.0)Microsoft.VisualStudio.Component.Windows10SDK.10586
Windows 10 SDK (10.0.10240.0)Microsoft.VisualStudio.Component.Windows10SDK.10240
Visual C++ 2015.3 v140 toolset (x86, x64)Microsoft.VisualStudio.Component.VC.140

 

Universal Windows Platform development

uwp

*C++ Universal Windows Platform development tools are required to be installed for C++ UWP development but are not installed by default.

Friendly NameComponent Name
IntelliTraceMicrosoft.VisualStudio.Component.IntelliTrace.FrontEnd
Graphics debugger and GPU profiler for DirectXMicrosoft.VisualStudio.Component.Graphics.Tools
*C++ Universal Windows Platform development tools*Microsoft.VisualStudio.ComponentGroup.UWP.VC
Windows 10 SDK (10.0.10240.0)Microsoft.VisualStudio.Component.Windows10SDK.10240
Windows 10 SDK (10.0.10586.0)Microsoft.VisualStudio.Component.Windows10SDK.10586
Architecture and analysis toolsMicrosoft.VisualStudio.ComponentGroup.ArchitectureTools.Managed

 

Game development with C++

game

Friendly NameComponent Name
C++ profiling toolsMicrosoft.VisualStudio.Component.VC.DiagnosticTools
Windows 10 SDK (10.0.14393.0)Microsoft.VisualStudio.Component.Windows10SDK.14393
Windows 10 SDK (10.0.10586.0)Microsoft.VisualStudio.Component.Windows10SDK.10586
Windows 10 SDK (10.0.10240.0)Microsoft.VisualStudio.Component.Windows10SDK.10240
Windows 8.1 SDK And UCRT SDKMicrosoft.VisualStudio.ComponentGroup.NativeDesktop.Win81
IncrediBuildComponent.Incredibuild

 

Mobile development with C++

mobile

Friendly NameComponent Name
Android NDK (RI 3B)Component.Android.NDK.R13B
Apache Ant (1.9.3)Component.Ant
Android SDK setup (API level 19 and 21)Component.Android.SDK19
Android SDK setup (API level 22)Component.Android.SDK22
Android SDK setup (API level 23)Component.Android.SDK23
Java SE Development Kit (8.0920.14)Component.JavaJDK
C++ Android development toolsComponent.MDD.Android
Google Android Emulator (API Level 23)Component.Android.Emulator
Intel Hardware Accelerated ExecutionComponent.HAXM
Android NDK (RI 3B) (32bit)Component.Android.NDK.R13B_3264
Android NDK (R12B)Component.Android.NDK.R12B
Android NDK (R12B) (32bit)Component.Android.NDK.R12B_3264
Android NDK (R11C)Component.Android.NDK.R11C
Android NDK (R11C) (32bit)Component.Android.NDK.R11C_3264
C++ iOS development toolsComponent.MDD.IOS
IncrediBuiIdComponent.Incredibuild

 

Visual C++ build tools

bt

*The Visual C++ Build tools always installs the VS2017 v141 toolset.

Friendly NameComponent Name
*VC++ 2017 v141 toolset (x86, x64) Microsoft.VisualStudio.Component.VC.Tools.x86.x64
Windows 10 SDK (10.0.14393.0)Microsoft.VisualStudio.Component.Windows10SDK.14393
Visual C++ tools for CMakeMicrosoft.VisualStudio.Component.VC.CMake.Project
Windows 8.1 SDK And UCRT SDKMicrosoft.VisualStudio.ComponentGroup.NativeDesktop.Win81
Visual C++ ATL supportMicrosoft.VisualStudio.Component.VC.ATL
MFC and ATL support (x86 and x64)Microsoft.VisualStudio.Component.VC.ATLMFC
C++/CLI supportMicrosoft.VisualStudio.Component.VC.CLI.Support
Clang/C2 (experimental)Microsoft.VisualStudio.Component.VC.ClangC2
Standard Library ModulesMicrosoft.VisualStudio.Component.VC.Modules.x86.x64
Windows 10 SDK (10.0.10586.0)Microsoft.VisualStudio.Component.Windows10SDK.10586
Windows 10 SDK (10.0.10240.0)Microsoft.VisualStudio.Component.Windows10SDK.10240

 

Setting up your command-line environment

The Developer Command prompt in Visual Studio 2017 can be used to set the path to the VC++ toolset in the VCToolsInstallDir environment variable.  Now that we found have the path for each of the installed VS2017 instances that have VC++ compiler tools installed, we will refer to this directory as .  This script is in the following location:

\Common7\Tools\vsdevcmd.bat [-arch=] [-host_arch=]

is the architecture upon which the produced binary will run (x86 [default], x64, arm).

is the architecture for which the compiler/linker was built (i.e. do you want cl.exe/link.exe, itself, to be able to make use of 32-bit or 64-bit address space) (x86 [default], x64).

Here is an example that will set up the command-line build environment to use the host-x64 compiler targeting x64, the following command would be used:

\Common7\Tools\vsdevcmd.bat -arch=x64 -host_arch=x64

We have now configured our command-line build environment so that it knows where the correct VC++ tools are based on our preferences(host/target).

Identifying the VC++ compiler tools version

In a world where multiple version of VC++ tools could be installed in a single VS instance, we have introduced the concept of which indicates the default version of VC++ tools for that VS installation instance.  If you plan to manually assemble path to the VC++ toolset directory, we need to know the default version of the installed tools to get the full path.

The is found in one of two files that can be located once you have a .

\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.[txt|props]

You can check out the batch script located \Common7\Tools\vsdevcmd\ext\vcvars.bat as an example of how the VS Developer Command Prompt does this.

Once a value is identified, the full VC++ tools path can be manually constructed as follows:

\VC\Tools\MSVC\\bin\Host\

For our installed tools for host-x64 and target-x64, the path looks like:

\VC\ToolsMSVC\14.10.24930\bin\HostX64\x64

Closing remarks

Since we have removed the VS150COMNTOOLS registry key to support the new world where multiple VS instances of the same product can be installed side-by-side on the same machine, we know that many build systems and tools have relied on this in the past and the new options are not an identical replacement.  We are actively working with library developers and others who build depend on the VC++ compiler tools and are open to further feedback to help refine and improve upon the solutions mentioned above.  Please share any feedback you have in the comments or feel free to send more detailed suggestions to visualc@microsoft.com.

Viewing all 10804 articles
Browse latest View live


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