【问题标题】:IServiceProvider not available in .NET Standard?IServiceProvider 在 .NET Standard 中不可用?
【发布时间】:2017-12-23 22:47:57
【问题描述】:

我正在尝试将 PCL 转换为 .NET Standard 1.3,但失败了。我已将故障范围缩小到一个非常简单的示例,我无法理解它为什么会失败。

我有一个实现 IMarkupExtension 的类,并且仅使用该类编译项目失败:

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

到底为什么它试图为使用 .NET Standard 的 Xamarin Forms 库引入 System.ComponentModel?这对我来说毫无意义。

项目参考很简单:

类的实现再简单不过了:

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>

这是怎么回事?

【问题讨论】:

  • 嗯,这些是 Silverlight 接口。检查compatibility chart。 Silverlight 是一种死技术,开发于 2013 年停止。
  • 您是否尝试安装this package

标签: xamarin.forms .net-standard


【解决方案1】:

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

PM> Install-Package System.ComponentModel

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多