In het kort wat ik probeer te doen: een .NET Core applicatie maken die ik zowel op Linux met .NET Core kan draaien, als op Windows en Mono met het volledige framework. En hem daarnaast zowel op Linux als Windows kunnen ontwikkelen.
Dit is mij gelukt door het volgende in de csproj te zetten:
Daarnaast moest ik de .NET 4.6 multi-targeting pack installeren (omdat mijn Windows 10 VM alleen .NET Core had).
Je ziet hier dat ik meerdere frameworks en runtime identifiers heb. Het idee is dus dat ik netcoreapp2.0 kan gebruiken op Linux distributies waar .NET Core ondersteund wordt. En dat ik net46 kan gebruiken op machines waar alleen Mono draait.
In mijn Windows VM werkt het sindsdien prima en kan ik zonder meer de standaard dotnet CLI commando's uitvoeren:
Zodra ik echter weer op Linux ben, dan werken deze commando's alleen als ik elke keer het framework specificeer:
De reden hiervoor zal zijn, omdat er geen .NET 4.6 targeting pack voor Linux bestaat en hij standaard probeert het voor beide frameworks te builden etc.
Wat ik nu dus eigenlijk wil, is tegen die dotnet CLI commando's zeggen "luister, ik wil op deze machine alleen het netcoreapp2.0 framework gebruiken" en dat ik vanaf dat moment gewoon weer "dotnet run" kan doen en het by default weer werkt.
Ik heb ernaar gezocht en kon echter niets vinden.
En nu ben ik benieuwd of ik erg kippig ben of dat hier wel degelijk een oplossing voor is
Alvast bedankt.
PS
Ik gebruik de Windows build met .NET 4.6 dus alleen maar om het op Mono te laten draaien
Helaas zijn er custom Linux distributies waar ik alleen Mono heb en .NET Core het niet op doet. Door .NET 4.6 te targetten op een Windows machine kan ik het alsnog op Mono draaien.
Dit is mij gelukt door het volgende in de csproj te zetten:
code:
1
2
3
4
5
6
7
8
9
10
11
| <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks> <RuntimeIdentifiers>linux-x64;win-x64</RuntimeIdentifiers> <AssemblyVersion>1.2.0.0</AssemblyVersion> <Version>1.2</Version> </PropertyGroup> </Project> |
Daarnaast moest ik de .NET 4.6 multi-targeting pack installeren (omdat mijn Windows 10 VM alleen .NET Core had).
Je ziet hier dat ik meerdere frameworks en runtime identifiers heb. Het idee is dus dat ik netcoreapp2.0 kan gebruiken op Linux distributies waar .NET Core ondersteund wordt. En dat ik net46 kan gebruiken op machines waar alleen Mono draait.
In mijn Windows VM werkt het sindsdien prima en kan ik zonder meer de standaard dotnet CLI commando's uitvoeren:
code:
1
2
3
| dotnet run dotnet build dotnet publish |
Zodra ik echter weer op Linux ben, dan werken deze commando's alleen als ik elke keer het framework specificeer:
code:
1
2
3
| dotnet run -f netcoreapp2.0 dotnet build -f netcoreapp2.0 dotnet publish -f netcoreapp2.0 |
De reden hiervoor zal zijn, omdat er geen .NET 4.6 targeting pack voor Linux bestaat en hij standaard probeert het voor beide frameworks te builden etc.
Wat ik nu dus eigenlijk wil, is tegen die dotnet CLI commando's zeggen "luister, ik wil op deze machine alleen het netcoreapp2.0 framework gebruiken" en dat ik vanaf dat moment gewoon weer "dotnet run" kan doen en het by default weer werkt.
Ik heb ernaar gezocht en kon echter niets vinden.
En nu ben ik benieuwd of ik erg kippig ben of dat hier wel degelijk een oplossing voor is

Alvast bedankt.
PS
Ik gebruik de Windows build met .NET 4.6 dus alleen maar om het op Mono te laten draaien
Ask yourself if you are happy and then you cease to be.