2
我試圖將PCL轉換爲.NET標準1.3並失敗。我將失敗範圍縮小到一個非常簡單的例子,我不明白爲什麼失敗。IServiceProvider在.NET標準中不可用?
類型「的IServiceProvider」在沒有引用的組件定義:
我有一個實現
IMarkupExtension
和簡單的編譯只該類項目一類失敗。您必須添加對程序集「System.ComponentModel,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a」的引用。
爲什麼地球上試圖將System.ComponentModel
拉入使用.NET標準的Xamarin Forms庫?對我來說完全是無稽之談。
該項目引用是,你可以得到簡單:
類的實現不能再簡單不過:
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的接口。檢查[兼容性圖表](https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support)。 Silverlight是死的技術,開發在2013年停止。 –
您是否嘗試安裝[此軟件包](https://www.nuget.org/packages/System.ComponentModel/)? –