为什么.NET Framework项目可以在.NET Standard 2.0项目中添加为参考?

问题描述 投票:1回答:1

[在将.NET Framework 4.6.2项目转换为.NET Standard项目时,我注意到我可以在.NET Standard项目中添加.NET Framework项目引用,这在理论上听起来不正确。

为什么.NET Framework项目可以在.NET Standard 2.0项目中添加为参考?

c# .net asp.net-core .net-core .net-standard
1个回答
0
投票

具有.NET Standard项目时,将根据netstandard.dll对其进行编译。 .NET Framework和.NET Core都具有netstandard.dll(可将类型转发到mscorlib.dll或System.Runtime.dll)。这就是为什么您可以同时在.NET Core和.NET Framework中使用.NET Standard项目的原因。

那么,当您的.NET Standard项目引用.NET Framework项目(针对mscorlib.dll编译)时,会发生什么?

如果您具有引用链。NET Framework-> .NET Standard-> .NET Framework,则完全没有问题,因为在运行时您具有具有所有必需类型的mscorlib.dll。

但是。NET Core-> .NET Standard-> .NET Framework引用呢?在运行时,您只有System.Runtime.dll。 .NET Standard项目没有问题,因为netstandard.dll将类型转发到System.Runtime.dll。但诀窍在于。NET Core也具有mscorlib.dll!是的,它也只是类型转发到System.Runtime.dll类型。一切正常。 ...除非您将使用System.Runtime.dll中不存在的某些.NET Framework类型。

进一步阅读:.NET Framework兼容性填充

© www.soinside.com 2019 - 2024. All rights reserved.