IServiceProvider在.NET Standard中不可用?

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

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

我有一个实现IMarkupExtension的类,只是用这个类编译一个项目失败了:

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

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

项目引用非常简单:

enter image description here

类实现不能更简单:

namespace OpenNETCF
{
    public sealed class ScaledDouble : IMarkupExtension
    {
        public object ProvideValue(IServiceProvider serviceProvider)
        {
            return null;
        }
    }
}

我可以通过手动编辑项目文件以包含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>

这里发生了什么??

xamarin.forms .net-standard
1个回答
1
投票

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

PM> Install-Package System.ComponentModel

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