The time has come to migrate away from the old *.csproj
and project.json
formats in favour of the new and improved *.csproj
format that is supported by Visual Studio 2017 and Visual Studio Code
The following steps are required to be done on each repository
dotnet migrate
(including adding missing projects and verify all tests) (@thecodejunkie)Directory.build.props
file and update all * .csproj
files (see MiniProfiler for an example)DisableImplicitFrameworkReferences
element to all *.csproj
for full-framework builds (see OwinHttpMessageHandler for an example)netstandard1.3
again (need to update build.cake
to reflect this, i.e all references of netstandard1.6
)build.cake
to support running on Mono with the new project SDK (@akoeplinger confirmed that xbuild
will no longer be able to build the new project format on mono`)xunit 2.2.0
and xunit.runners.visualstudio 2.2.0
DisableImplicitPackgeReference
element and set it to trueNETStandard.Library v1.6.1
NETStandard.Library
The only Nancy.Demo.*
project that was ported to project.json
was the new Nancy.Demo.Hosting.Kestrel
project. Because of this, all other demo projects ends up with very bloated *.csproj
files after dotnet migrate
has been run on the projects. We need to clean these up and make them use the new, lighter, format
http://rehansaeed.com/cleaning-up-csproj/
Investigate using a single MSBuild invocation to speed up the execution time. Look at example https://gist.github.com/dasMulli/69f5303aa79a8cd4060e44891c90fd2d that was suggested by @dasmulli
Since we no longer can use xbuild
to build using Mono on *nix, we are going to have to resort to using FrameworkPathOverride
and defined at https://github.com/dotnet/netcorecli-fsc/wiki/.NET-Core-SDK-rc4#using-net-framework-as-targets-framework-the-osxunix-build-fails i.e we need to update build.sh
to include
export FrameworkPathOverride=$(dirname $(which mono))/../lib/mono/4.5/
It needs to point to 4.5
because of how Mono is formed to store their artificats http://www.mono-project.com/docs/about-mono/releases/4.4.0/#class-libraries
Note: The
4.5
folder contains the actual assemblies that are used during runtime. We鈥檙e considering these the latest assemblies from now on, i.e. right now they鈥檙e implementing .NET 4.6.1. Unfortunately, we couldn鈥檛 rename this folder as too many apps and libraries hardcoded checks for this path.
We need to go through all repositories and migrate them + update the build scripts
This looks like a hell of an epic
@thecodejunkie If you can point me to a branch where you have done one, I can help out.
@Sphiecoh I'm currently exploring a bit on my machine to get an idea of exactly what we want to do and how we do it. Once I've nailed all of that down, then I will complete the main Nancy repo and then we can take community help for the remaining repositories. 馃憤
@cemremengu I'm using this as a semi-structured brain dump of stuff I can think of or come across while working on this 馃槃
Most helpful comment
This looks like a hell of an epic