StreamSocket クラスのパブリック プロパティとメソッド パラメータを持つ UWP ライブラリを開発しています。ただし、「StreamSocket は CLS に準拠していません」という警告が表示されます。Microsoft がそれぞれのアセンブリを CLS 非準拠のままにすることを決定したほど特別なことは何ですか? このライブラリを使用/配布するときに知っておくべき潜在的な問題はありますか? CLS に準拠していないため、他の開発者が私のライブラリを使用する方法が何らかの形で制限されるのでしょうか?
1 に答える
さて、ドキュメントから:
CLS 準拠のクラス ライブラリを設計すると、そのライブラリはさまざまなプログラミング言語との相互運用性が保証されます。したがって、あなたのライブラリは、CLS に準拠していないバージョンよりも幅広い顧客ベースを持つ可能性があります。
したがって、[明白な] 答えは、彼らがそのことをコーディングしたときに「プログラミング言語の相互運用性」を念頭に置いていなかったということです。
正直なところ、MS は厳格さで知られているわけではありません (IE 誰か?)
詳細はこちら: https://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx
アップデート:
コメントに基づいて、これを少し分かりやすくしようと思います。
CLS (共通言語仕様) は、.NET Framework を対象とするすべての言語がサポートしなければならない機能を定義します。したがって、ライブラリが .NET 言語によって使用される場合にのみ、これを気にする必要があります。
たとえば、CLS には、クラス名とメンバー名を大文字と小文字だけで区別できないという制限があります。MySocket という名前のプロパティと mySocket という名前の別のプロパティを持つことはできません。これは、大文字と小文字を区別しない VB .NET などの言語にとって重要です。
この場合、ライブラリは StreamSocket を公開していますが、これは CLS 準拠としてマークされていません。このクラスに上記のサンプルのようなメソッドがあり、そのライブラリを VB.NET プロジェクトで使用しようとするとどうなるでしょうか? これは、コンパイラが警告していることです。