.NET标准API参考

时间:2016-12-02 02:36:59

标签: .net .net-core .net-standard

UPDATE:

现在好像是open issue。所以我想在完成这项工作之前我将不得不依赖.NET Core API reference并祈祷我不会击中其中一个43 APIs that .NET Framework 4.6.1 doesn't support,但正式应该是...... {/ p>

同样依赖.NET Core API参考并考虑与.NET标准相同可能会非常令人惊讶。例如,当我查看命名空间列表时,我可以看到System.Drawing但是当点击它时,我们意识到这是一个仅包含6个结构的almost empty namespace

有这样的几个名称空间吗?我不知道我必须比较.NET核心和.NET Framework文档才能得到答案。

原始帖子:

我试图找到.NET标准API参考。

this page上,只有指向.NET Core API reference.NET Framework API reference的链接。

是的我已经搜索过,而且我已经读过其他人的问题了。例如,this answer指向.NET Core API引用而不是.NET标准,并且Github issue feed

但是.NET Core和.NET Standard是不同的。 .NET Core实现.NET标准API。

我在这里看到的一个大问题是例如基于official documentation .NET Framework 4.6.1将实现.NET Standard 2.0

enter image description here

好的,除了.NET Standard Github readme page也在说

  

另一方面,.NET Standard 2.0添加了.NET Framework 4.6.1已经支持的许多API。 delta看起来如下:

     
      
  • .NET Standard 2.0添加了.NET Framework 4.6.1已支持的14,994个API

  •   
  • .NET Standard 2.0只有43个.NET Framework 4.6.1不支持的API   最初,我们计划简单地从.NET Standard 2.0中删除这些API,以便更容易理解.NET Framework 4.6.1的工作原理。

  •   
     

然而,我们得到了很多关于此的反馈。您告诉我们,这个决定使得很难推断.NET标准版本规则。因此,我们决定简化这一点:

     
      
  • .NET Standard 2.0将是.NET Standard 1.6的严格超集。换句话说,.NET Standard 2.0和1.x之间不会发生重大变化。

  •   
  • .NET Framework 4.6.1将允许引用针对.NET Standard 2.0编译的二进制文件。   考虑到.NET Framework 4.6.1不支持的API数量很少,并且这些都是采用率较低的全新API,我们认为这是一个更好的权衡。

  •   
     

您可以使用API​​端口扫描给定的应用程序,以确保应用程序中的代码不依赖于这些API。

那又怎样?他们对这个问题的解决方案是to scan a given application?因此,如果我开始一个新项目,假设我还没有编写代码,那么我会针对.NET Standard并祈祷我不会得到应该支持的不受支持的API?

在Xamarin或UWP等其他框架中是否还有其他此类案例?这对2.0列中的vNext意味着什么?我是否应该担心其他框架中的其他不受支持的API,因为Considering the number of APIs that [Framework name] will not support is low and that these are all brand-new APIs with low adoption we believe this is a much better trade-off

我能从这个问题中找到最接近的答案是查看NETStandard.Library NuGet package的依赖关系。然而,这给了我1.3版本的依赖(不是1.6,或者我真的不理解这一部分),并且它没有给我下一个2.0的API参考,这些参考应该已经确定。

我们是否可以为每个.NET标准版本提供完整的文档API 真正列表? .NET Standard的唯一目标是为开发人员提供这些非常重要的信息,为什么我找不到它?

2 个答案:

答案 0 :(得分:3)

  

我正在尝试查找.NET Standard API参考。

这是here。例如,all the APIs for netstandard1.0。它不如MSDN文档好 - 但是。他们是working on that。但是如果你想要一个特定的API列表,它就在那里。

  

他们解决这个问题的方法是扫描给定的应用程序吗?

嗯,我认为这比检查源代码的每一行并在文档中查找要容易得多......

  

因此,如果我开始一个新项目,给出我还没有编写代码的事实,我会针对.NET Standard并祈祷我最终得不到应该支持的不受支持的API?

如果您定位netstandard,则无法调用任何不在netstandard版本中的API。作为一般规则,您应该从定位netstandard1.0开始,只有在需要其他API时才会向上移动。

关于“不支持的API”,这是一个完全不同的问题。在这种情况下,您谈论的是一个平台(如Xamarin.Android 7.0或.NET 4.6.2),它声明支持给定的netstandard版本,但在运行时为某些API抛出NotSupportedException 。不幸的是,故事的那部分非常多。我们现在还有什么样的工具尚不得而知。今天没有任何事情。

  

在其他框架中还有像Xamarin或UWP这样的其他案例吗?

是。 Xamarin一直都有这个 - 他们从未完全支持.NET API。 UWP至少具有与.NET 4.6.2相同的限制。

  

这对于2.0列中的vNext是什么意思?

这意味着这些平台的当前版本将不支持netstandard2.0,但他们期望发布将支持netstandard2.0的那些平台的未来版本。

  

我是否应该担心其他框架中的其他不受支持的API

此时,我不担心。最终会有一些关于检测不支持的API的故事。今天你可以通过运行APIPort作为后编译步骤来实现目标。

答案 1 :(得分:0)

正如马丁在his comment中提到的那样,.NET API Browser正是我前一段时间想要的。

您可以选择并使用.NET标准API或任何Framework实现进行过滤,甚至可以选择任何版本。太完美了,微软应该早点做到这一点。

相关问题