6

このようなPCL とは何かについての記事はかなり多くあります。

しかし、私が見つけたすべてのことから、彼らはほとんど次のようなことを言っています:

ポータブル ライブラリ ツール CTP は、新しい "ポータブル クラス ライブラリ" プロジェクト テンプレートを Visual Studio に追加します。これを使用して、再コンパイルせずにさまざまな .NET プラットフォームで実行されるクラス ライブラリを C# および VB で作成できます。

しかし、.NET (および Mono) がどのように機能するかについてのこの優れた説明を注意深く読むと、なぜ PCL が必要なのかがさらに不明確になりました。

いくつかのアセンブリを構築し、CIL バイトコード(他のプラットフォームで使用できる(対応するプラットフォームに (.NET の主なアイデアのように) CLR 実装がある場合)) が含まれている場合、問題は何ですか? では、なぜ PCL も必要になるのでしょうか。

4

2 に答える 2

7

IL は同じかもしれませんが、利用可能なライブラリは異なります。デスクトップ コンピューター、Windows 8 アプリ、Silverlight をターゲットにする場合は、これらすべての場所に実際に存在するものをコードで使用する必要があります。

ポータブル クラス ライブラリを使用すると、選択したプラットフォームに適用可能なライブラリ セットのみを使用できます。

詳細については、1 年ほど前のこの.Net Framework ブログを参照してください。

于 2013-11-14T00:18:17.557 に答える
5

前述のように、PCL は、対象とするすべてのプラットフォームに存在する API のみを使用することを強制します。

また、バイトコードは「移植可能」ですが、.NET アセンブリには他のアセンブリへの参照が含まれており、PCL サポートが登場する前は、.NET Framework API への参照はプラットフォーム間で異なるアセンブリ ID を使用していました。IE では、System.dll の .NET Framework バージョンへの参照は、Windows Phone または Silverlight とは異なるバージョン番号と厳密な名前キーを持ちます。さらに、一部の API (ICommand や HttpWebRequest など) では、アセンブリの単純な名前が同じではありませんでした。そのため、複数のプラットフォームに移植可能なアセンブリを作成できませんでした。

少しの情報については、こちらの回答を参照してください: https://stackoverflow.com/a/16349673/1509

于 2013-11-14T01:21:11.317 に答える