2016-12-20 5 views
-1

StreamSocket 클래스의 공용 속성과 메서드 매개 변수가있는 UWP 라이브러리를 개발하고 있습니다. 그러나 "StreamSocket은 CLS와 호환되지 않습니다"라는 경고가 나타납니다. Microsoft가 해당 어셈블리를 비 CLS 규격에 맡기로 결정한 이유는 무엇입니까? 그리고이 라이브러리를 사용/배포 할 때 알아야 할 잠재적 인 문제가 있습니까? 어쩌면 CLS 불일치로 인해 내 라이브러리를 다른 개발자가 사용할 수있는 방법이 제한 될 수 있습니까?"인수 유형 'StreamSocket'이 (가) CLS를 준수하지 않습니다."

답변

2

음, 문서에서 : 당신이 CLS 규격 클래스 라이브러리를 디자인 할 경우, 라이브러리는 프로그래밍 언어의 광범위한 상호 운용성을 보장해야합니다

; 따라서 귀하의 도서관은 CLS와 호환되지 않는 버전보다 광범위한 고객층을 확보하게 될 것입니다.

[명백한] 대답은 그 것을 코딩 할 때 "프로그래밍 언어 상호 운용성"을 염두에 두지 않았기 때문입니다. (? IE의 사람)

나는 MS가 정확히 엄격 알려져 있지 않습니다, 솔직히 놀랐 아니다

더 여기 읽기 : https://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx

UPDATE :

내가 신비성을하려고합니다

이것은 약간의 의견을 기반으로합니다.

CLS (공용 언어 사양)는 .NET Framework 을 대상으로하는 모든 언어가 지원해야하는 기능을 정의합니다.이어야합니다. 따라서 라이브러리가 .NET 언어로 사용되는 경우에만주의해야합니다.

예를 들어 CLS에는 클래스 및 멤버 이름이 대소 문자 만 다를 수 없다는 제약이 있습니다. MySocket과 mySocket이라는 속성을 가질 수 없습니다. 이것은 대/소문자를 구분하지 않는 VB .NET과 같은 언어에서 중요합니다.

현재 라이브러리에 CLS 규격으로 표시되지 않은 StreamSocket이 노출되어 있습니다. 이 클래스에 위의 샘플과 같은 메서드가 있고 일부 VB.NET 프로젝트에서 라이브러리를 사용하려고하면 어떻게됩니까? 이것은 컴파일러가 경고하는 것입니다.

+0

Uhm ...하지만 CLS 준수가 UWP와 어떤 관련이 있습니까? 공통 유형 시스템이 UWP의 핵심에있는 것과는 다릅니다. 그것은 단지 많은 계획 중 하나 일뿐입니다. – IInspectable

+0

@IInspectable UWP 세계에서 내 라이브러리의 공개 API에 CLS 규격 코드가있는 것이 정상입니다 (MS는 동일하고 아무도 신경 쓰지 않는다고 가정). – Alex

+1

@Alex : 잘 모르겠습니다. 이해 관계가없는 유형 시스템을 준수해야하는 이유를 이해하지 못합니다. 모든 .NET 프로젝션에 ** CLS를 준수하지 않는 ** 모든 유형을 투영 할 수 있으므로 당황 스럽습니다. – IInspectable