2012-12-04 2 views
3

요즘 흔히 사용되는 비 CLS 호환 .NET 언어가 있습니까? VS2012가 제공하는 모든 관리 언어는 서명되지 않은 정수 유형을 지원하므로 실제적으로 앞으로 서명 할 공용/보호 된 유형의 서명에서 '서명되지 않음'을 사용하는 것이 얼마나 어려울 지 알 수 있습니까? 하나는 '현대'.NET 코드에 대해 얼마나 거래 CLS 준수의 많은 궁금해 있도록공통적으로 CLS와 호환되지 않는 .NET 언어가 있습니까?

그것은 CLR처럼 보이는, CTS 및 관련 기술은 대부분이 시점에서 '완료'를하고 있습니다.

우리는 모멘텀에서 지금은 순수하게 CLS 농구를 통해 점프 있습니까?

답변

5

CLS 준수는 언어가 아닌 코드의 속성입니다. 우연히 비 호환 코드를 작성할 수없는 초기 버전의 VB.NET이있었습니다. 그다지 오래 가지 않아서 2005 년 무렵에 서명되지 않은 정수형에 대한 지원을 얻었습니다.

여전히 관련성이 있지만 여전히 .NET으로 이식 된 언어로 사용될 수있는 라이브러리를 작성할 수는 없습니다. 부호없는 정수를 지원하거나 대소 문자를 구분하지 않습니다. 접근법은 간단합니다. 코드에서 비 호환 기능을 사용하는 것을 피하면 어셈블리가 잘 작동합니다.

[assembly:CLSCompliant(true)] 

을 그리고 당신은 규칙을 위반하는 경우 컴파일러는 당신에게 경고를 줄 것이다 : 아주 쉽게 할 수있는, 어디서나 코드 줄을 추가합니다.

+0

우수한 점, 물론! 제가 틀렸다면 저를 정정하십시오. 그러나 명백한 근본적인 질문에 대해 CLS 준수 코드를 사용하는 중요한 점은 언어 interop를 최대화하는 것입니다. 예를 들어,'unsigned' int를 사용하면 주로 라이브러리의 코드가 해당 유형의 구조를 지원하지 않는 언어로 사용되는 경우 문제가됩니다. 독립형 어셈블리 인 경우 중요하지 않습니다. –

+1

예. 프로젝트에서 EXE를 빌드하거나 다른 EXE에서 DLL을로드하지 않는다는 것을 알고 있다면 CLS 준수는 문제가되지 않습니다. –