IServiceProvider在.NET Standard中不可用?

cta*_*cke 5 xamarin.forms .net-standard

我正在尝试将PCL转换为.NET Standard 1.3并失败.我把失败归结为一个非常简单的例子,我无法理解为什么它会失败.

我有一个类实现IMarkupExtension并只是简单地编译一个项目,该类失败了:

"IServiceProvider"类型在未引用的程序集中定义.您必须添加对程序集'System.ComponentModel,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.

为什么它试图引入System.ComponentModel使用.NET Standard的Xamarin Forms库?对我来说完全是无稽之谈.

项目引用非常简单:

在此输入图像描述

类实现不能更简单:

namespace OpenNETCF
{
    public sealed class ScaledDouble : IMarkupExtension
    {
        public object ProvideValue(IServiceProvider serviceProvider)
        {
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以通过手动编辑要包含的项目文件来摆脱编译器错误System.ComponentModel,但不出所料,消费应用程序无法在运行时加载该类型.

<ItemGroup>
    <PackageReference Include="Xamarin.Forms" Version="2.3.4.267" />

    <!-- Required for IMarkupExtension and IServiceProvider to compile.  No idea why. -->
    <PackageReference Include="System.ComponentModel" Version="4.3.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这里发生了什么??

Nur*_*MAZ 1

.NET Standard 项目没有默认程序集。您应该添加参考或从 nuget 下载。

PM> 安装包 System.ComponentModel