2010-12-12 4 views
1

빠른 질문입니다. 일부 .Net 항목에 대해 읽었으며 일부 사람들이 말하는 방식으로 .Net 라이브러리가 여러 .Net 언어와 함께 사용될 수 있음을 의미합니다. 아마 내 역할에 희망찬 생각 만있을거야. 예를 들어 C#으로 프로그래밍 된 Tao Framework를 Boo .Net 언어와 함께 사용할 수 있습니까?
내가 설명 할 수있는 유일한 방법은 라이브러리가 .Net에서 실행되도록 바이트 코드로 컴파일되고 또한 컴파일되는 모든 언어와 함께 사용될 수있는 경우입니다. 나는 닷넷에 대해 매우 잘 모른다하지만^-^.Net 라이브러리는 .Net 언어로 사용됩니까?

덕분에 내가 바로, 다음, C# 또는 델파이 프리즘, 말,에 .NET 라이브러리를 만들려면 컴파일 할 수 귀하의 질문을 이해하면

+0

정확합니다. 일단 라이브러리를 어셈블리 (dll)로 컴파일하면 다른 .net 언어와 링크 될 수 있습니다. 상호 운용성은 핵심적인 힘입니다. 기본적으로 선호하는 언어를 선택하거나 특정 문제에 가장 잘 부합되게 컴파일 된 코드가 언어와 무관합니다. –

+0

그것은 공식적으로 내가 발견 한 가장 멋진 것입니다! – Isaiah

답변

2

모든 assmebly (일리노이 코드 및 매니페스트)는 모든 .NET 언어에서 사용할 수 있습니다. 코드가 CIL을 준수하고 있고 CLS (공용 언어 사양). MSDN에서

(CLS) :

완벽에 관계없이 객체가 호출자가 상호 운용해야하는 모든 언어에 공통적 인 기능 만에 노출해야 그들이에서 구현 된 언어의 다른 개체와 상호 작용하는 방법 . 이러한 이유로 여러 응용 프로그램에서 필요로하는 기본 언어 기능 집합 인 CLS (Common Language Specification)가 정의되었습니다. CLS 규칙은 Common Type System의 하위 집합을 정의합니다. CLS에 엄격한 규칙이 정의 된 경우를 제외하고는 공통 유형 시스템에 적용되는 모든 규칙이 CLS에 적용됩니다. CLS는 개발자가 다양한 언어로 사용할 수있는 일련의 기능을 정의하여 언어 상호 운용성을 향상시키고 보장합니다. 또한 CLS는 CLS 준수 요건을 수립합니다. 이러한 기능을 통해 관리 코드가 CLS 및 CLS 기능을 사용하는 관리 코드 개발을 지원하는 도구의 범위와 일치하는지 여부를 확인할 수 있습니다.

+0

다시 한번 말하지만, 나는 파이썬과 리스프에서 오는 것을 의미합니다. 이것은 매우 시원합니다. – Isaiah

+0

@Isaiah - MS는 동일한 기본 라이브러리를 사용하여 C# 및 VB.NET을 모두 갖고 싶어했기 때문에 그렇게 설계했습니다. – Oded

+0

한 가지 일반적인 중단은 C#이 대소 문자를 구분하고, VB가 아닌 경우입니다. C#에서 대/소문자 만 구별하는 멤버를 노출하는 C# 형식을 CLS 형식으로 표시하지 않고 사용할 수없는 형식을 만드는 경우. –

1

일리노이와 어셈블리를 얻을. 그런 다음이 어셈블리를 VB.NET 프로젝트에서 참조하고 사용할 수 있습니다.

0

우리는 문제없이 우리의 VB.Net 프로젝트에서 C# 도우미 라이브러리를 사용 - 하나의 프로젝트는 하나의 언어를 처리 할 수 ​​있지만, 해결책은 어떤 언어로 작성된 모든 어셈블리를 여러 프로젝트를 각각 사용하여 자신의 언어를 포함 (또는 참조 할 수 있습니다 전체 VS 디버깅 기능이있는 MSIL로 컴파일 됨)

1

상호 운용성에는 제한이 있습니다. 특히 언어가 다른 유형 시스템이 크게 다른 경우. 그러나 Boo와 C#은 문법과 매우 유사하므로 이들 사이에 아무런 문제가 없어야합니다.

+0

내가 좋아하는 바보 같은데, 어떨까요, 철저히 시험해 보면 어떨까요 ... 철제? – Isaiah

+0

하나의 전형적인 중단은 C#은 감각적 인 사건이고, VB는 그렇지 않다는 것입니다. C#에서 유형을 생성하면 케이싱에서 차별화되는 멤버 만 노출되므로 CLS가 아닌 것으로 표시되어 사용할 수 없습니다. –

관련 문제