 Hi, welcome to Visual Studio Toolbox. I'm your host Robert Green, and we are at Build at the beautiful Washington State Convention Center. And my guest today is Michaela Hutchinson. Hi, Michaela. Hi. Busy week for you. Yeah, it's been very busy. Lots of exciting things going on. Lots of great announcements at Build, including the general availability of Visual Studio for Mac. Yeah, and that's super exciting. It's something we've been working on for a long time. We've got lots of great functionality, and it's great to be making it available for people to download and get grips with. And in true new Microsoft fashion, not only did we announce the GA, but we also announced there's already a preview of the next version. Yes, yeah. This is the new Microsoft, right? This is, you know, we don't release something and then wait a year or two years or three years. We release something and we're already on preview. We're already moving forward. That's very cool. Yep, and there will be lots more updates to come after this. Cool. So give us a sense for Visual Studio for Mac. What are the primary scenarios that it's aimed at? It's obviously a version of Visual Studio that runs on the Mac, but what are the key scenarios that we're trying to cover here? So our focus is very much on technologies that are top of mind for developers right now who are focusing on mobile and cloud. So from mobile we have support for Xamarin iOS, Android and Mac, and for cloud we have support for .NET Core with ASP.NET Core, Azure Functions in the preview, support for deploying to Azure and so on. So you can build both the front end of your app and the back end service that powers it and any websites associated with that all in one solution, in one place, in one language. There's also ASP.NET Core in there. There's Unity support, so it's basically cross-platform. Is it all cross-platform.NET? Is that a fair assumption? Yes. All of these projects you can also open in Visual Studio on Windows and they should just work the same way there. Okay, so if you're doing cross-platform.net on the Mac and you want the goodness of Visual Studio, this is Visual Studio for Mac. It is. All right, sweet. Now I was reading in the press today some stories about it and I saw one writer who I won't name who said that this is essentially a rebranding of Xamarin Studio, which is not true. It's not true. So we did start from Xamarin Studio and that was our mobile focused development experience. But we took a lot of great technologies from Visual Studio on Windows and added them into there to make it a much broader development experience. So you could target the cloud and games and so on. So you have this full broad experience rather than just being focused on a single scenario. Okay, cool. Let's see a couple of demos that I've got other questions. Great. So we'll start off with just a very quick tour of what it looks like. This is the preview because I always install previews. And this is the welcome screen. As you can see, I only have one recent project here. We'll get to that in a bit. And if we go to the menus, you can see that they look like Mac menus. We have done our best to make it feel like a native Mac experience so that developers who are at home on Mac won't feel like this is just a Windows app on Mac, but it's actually a Mac app. So for Windows developers moving over to Mac for the first time, we'll have to learn what it means, what that means. We'll have to learn what the menu structures are like on the Mac, right? Yes, they will. So it's nice that we don't give you the opportunity to not learn that. You're going to be on a Mac, you're just going to have to bite the bullet and learn it. Yeah, and it'll work like all the other apps on the Mac. So we'll have to learn that to use a Mac. Yes. And yeah, we're trying to be like a good citizen on Mac OS. And within that, we also try to make it feel like Visual Studio. And sometimes these two things are hard to balance, and we hope we've got that balance right. Yes. But I think we have. Yeah, so if I go to File, New Solution, you can see here we have quite a broad range of project types here. We have some really cool templates like this native app template that creates an iOS app, an Android app, a shared project to share code between them, and a .NET Core web API backend that the apps call into. So you can actually create that solution, set breakpoints in the front-end and the back-end, launch it and debug your client and your server at the same time. Cool. And in those apps, of course, the iOS and Android apps, you have full access to the Xamarin, iOS and Xamarin Android bindings to the native APIs, and you can do anything that any other app could do on those platforms. We also have a Xamarin Forms variant of that. We have the individual iOS and Android app templates. And we also have the .NET Core templates here. This is another one of the pieces of technology that we brought over from Windows. This is using the exact same project templating engine that Visual Studio on Windows does. The exact same template files are being used to create these projects. So these are the same projects. So if you create a Xamarin project on Visual Studio Windows, go to Visual Studio for Mac, open it up, it just works, and vice versa. Yes, exactly. So if you have some developers on your team who like working on Windows and some who like working on Mac, then both sets of developers can be happy, and they can both work where they like, but still work on the same code. You might work on the Android project in Windows because you like Windows, but then switch over to Visual Studio for Mac to work on the Mac version, because I know that today you can have Visual Studio talk to a Mac and connect, and you can do that, but this seems way more elegance. If you're going to buy a Mac, which you have to anyway, I don't know why you wouldn't use Visual Studio for Mac on the Mac. In Windows, if you're doing the Android and the UWP part, if that's part of the Xamarin Forms application, and then when it's time to work on the Mac side, switch over to the Mac since it's the same project, similar, it's an IDE you're used to, but it's just native. I would think that could wind up making you more productive. Yeah, it's a cool scenario. Yeah, it is definitely true that although Visual Studio extensions on Windows do allow you to do everything with iOS that you could do on a Mac, on the Mac you're just a little closer, right? You have the simulator running on the same machine, you don't have to pair it to a remote build machine. You don't have to hope that it can find the Mac agent, and I wonder if running the simulator is not faster native on the machine as opposed to being marshaled over even over the network. Yeah, I wouldn't say that the overhead of remoting the simulator is noticeable. I've never seen anyone complain about it, but it is there. Yeah. OK. And then how does the Xamarin Forms live player fit in where you can, that was showed this week, where you could just plug an iPhone into your Windows machine and run the app on that? Does that mean you don't need to buy a Mac? No, it's the player has sort of two aspects. The first is that we want to make it a lot easier for people to get started without having to install the SDKs and provision devices and so on. And so it makes it much easier. You don't have to download all of those and install those and get them all set up. But at some point you will reach things that you will then need the SDKs for. And hopefully you'll be able to spend a few weeks until you reach that point and build a prototype and be happy that this is the solution you want to go with before you hit that point. But you will need the Mac at some point. OK. And the other thing is that we're building a new development model essentially of the live updating. So you can see the app on your device. And as you write code, the code that you're writing is dynamically sent to the device without you even saving. Right. And you see it running live. So it's a very hands-on development experience. You don't have to recompile, redeploy, reattach the debugger and so on. Yep. It's just a really cool development model. And I assume that also works if you plug the phone directly into your Mac machine. Is that right? Or is it only from Visual Studio? It's only from Windows machines. So on Windows you don't actually even have to plug the phone in. So you install the player app from the app store. Right. And then you connect to it over the network. Oh, OK. So both machines have to be on the same network so they can reach each other. Got it. But yeah, it doesn't need to be attached. OK. Yeah. This works both on Windows and on Mac for iOS and for Android. OK. So take us on a tour of just doing like a quick project so we can kind of get a sense of somebody familiar with Visual Studio, how much this is Visual Studio. Yeah. I'll start with a web app. So here we have a new ASP.NET Core web app. And you see here I can just check this and get repository initialized automatically. I create that. It unfolds it. And here we have a project with the Razer views, the controllers, which are all C sharp. It takes a moment while it restores the Nougat packages. This machine. We're doing over Wi-Fi there at the conference. Yeah. Oh, there we go. And there it is. And you saw that there were all those quickly underlines which went away once the types were present. And you can also see, for example, these unused usings are grayed out. Like we're doing all that with Roslin. OK. The exact same Roslin code that powers VS on Windows. We're also using on Mac. So do I get the quick tips, the light bulbs that show up and things like that? Yes. There are still a few differences that we're working out. But the core functionality is there. So for example, I can right-click on these and choose sort and remove usings. And it clears up all the unused usings. Yeah. And you can also, for example, if I write some code, you can see you get the same C-Shop IntelliSense as you would expect on Windows. OK. What I get, and I don't want to just come up with a list of every new thing in Visual Studio 2017, so you can say no to the things that aren't in there. What I'm trying to get a sense of is if I move over from Visual Studio on Windows to Visual Studio for Mac, can I expect most of what's there? A bunch of what's there? Some of what's there increasing over time? Like do I get, you know, click to run? Do I get IntelliSense filtering? Do I get find all references and all of that? All of the IDE stuff? Yeah. I'd say within the scenarios that we're focused on supporting, you'll get most within the other scenarios, not so much. OK. But yeah, you can see, for example, the quick fixes. There's all of the Roslin quick fixes. OK. Also can, yeah. And there are the hints and so on. So this is suggesting that, you know, this is never assigned, so you can choose to, you know, split that, then, you know, use alt-opt, so like shift that into a field. Mm-hmm. Yeah. So this is the ASP.NET core project. Something else I just want to point out quickly is for CSS files. Yep. We actually brought over the CSS IntelliSense from Windows. That was something that the same team that builds that on Windows built for Mac. OK. So we have the exact same CSS IntelliSense that you'd expect. And not just CSS, but also HTML and JSON. OK. And there are more things that we'll be bringing over time. Another really cool thing I want to call out very quickly is that we have Docker support. Mm-hmm. That, again, was built by the same team that built the Docker tools for Windows. Right. So if I add Docker support, it creates a Docker project. If I run that, I can debug the ASP.NET core app running in a Docker container locally. And then there's also the ability to publish to Azure using the same underlying plumbing. Yep. Publish to Azure. Here it is. I don't have my account set up quite right here. But, oh, there we go. I'm not going to log in right now. OK. But yeah, it was. Right. OK. So we talked about Xamarin. We talked about ASP.NET core. I should just clarify briefly that the Docker support is in the preview, not in GA. OK. But all the other features I showed are in GA. Well, the live players hold in the preview as well, right? Even in Visual Studio for Windows, that's in preview as well. Yep. Yeah. So preview has the Azure Functions, live players, IoT, and Docker. OK. And then we've also got Sport for Unity. Yes. And that's something that's very exciting because I personally find game development very exciting. I go to the game developers conference most years. I've done a bunch of game jams. And yeah, I've seen game developers using Unity on Mac, having trouble writing C sharp code in the various edge options they had available. And so we've actually brought over the Visual Studio tools for Unity experience from Windows to Mac. So it's not just the ability to edit the files, but also intelligence for the special method names that Unity has, the ability to attach to the Unity player, and also a way to rearrange the solution tree. So it looks like the Unity file layout. So you get less of a mismatch between the Unity and Visual Studio views of the world. OK. So kind of getting back to the idea of what you can expect and what will be on there. Let's talk about kind of your philosophy for what types of things will be there. And then if there are things people want, they continue to just go to User Voice and ask for them. So the Cloud Explorer, right? I don't know if it's in there. If it's not in there, what's our thinking on that? And how do you envision moving forward in terms of keeping the experience as close as possible? And I should even ask, is that really the target scenario, right? Is it more important for me, being Visual Studio for Windows, to be able to go over to Visual Studio for Mac and not whine that things aren't there? Or is it more important for somebody who's on the Mac not using Visual Studio at all to come over and get a full featured IDE? Are those equally important? It is a bit of both. There are certain scenarios, the mobile and cloud scenarios and game development by Unity that we are focused on because we'd rather do some things really well and those things that, for a lot of people, those are the things that they need to do and they don't need the other features. And so we want to do those things really well and add other things later. So in the near term, at least, our focus will be on adding features that augment those particular areas. But longer term, we are definitely interested in supporting other project types and so on. And as you mentioned, our user voice is the way to let us know about things that, for developers to let us know about the features that they care about and that they want to see. Right. Yeah, that'll be interesting to watch. Yeah. To see which things are most asked for and which are, it's kind of an interesting way of validating the features that are in Visual Studio because anything that's not in there, someone can go to user voice and say, oh, you've got to have this, you've got to have that. And then if it turns out what features get the most people supporting them on user voice and what features not so much. That'll be the first thing to watch. Yeah, it's difficult. Like, I would love to give everyone every feature that's on user voice. Of course, right. But we have limited capacity to build things and so we have to focus on the things that we think will make the most difference for the developers using VS for Mac. Right. Is there an extensibility model in Visual Studio for Mac? Yes, there is. Okay. Yeah. It's not exactly the same as the extensibility model for VS for Windows, but there is a very, very rich model. In fact, even things like our C-Sharp support is an extension. The Unity support is an extension. Doc support is an extension. The ID is actually a collection of about, I think, 60 extensions. Okay. And we can actually go to the extension gallery and we only have a few extensions. Oops, I think our preview doesn't have extensions right now. Okay. But here we can see the list of extensions that are built in. So things like the .NET Core Debug is an extension. That's another conversation to have. What extensions do people want? And how much work is it for someone building an extension on Windows to also get it to run in the Mac? Yeah, that's something that is definitely in its early days. Actually, something that I just brought up here is that we have an extension for creating extensions. Okay. So it is actually just file new project and create an extension project. Yep. However, sharing code between extensions on VS and Windows does pose a few challenges because they are different code bases to some extent. There are libraries that they have in common. If you're writing Roslin analyzers, they will work on both. Right. If you're using the Visual Studio Text Editor API, that will actually work on both because as part of bringing the Visual Studio Web Editors over, we actually also brought over the Visual Studio Text Editor. Okay. So if you have extensions that are operating on the text buffer, those are actually portable now. So you'll have to package them differently, but you should be able to share a lot of code. So we're interested in hearing from developers who are writing extensions, what kinds of extensions they want to build so we can focus on making those easier to share. Yep. And then working with anyone currently writing a Windows extension that wants it to work in the Mac after having difficulty or have questions about it, they know who to ask. Yeah, for sure. I'm probably the best person to ask about that. I actually wrote the extension that helps you write extensions. Okay. It's something that I care a lot about. All right. Cool. Okay. So there are, there's a community edition, there's a pro edition, there's an enterprise edition, so same licensing as Visual Studio. Is that the same? So if you have a pro or enterprise, you can download the corresponding version. If you just want to start playing with it, you can go get community. People should play around with it, use the usual places to let us know what's going on, particularly user voice and other places. Exactly. Yeah. And to get to user voice or send feedback, we have those right there in our help menu. Report a problem, provide a suggestion. Those will send you to our user voice or to our developer community portal. All right. Awesome. Thanks for coming on and showing us this. Thank you. This is really, really exciting stuff. Yeah. I'm super excited. The people build with it. Yeah. Download it, play around with it, let us know what you think, and we'll see you next time on Visual Studio Toolbox.