针对不同 .NET 版本的程序集之间是否存在显着差异?

Are there any significant differences between assemblies targeting different .NET versions?

当我创建 NuGet 包时,我总是问自己应该提供多少目标?通常我会创建从 4.0 到 4.6 的所有可能版本,以及介于两者之间的所有版本。

但这真的有必要吗?我注意到所有程序集的大小都相同,为了验证它们是否针对正确的版本,我使用了 JustDecompile。

我不是 IL 专家,所以我不知道在使用 ILDasm 打开程序集时要看什么。我是否仍然应该编译几个不同的版本,或者只有当我使用特定于更高 .NET 版本的东西(如 string.IsNullOrWhitespace 等)时才有意义?

No, target the lowest version you need. If will work fine on higher versions. Most Nuget packages target 4.0. Some require 4.5 because they took a dependency on async or http. There are ways to make your life very complicated by taking that dependency and still support XP. Don't. Only other consideration is whether you want to make it a PCL class library so it can run on other platforms. Meh, later.

– 汉斯·帕桑特