MS的SO和文档中有很多问题,关于什么是.net-Standard概念,什么版本在什么框架中实现,如何定位和引用不同的.net-Stantard,.net-Core或.net - 框架版本以及兼容性问题是什么......
然而,我找不到任何有关如何完整“有效”的好资源。我已经从github repo下载了源代码,似乎所有内容都实现如下:
throw null;
。所有这一切都很有意义,因为.net-Standard没有实现任何东西(除了明显的常量和枚举,预计在所有框架中都有相同的值)。但是,您也可以通过仅定位库中的.net-Standard适当版本来使用所有这些类型和成员。
但是,部分类必须包含在同一个程序集中的所有部分,并且所有部分必须声明为部分,并且不能多次实现相同的成员(也是有意义的)。这让我觉得这不是常规的编译器工作。
假设您有一个.net-Core控制台应用程序,该应用程序引用.net-Standard库程序集,其某些类型引用了未实现的.net-Standard DateTime结构。显然,预期的行为应该是运行时使用的类型应该是.net-Core的DateTime实现,但是使用.net-Standard编译的程序集不会使用它。
这是如何运作的?我可以推断两种可能的情况,其中没有一种是理想的:
那么,我在这里错过了什么,这实际上是如何运作的?任何人都可以提供任何解释说明的文件吗? (我确信它存在,我找不到它。)
答案 0 :(得分:1)
视频.NET Standard - Under the Hood中提供了解释,该视频在.NET Standard FAQ的末尾引用。更多信息在.NET Standard 2.0 README。
中提供答案实际上是您想象的两种方案的组合 - 在编译时重定向到引用程序集,并且在运行时发生类型转发到实现程序集。
另请参阅:The how-dare-you-call-me-an-idiot’s guide to the .NET Standard