How is it possible that the .Net Framework version within a Docker container is different, dependent on what host machine it runs on?
On my development Windows 11 machine (which is itself .NET Framework Version: 4.8.1 or later):
- .NET Framework Version: 4.8
On my development Windows Server 2019 machine (which is itself .NET Framework Version: 4.8):
- .NET Framework Version: 4.7.2
Framework versions obtained with code from Microsoft:
$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full' -Name Release
switch ($release) {
{ $_ -ge 533320 } { $version = '4.8.1 or later'; break }
{ $_ -ge 528040 } { $version = '4.8'; break }
{ $_ -ge 461808 } { $version = '4.7.2'; break }
{ $_ -ge 461308 } { $version = '4.7.1'; break }
{ $_ -ge 460798 } { $version = '4.7'; break }
{ $_ -ge 394802 } { $version = '4.6.2'; break }
{ $_ -ge 394254 } { $version = '4.6.1'; break }
{ $_ -ge 393295 } { $version = '4.6'; break }
{ $_ -ge 379893 } { $version = '4.5.2'; break }
{ $_ -ge 378675 } { $version = '4.5.1'; break }
{ $_ -ge 378389 } { $version = '4.5'; break }
default { $version = $null; break }
}
if ($version) {
Write-Host -Object ".NET Framework Version: $version"
} else {
Write-Host -Object '.NET Framework Version 4.5 or later is not detected.'
}
This is causing me no end of problems and violates everything I thought I knew about Docker and containers (i.e. you build and image once and it’s the same everywhere). How do I ensure the .Net Framework version remains the same?