Build Microsoft will not, after all, restrict its open-source cross-platform web framework ASP.NET Core 2.0 from running on the Windows-only .NET Framework.

There are now two distinct forms of Microsoft’s .NET platform. One is called .NET Framework and runs only on Windows, while the other is called .NET Core and is open source and cross-platform.

Microsoft caused consternation in the .NET Community when it stated that ASP.NET Core 2.0, the next generation of its web application framework, would run only on .NET Core 2.0, rather than also targeting the .NET Framework.

At the Build developer conference under way in Seattle, The Reg spoke to Miguel de Icaza, Microsoft distinguished engineer and also a director of the .NET Foundation, which oversees the .NET Core and ASP.NET Core projects.

What about the retargeting of ASP.NET Core 2 from .NET Standard 2.0 to .NET Core 2.0?

“I would love to clear up that. I want to hide my face. The .NET Core 2.0 that’s coming, the one that they baked for Build, it’s a preview, and they discovered that they had a number of problems that they couldn’t address fast enough on .NET Framework. So the packages that went out only support running ASP.NET Core 2.0 on .NET Core 2.0. We’ll fix this, and we will run on .NET Framework.”

Microsoft distinguished engineer Miguel de Icaza

The curious thing is not that the preview had certain limitations, but that senior Microsoft personnel including Principal Program Manager Scott Hanselman commented on a Github thread about the change, its implications and possible workarounds. It seemed to be a done deal.

According to de Icaza, “Some of the engineers happened to think that we should use this opportunity to not support that [the .NET Framework]. That’s what that thread on Github was about. We are going to support .NET Standard and .NET Framework with ASP.NET Core 2.0.”

Microsoft will continue to support running ASP.NET Core on the .NET Framework for the foreseeable future, says de Icaza.

“We have a lot of developers on .NET Framework, and as long as that is the case we need to support it there.

“.NET Core does not surface all the APIs that .NET Framework has. There are a lot of things not there, that people rely on today. Second, there’s a very large ecosystem of ISVs today that rely on. So they are developers that need to run on .NET Framework, maybe they want to go to .NET Core but the reality is that they need some of these capabilities.

“There might be a day when .NET Core has everything that people need. When that day comes, we need to reconsider. But until that day comes, and it is years away, that cannot happen.”

What about the compromises involved in maintaining compatibility with .NET Framework, will that hold back ASP.NET Core or impair its performance?

The answer, says de Icaza, is to use conditional code to “innovate and pursue performance. There is a spectrum of things you can do while still targeting the common denominator. You can always light up new things.” It is similar to how, on a PC, applications can support the latest CPU or GPU innovations while still running on old hardware. “If the CPU has new capabilities let’s use them, otherwise fall back to old code.”

“That is the way I run the Xamarin business. You do not abandon your users, you keep compatibility, you do not break them. If we are a platform vendor, we have to have the back of our users. That is a business goal, though engineering might be harder.” ®