PCLを.NET標準1.3に変換しようとしていますが、失敗しています。私は失敗をなぜ単純な例にまで絞り込んだのですか。なぜそれが失敗するのか理解できません。.NET StandardではIServiceProviderが使用できません。
私はIMarkupExtension
を実装し、単純にそのクラスがで失敗してプロジェクトをコンパイルしたクラスを持っている:
型「IServiceProvider」が参照されていないアセンブリで定義されています。アセンブリ 'System.ComponentModel、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'への参照を追加する必要があります。
なぜ.NET標準を使用している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のインターフェイスです。 [互換性チャート](https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support)を確認してください。 Silverlightはデッドテクノロジーで、2013年に開発が中止されました。 –
[このパッケージ](https://www.nuget.org/packages/System.ComponentModel/)をインストールしましたか? –