DotVVM 1.1 Alpha with .NET Core Support

Published: 10/10/2016 1:02:00 AM

During last month, we were working mainly on .NET Core support for DotVVM. Today, we are releasing an alpha release of DotVVM 1.1.

There are several breaking changes we had to made in the framework to support both OWIN and ASP.NET Core. Our plan is to support both platforms and have all features of DotVVM available on both of them.


Changes in NuGet Packages

In the 1.0 version, we had two NuGet packages - DotVVM and DotVVM.Core. They contained everything including the OWIN middlewares and bunch of classes which were required to host the DotVVM application.

In 1.1, we have additional DotVVM.Owin and DotVVM.AspNetCore packages which contain the hosting infrastructure for OWIN and ASP.NET Core (working with both .NET Framework and .NET Core runtimes).

In the OWIN application, you'll need to install the DotVVM.Owin package, which depends on the DotVVM and DotVVM.Core.

In the ASP.NET Core application, you'll need to install the DotVVM.AspNetCore package (which also depends on DotVVM and DotVVM.Core).

If you have a project which contains only DotVVM controls, the package DotVVM should be enough to reference.


Upgrade from DotVVM 1.0

Currently, DotVVM 1.1-alpha on OWIN requires .NET Framework 4.6.1. We may change this in the future releases back to .NET 4.5.1, but to test the alpha release, you'll need to upgrade the project do .NET 4.6.1.

Also, you need to add the DotVVM.Owin NuGet package to the project, since the DotVVM contains only the framework itself and not the hosting infrastructure.

Additionally, there are several changes in the API:

  • Instead of the context.OwinContext property, use the context.GetOwinContext() method.
  • Instead of the context.OwinContext.Authentication, use the context.GetAuthentication() method.
  • The IDotvvmPresenter interface changes the signature of the ProcessRequest method - it accepts an argument of type IDotvvmRequestContext instead of DotvvmRequestContext type.
  • The DotvvmAuthenticationHelper.ApplyRedirectResponse was renamed to DotvvmAuthentication.ApplyRedirect.

All these changes in the code may not be required in the future releases, but you need them in the 1.1-alpha version.


How to Try DotVVM in ASP.NET Core

We don't have a stable release of DotVVM for Visual Studio 2015 with .NET Core support yet, but you can try the nightly build which already have project templates and most features on DotVVM ASP.NET Core projects.


To enable the nightly builds, download the DotVVM Insider Program App and indicate that you want the nightly builds.

Turn of insider program


Then, you can download and run the installer of DotVVM for Visual Studio 2015 and it will install the nightly build version.

New DotVVM project templates


What's Next

The alpha release is out an we are working on beta. We expect some API changes and we are now testing various platforms like Linux + .NET Core, Linux + Mono + OWIN and much more.

We are also working on other stunning features:

  • Electron integration which will allow to build multi-platform desktop apps in DotVVM. Electron is a framework that can embed a web application in a stand-alone window. It is used by Slack, Visual Studio Code and other popular applications and we feel that having a template for this kind of project could help many people.
  • Selenium Test Generator is a tool which can generate helper classes you can use in Selenium UI tests. It simplifies the UI testing and helps the tests to stay functional even if you change the user interface and structure of the page under test.
  • DotVVM CLI will allow to create DotVVM project, add pages, master pages, view models and user controls from command line. It is a good start for building extensions to other IDEs than Visual Studio.

We will be really happy if you try DotVVM 1.1 and give us feedback on our Gitter chat.

Tomáš Herceg

I am the CEO of RIGANTI, a small software development company located in Prague, Czech Republic.

I am Microsoft Most Valuable Professional and the founder of DotVVM project.