Visual Studio 2017 and .NET Standard promise to bring exciting changes to .NET-based development efforts, and Gepsio will be taking full advantage of these changes. Gepsio’s cross-platform vision, as outlined here
, is to make use of .NET Standard to bring Gepsio’s functionality to the full .NET Framework, .NET Core, the Universal Windows Platform, Mono, and Xamarin for iOS and Android.
The Wait for .NET Standard 2.0
The big waiting game for moving on the cross-platform story is with .NET Standard 2.0. As discussed previously, .NET Standard 2.0 will contain support for the classes in the XML Schema namespace not available in earlier versions of .NET Standard. Since Gepsio heavily leverages XML Schema, .NET Standard support for XML Schema is a prerequisite for any migration of the code base over to .NET Standard. The good news is that the .NET Portability Analyzer has been run against the current Gepsio binary and its API usage was found to be 100% compatible with .NET Standard 2.0. The wait for the 2.0 release is necessary, because the code base is only 73.31% compatible with .NET Standard 1.4 and 73.68% compatible with .NET Standard 1.5 and 1.6 due to Gepsio’s use of classes in the XML Schema namespace. It is currently assumed that .NET Standard 2.0 will be released in the same time frame as Visual Studio 2017, which, according to current documentation, is currently slated for some time in the spring of 2017.
From Codeplex to GitHub
Once .NET Standard 2.0 becomes available, and the code base is migrated to the new platform, the project will find a new home at GitHub. There have been a few requests to move the project over to GitHub to allow Git clients to repo the solution, and the new .NET Standard reconfiguration seems like a good time to make the change. The historical project will remain at Codeplex
, but, once the .NET Standard migration is complete, new code will be available at GitHub.
As a part of this change over to Git, the solution folders will be simplified to match de facto conventions used by other GitHub projects. There will be a few folders at the root of the solution:
- src, where the source will be stored
- test, where the unit tests will be stored
- docs, for documentation and possibly a GitHub Pages site for the project
- nuget, for NuGet specification files and other related information
Simplified Solution Structure
A previous post
discussed a restructuring of the solution which would enable Gepsio to provide several different versions of the .NET Framework. The restructuring, based on a Visual Studio 2015 project type called Shared Projects, allowed one code base to be used in different referencing projects, each targeting a different version of .NET. With the move to .NET Standard 2.0, only one version of the .NET Framework — version 4.6.1 — will be supported, so all of the other various .NET Framework target folders will be removed.
The overall concept of a shared project folder containing the source, as well as other projects for various targets, will remain. It is expected that the solution will have projects for various platform-specific compilation targets, such as .NET Core, Mono, and Xamarin, but they should all be able to use the code from the main Shared Project containing the Gepsio source.
A previous post
outlined the original thoughts behind Gepsio’s support for the Universal Windows Platform. At the time, it was envisioned that the solution would contain a separate implementation of the various XML interfaces usable by the UWP compilation target. Work was well underway when .NET Standard was announced. However, .NET Standard promises to support UWP with a standard implementation, so UWP-specific interface implementations for XML support are unneeded. Therefore, the UWP project will be removed and replaced with a UWP compilation project that supports .NET Standard.
Increased XBRL Conformance
At the end of the day, Gepsio’s raison d’être is to provide support for the XBRL specification. To be honest, this work has been sidelined in favor of building up cross-platform support. Once .NET Standard 2.0 is in place, and Gepsio’s code base is set up to offer that cross-platform support, work can continue on Gepsio’s support for the XBEL specification. This vision includes support for the various XBRL specifications, including Dimensions and Formulas.