【发布时间】: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