I have a .net6 project, and running it with .net 6 sdk works fine:
nix-shell -p dotnet-sdk_6 --run "dotnet run"
Running it with combining .net6 and .net8 sdks builds correctly, but at run gives the following error:
❯ nix-shell -p 'with pkgs.dotnetCorePackages; combinePackages [sdk_6_0 sdk_8_0]' --run "dotnet run"
[...]
Unhandled exception: System.ComponentModel.Win32Exception (2): An error occurred trying to start process '/home/dpd-/prj/Test/bin/Debug/net6.0/Test'
with working directory '/home/dpd-/prj/Test'. No such file or directory
at System.Diagnostics.Process.ForkAndExecProcess(ProcessStartInfo startInfo, String resolvedFilename, String[] argv, String[] envp, String cwd, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
at Microsoft.DotNet.Cli.Utils.Command.Execute(Action`1 processStarted)
at Microsoft.DotNet.Tools.Run.RunCommand.Execute()
at System.CommandLine.Invocation.InvocationPipeline.Invoke(ParseResult parseResult)
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
Running a .net8 project with combined sdks works fine.
A way to force using the .net6 sdk is to write into global.json
(note major
and not latestMajor
):
{
"sdk": {
"version": "6.0.0",
"rollForward": "major"
}
}
But I cannot do this in shared projects and moreover this prevents:
- having mixed sdk projects in the same solution
- use c# 12 in .net6 projects
❯ nix-shell -p 'with pkgs.dotnetCorePackages; combinePackages [sdk_6_0 sdk_8_0]' --run "dotnet sdk check"
.NET SDKs:
Version Status
----------------------------------------
6.0.417 Patch 6.0.418 is available.
8.0.100 Patch 8.0.101 is available.
Try out the newest .NET SDK features with .NET 8.0.101.
.NET Runtimes:
Name Version Status
---------------------------------------------------------------------
Microsoft.AspNetCore.App 6.0.25 Patch 6.0.26 is available.
Microsoft.NETCore.App 6.0.25 Patch 6.0.26 is available.
Microsoft.AspNetCore.App 8.0.0 Patch 8.0.1 is available.
Microsoft.NETCore.App 8.0.0 Patch 8.0.1 is available.
The latest versions of .NET can be installed from https://aka.ms/dotnet-core-download. For more information about .NET lifecycles, see https://aka.ms/dotnet-core-support.
❯ nix-shell -p 'with pkgs.dotnetCorePackages; combinePackages [sdk_6_0 sdk_8_0]' --run "dotnet --info"
.NET SDK:
Version: 8.0.100
Commit: 57efcf1350
Workload version: 8.0.100-manifests.6c33ef20
Runtime Environment:
OS Name: nixos
OS Version: 23.11
OS Platform: Linux
RID: linux-x64
Base Path: /nix/store/z9z1d5lz5gf84h252q6m541jizyygi35-dotnet-sdk-8.0.100/sdk/8.0.100/
.NET workloads installed:
Workload version: 8.0.100-manifests.6c33ef20
There are no installed workloads to display.
Host:
Version: 8.0.0
Architecture: x64
Commit: 5535e31a71
.NET SDKs installed:
6.0.417 [/nix/store/2935l4sngzxccv59lrb2fnbp33wjpqja-dotnet-core-combined/sdk]
8.0.100 [/nix/store/2935l4sngzxccv59lrb2fnbp33wjpqja-dotnet-core-combined/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.25 [/nix/store/2935l4sngzxccv59lrb2fnbp33wjpqja-dotnet-core-combined/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.0 [/nix/store/2935l4sngzxccv59lrb2fnbp33wjpqja-dotnet-core-combined/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.25 [/nix/store/2935l4sngzxccv59lrb2fnbp33wjpqja-dotnet-core-combined/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.0 [/nix/store/2935l4sngzxccv59lrb2fnbp33wjpqja-dotnet-core-combined/shared/Microsoft.NETCore.App]
Other architectures found:
None
Environment variables:
DOTNET_ROOT [/nix/store/px7xz91qvrvs95grisn92h484rrk1f5x-dotnet-core-combined]
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download