2016-12-20 4 views
-1

StreamSocketクラスのパブリックプロパティとメソッドパラメータを持つUWPライブラリを開発しています。しかし、「StreamSocketはCLSに準拠していません」という警告が表示されています。マイクロソフトがCLSに準拠していないそれぞれのアセンブリを残すことを決定し、このライブラリを使用/配布する際に知っておくべき潜在的な問題はありますか?おそらくCLSの不整合は、私のライブラリが他の開発者によって使用される方法を何らかの形で制限するでしょうか?「引数型 'StreamSocket'はCLSに準拠していません」ビルド時の警告

答えて

2

まあ、ドキュメントから:あなたはCLS準拠のクラスライブラリを設計する場合、あなたのライブラリーは、プログラミング言語の広い範囲での相互運用性を保証する必要があります

。 CLSに準拠していないバージョンよりも広い範囲の顧客基盤を持つ可能性があります。

[明らかな]答えは、そのことをコード化したときに「プログラミング言語の相互運用性」を念頭に置いていないということです。

I正直に言うと驚いていないよ、MSが正確に厳しさのために知られていない(IE誰ですか?)

はもっとここで読む:https://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx

UPDATE:

私が分かりやすく説明しようとしますこれは少しコメントに基づいています。

CLS(Common Language Specification)は、.NET Framework を対象とする任意の言語がサポートする必要がある機能を定義します。です。したがって、ライブラリを.NET言語で使用する場合にのみ注意してください。

たとえば、CLSには、クラス名とメンバー名が大文字と小文字の区別だけが違うという制限があります。 MySocketという名前のプロパティとmySocketという名前のプロパティを持つことはできません。これは、VB .NETのような大文字と小文字を区別しない言語では重要です。

ライブラリがStreamSocketを公開していますが、これはCLS準拠としてマークされていません。このクラスに上記のサンプルのようなメソッドがあり、VB.NETプロジェクトでライブラリを使用しようとするとどうなりますか?これは、コンパイラが警告するものです。

+0

Uhm ...しかしCLS準拠はどのようにUWPに関係していますか?コモン・タイプ・システムがUWPの中核であるのとは違います。それは単に多くの予測の1つです。 – IInspectable

+0

@IInspectable UWPの世界では、私の図書館の公開APIにCLSに準拠しないコードを持たせるのは正常です(MSは同じで誰も気にしないと仮定します)。 – Alex

+1

@Alex:わかりません。私は理解していない、なぜ無関係なタイプのシステムとのコンプライアンスが必要なのか、望ましいのか。任意の**非CLS準拠のタイプを任意の.NETプロジェクションに投影することができますので、困惑します。 – IInspectable

関連する問題