2017-08-28 47 views
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庫?對我來說完全是無稽之談。

該項目引用是,你可以得到簡單:

enter image description here

類的實現不能再簡單不過:

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

嗯,這些都是Silverlight的接口。檢查[兼容性圖表](https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support)。 Silverlight是死的技術,開發在2013年停止。 –

+0

您是否嘗試安裝[此軟件包](https://www.nuget.org/packages/System.ComponentModel/)? –

回答

0

.NET標準項目沒有默認程序集。您應該從nuget添加參考或下載。

PM>安裝,包裝System.ComponentModel