我正在尝试将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>
这里发生了什么?
答案 0 :(得分:1)
.NET标准项目没有默认程序集。您应该添加引用或从nuget下载。
PM&GT; Install-Package System.ComponentModel