Xamarin.forms IServiceProvider在.NET标准中不可用?
我正在尝试将PCL转换为.NET标准1.3,但失败了。我已经把失败缩小到一个非常简单的例子,我不明白为什么失败 我有一个类,它实现了Xamarin.forms IServiceProvider在.NET标准中不可用?,xamarin.forms,.net-standard,Xamarin.forms,.net Standard,我正在尝试将PCL转换为.NET标准1.3,但失败了。我已经把失败缩小到一个非常简单的例子,我不明白为什么失败 我有一个类,它实现了IMarkupExtension,只需使用该类编译项目就会失败: 类型“IServiceProvider”是在未引用的程序集中定义的。您必须添加对程序集“System.ComponentModel,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”的引用 它究竟为什么要为使用.NET标准的
IMarkupExtension
,只需使用该类编译项目就会失败:
类型“IServiceProvider”是在未引用的程序集中定义的。您必须添加对程序集“System.ComponentModel,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”的引用
它究竟为什么要为使用.NET标准的Xamarin表单库引入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>
这是怎么回事???.NET标准项目没有默认程序集。您应该添加参考或从nuget下载 PM>安装软件包System.ComponentModel
嗯,这些是Silverlight接口。检查一下。Silverlight是一种过时的技术,开发于2013年停止。您是否尝试过安装?