我有一个NuGet程序包,它支持多个目标框架net45和netstandard2.0。目标框架(条件编译)的代码有所不同。
net45
netstandard2.0
如果我从.NET Framework 4.6.1应用程序中引用此程序包,尽管它名义上与两者都兼容,但似乎选择了net45版本而不是netstandard2.0版本。
确定此选择的优先规则是什么?对于为更高版本的.NET Framework(4.7.2、4.8,...)构建的应用程序,选择是否相同?
[如果库有这样的目标,它将选择最匹配的目标框架,该目标框架小于或等于您应用程序的目标框架。
如果不存在,它将降为网络标准目标(如果存在)。>
否则,该库不兼容。
令人沮丧的是,文档没有对此进行更详细的介绍,并且它们没有涵盖更复杂的场景(例如net461应用,引用netstandard2.0 libA,反过来引用多目标netstandard2.0,net461 libB-哪个框架已解决libB吗?)。对于那些您只需要尝试一下即可看到。
net461
netstandard2.0,net461
请参阅文档,例如here和here