Closed Joe-Sewell-PreEmptive closed 2 years ago
Closing as we don't plan to ship additional versions of .NET Standard.
- Since .NET Standard 2.1 is released, are there plans to continue development in this repository for e.g. the shared BCL going forward with .NET 5+?
No, see The Future of .NET Standard.
- Are there multiple kinds of
netstandard.dll
for a single .NET Standard version? E.g. are there separate versions for .NET Framework to reference and for .NET Core / .NET 5+ to reference?
Yes and no. There is a single reference assembly for a given .NET Standard version that defines the API surface. That's the DLL you compile against when you target .NET Standard.
In addition, each implementation of .NET Standard ships their own version of netstandard.dll
which contains type forwards to the assemblies that implement it. .NET Framework has one, .NET Core has one, and so does Mono.
- Do the tags / branch names in this repository correspond to a .NET Standard version or something else?
We don't really use tags because our release build build process is complicated and spans multiple repos. We do, however, use branches in order to stabilize and take changes deliberately. Often, these are cherry picked commits or ported by hand, depending on complexity.
- It looks like there are patch releases; are there patch versions of a single .NET Standard version?
Patches for .NET Standard wouldn't change API versions but only build/packaging issues. And yes, we have made those changes.
- Are there other repositories which are being used to create
netstandard.dll
?
The reference assembly is built here, however each implementation will also have to build theirs. For .NET Core this being done in dotnet/runtime.
- Is there a way to determine, from the repository, which commit is the one used for a given release?
I don't believe so.
I was looking through this repository to determine if .NET Standard 2.1 libraries support default interface methods - it looks like they do, given the presence of
System.Runtime.CompilerServices.RuntimeFeature.DefaultImplementationsOfInterfaces
, as well as my own experimenting in VS 2019. It seems I was mistaken when thinking that this was not the case, so I'm glad this repository is easily accessible to determine this.But while doing this, I found it difficult to determine what commits were included in this particular .NET Standard version. I see that there's a tag
v2.1.0-prerelease.19126.1
, as well as branchesrelease/2.0.0
,release/3.0
, andrelease/3.0-preview9
. One of the machines I tested VS 2019 on had anetstandard.dll
assembly, itself targeting .NETStandard v2.1.0, with AssemblyInformationalVersion1.1.0+a5b5f2e1e369972c8ff1e2183979fab6099f52ef
; this commit is part of therelease/3.0
branch. However, another machine had a same-named assembly, targeting .NETCoreApp v3.0 and AssemblyInformationalVersion3.0.0+4ac4c0367003fe3973a3648eb0715ddb0e3bbcea
, and I don't see that commit hash in this repository.Additionally, this blog post states that 2.1 will be the last version, but there is another prerelease tag
v2.2.0-prerelease.19564.1
and on GitHub it's labelled .NET 5.0 Preview 2.So I have a few questions for understanding this repository:
netstandard.dll
for a single .NET Standard version? E.g. are there separate versions for .NET Framework to reference and for .NET Core / .NET 5+ to reference?netstandard.dll
?Thank you for your consideration.