StreamSocket 클래스의 공용 속성과 메서드 매개 변수가있는 UWP 라이브러리를 개발하고 있습니다. 그러나 "StreamSocket은 CLS와 호환되지 않습니다"라는 경고가 나타납니다. Microsoft가 해당 어셈블리를 비 CLS 규격에 맡기로 결정한 이유는 무엇입니까? 그리고이 라이브러리를 사용/배포 할 때 알아야 할 잠재적 인 문제가 있습니까? 어쩌면 CLS 불일치로 인해 내 라이브러리를 다른 개발자가 사용할 수있는 방법이 제한 될 수 있습니까?"인수 유형 'StreamSocket'이 (가) CLS를 준수하지 않습니다."
-1
A
답변
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 프로젝트에서 라이브러리를 사용하려고하면 어떻게됩니까? 이것은 컴파일러가 경고하는 것입니다.
Uhm ...하지만 CLS 준수가 UWP와 어떤 관련이 있습니까? 공통 유형 시스템이 UWP의 핵심에있는 것과는 다릅니다. 그것은 단지 많은 계획 중 하나 일뿐입니다. – IInspectable
@IInspectable UWP 세계에서 내 라이브러리의 공개 API에 CLS 규격 코드가있는 것이 정상입니다 (MS는 동일하고 아무도 신경 쓰지 않는다고 가정). – Alex
@Alex : 잘 모르겠습니다. 이해 관계가없는 유형 시스템을 준수해야하는 이유를 이해하지 못합니다. 모든 .NET 프로젝션에 ** CLS를 준수하지 않는 ** 모든 유형을 투영 할 수 있으므로 당황 스럽습니다. – IInspectable