This is the next in a series of blog posts that will cover the topics discussed in the ASP.NET Community Standup. The community standup is a short video-based discussion with some of the leaders of the ASP.NET development teams covering the accomplishments of the team on the new ASP.NET Core framework over the previous week. Within 30 minutes, Scott Hanselman, Damian Edwards, Jon Galloway and an occasional guest or two discuss new features and ask for feedback on important decisions being made by the ASP.NET development teams.
Each week the standup is hosted live on Google Hangouts and the team publishes the recorded video of their discussion to YouTube for later reference. The guys answer your questions LIVE and unfiltered. This is your chance to ask about the why and what of ASP.NET! Join them each Tuesday on live.asp.net where the meeting’s schedule is posted and hosted.
This week’s meeting is below:
No Jon Galloway today, but Scott and Damian wanted to handle as many questions about the recent announcements. Oh, and it was Damian’s birthday… so everybody be nice to him on his 29th birthday (again!)
The announcement of the runtime / tooling split was issued on Friday with the release schedule announced. First: .NET RC2 runtime and libraries will ship in mid-May. This release includes “anything you would put in your bin folder” Damian described the ASP.NET stack as the following:
Projects are locked down from the bottom up, and the “bug bar” is raised as each layer locks into place. Damian previously described the Microsoft methodology for delivering the stack, and the bottom three layers of this diagram are in escrow. There are candidate builds for those, and they will not be changed unless there is a significant ‘escrow-breaking’ issue found. The ASP.NET libraries had 5 issues needing to be repaired, and could have a candidate build ready by the time you read this. The Visual Studio layer had 12-15 issues remaining that could be completed by the end of the week.
Once the verification of these completed features is done, the team starts deploying the packages to NuGet.org, blog posts, documentation, and website updates need to be deployed. Scott pointed out that he has been working on a new website to make it easy for developers to get .NET He has even acquired a cool URL for this new site, and was given clearance to announce that site is dot.net Scott is currently working on the new version of that site that will provide a unified getting started experience.
The tooling, command-line experience that replaces dnx/dnvm/dnu, the Visual Studio tools, and the Visual Studio Code C# extension will be delivered as Preview 1 with the RC2. A follow-up Preview release will be issued with the RTM in late June. The quality of the libraries has been very high since the release candidate in November, and they continue to be very good. However, the tooling is much newer with the re-platform on top of the .NET CLI and has some rough edges. There are changes coming in the tooling, but the runtime APIs are not changing prior to RTM.
A few things have happened in the .NET development story since the RC1 release. Xamarin was acquired and is now part of the Microsoft .NET development experience. Customers want to be able to share code between project types, and this capability was not designed into the server-focused initial build of ASP.NET Core. The foundation of these other project types is MSBuild.
There are some issues with the MSBuild experience, including the requirement to use the Visual Studio IDE to work with a build file productively. We want to ensure that the effort to make the project file ‘human-editable’ as in project.json persists with the new MSBuild model that ASP.NET Core will begin using. We want to ensure that there is still a great experience working with this file in lightweight text-editors, and that is part of the work that will be done on this experience after the RTM of the Runtime libraries.
The other thing that we have learned is the Linux and Windows Nano have been a bigger driver for developers to migrate from .NET to .NET Core. Very large customers and very large solutions have raised concerns about the migration of an existing codebase to .NET Core. There will be some focused blog posts coming in the weeks ahead to discuss the enhancements that we plan in order to accommodate this type of migration.
The goal of this project is that dotnet should be dotnet, and you as a developer should not think about a flavor necessary to get it running on your hardware or your operating system. We want developers to only need to think about code, and everything else needed to manage that experience is just noise.
Scott asked if there were any problems created by this split. If you were using the RC2 nightly builds, you will see a breaking change with the NuGet package renaming to “Preview” for the tooling packages. You will have to clear your NuGet package cache to reset things. This can be accomplished:
- On Windows, use the nuget.exe command (download here) and execute “nuget locals all -clear”
- On Mac and Linux, enter your ~/.nuget/packages folder and clear the contents
In RC2 / Preview 1, there will be no change. In RTM / Preview 2, the only change you will see if the xproj files will be renamed by Visual Studio to a csproj. From that point on, project.json will live next to csproj. The team will then begin migrating features from project.json to the csproj file. Its possible that the project.json file remains, and contains all of the package references for NuGet and is renamed to nuget.json. The team has already tested some work that shows you will not need to list all of the files in your project file, one of the key benefits of the project.json model.
Question: Will SignalR still “unofficially” work?
Not sure of the current status, but it is one of the top priorities after the RTM.
Question: Do we have any commitment or knowledge from Azure team as to how long after RC2 release (or RTM for that matter) will PaaS components will support it?
The Azure team is working with the ASP.NET Core team, and this should be ready very soon after each release. Scott suggested that the two of them record the upgrade process for a web application as a demo.
Question: project.json is going away? Sadface
What were the things we liked? It was small, contained NuGet information, and could be edited by hand. Damian does not want to lose any of those benefits, and that is why they are working in several steps to complete this migration. Additionally, the team is building tooling at the command line so that you don’t have to work with the project file directly. Consider a possible npm-like command like “dotnet install json.net –save” to add a NuGet package to your project. There will be first class commands like this available.
The new MSBuild will not have a complete list of every file, so that should reduce the size of the build file. It will still be XML, but the team is committed to making that experience better for all .NET projects. This will be an enhanced MSBuild that has all of the best parts of project.json
Question: Will RC2 completely remove DNX?
Yes, it will not remove it from your system. It will no longer be required by the Visual Studio and .NET experience.
Question: Is RC2 the time to start working on production-worthy projects?
That’s up to you based on the tolerance you have for changes leading to RTM. We would like you to build with the RC2 to help identify issues that need to be addressed for RTM. The tooling may be rough and your feedback about that will help improve it prior to the tooling RTM.
Question: Is MSBuild open-source?
Yes – https://github.com/Microsoft/msbuild and Xamarin runs on MSBuild as of the Evolve 2016 conference.
Question: Sometimes when pulling libraries for RC2 bits we would see RC3 in some package names. Are these just naming bugs, RTM libraries, or something else?
That’s a dev feed that you’re hitting, and they needed to name the newest version of something when working on the ‘next version’ of something.
Question: Is it normal for dotnet watch to be slow, at least 30 seconds until recompile and server restart
The team has made some performance improvements in this area, and we hope that you aren’t seeing this performance in the future. They are not as fast as RC1, but 30 seconds is too long. Try again with the impending RC2 release.
Question: Will it be easier to point IIS at your wwwroot folder and just run without publishing?
This is how IIS express runs with Visual Studio. You can do this. But we don’t recommend you do it for production.
Question: Since the conversion tooling from legacy .NET to .NET Core is not ready, is it possible to mix .NET and .NET Core in a single application? If so, how do they communicate with each other?
It is possible, with the assumption that the same “app” is hosted on the same web application at “www.myurl.com” that hosts different .NET applications mapped with different IIS modules. The trick for you will be to figure out how to share state between the .NET Core and non-.NET Core projects.
Question: Can we deploy ASP.NET Core 1 to Azure Web Apps
We’re working on that now.
Question: Is the Azure Service Bus Client Library available for .NET Core?
This library is blocked on a dependency on System.ServiceModel.Syndication. The team is working on that port, and does not have a firm timeline.
Question: It doesn’t seem to be possible to receive model data from both form or json body. But from what I can tell it works in older versions of ASP.NET
This had been removed as a security concern to prevent a potential injection of content with a cross-site request forgery attack. You now need to declare where you expect the content to be coming from.
Question: Will it be possible to run windows commands in bash?
No… you can’t run Windows commands from bash, but you can run scripts that execute in a windows process.
Question: Will RC1 projects that run on mono still run via the dotnet command?
Not sure… in theory it should work.
Question: I’d like to see a demo of remote debugging with IIS
Sure… we can do that
At this point, our boss “called in to the show” and Scott took the call. From Scott’s phone, over the hangout we heard “we have dates!” There is lots of excitement around the upcoming RC2 release, and the team can’t wait to share them with you. Join us next week on live.asp.net and we’ll talk more about the RC2 release.