Open mjcheetham opened 3 years ago
Note that .NET Framework 4.7.2 was only first pre-installed in Windows 10 April 2018 Update (version 1803), and the last version of Windows to support 4.7.2 is Windows 7 SP1.
Consumers of System.CommandLine
that must support Windows Vista cannot target .NET Core (not supported) and also cannot target any version of .NET Framework beyond 4.6, so it's open as to what the lowest reasonable .NET Framework version you'd want to try and support, be that 4.5, 4.6, 4.6.1, or newer.
Problem Background
When consuming a .NET Standard (
netstandardx.y
) package from a .NET Framework (net4x
) project that's below .NET Framework 4.7.2 (for examplenet461
) a bunch of extra support and shim binaries must be distributed due to some compatibility issues. This can balloon the size of the application that must be distributed to customers.See https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support, table footnote [2]:
In the multi-targeting documentation it is recommended that library authors should:
Source: https://docs.microsoft.com/en-us/dotnet/standard/library-guidance/cross-platform-targeting#multi-targeting
When application authors wish to consume
System.CommandLine
, but are unable to target .NET Frameworks newer than 4.7.2 they must ship all these extra DLLs because theSystem.CommandLine
package only supports .NET Standard 2.0 (netstandard2.0
)Proposal
Introduce a
net461
target framework in theSystem.CommandLine
project so that consumers that must target .NET Framework have a better experience.In
src/System.CommandLine/System.CommandLine.csproj
: