문제

내가 명확하지 않은 것, 나는 c#과 vb.net 사이에 차이가 있다는 것을 이해하지만 (주로 포인터 사용에있어) 공통 CLR이 있으면 XNA (예를 들어)가 vb가 아닌 C#에서만 작동하는 이유 .NET, 또는 Visual Studio에 ADD INS가 VB.NET가 아닌 C#을 목표로했으며 언어 확장이 두 가지 모두에서 작동합니다.

분명한 질문이라면 죄송합니다.

도움이 되었습니까?

해결책

CLR은 다양한 플랫폼으로 포팅되었으며, 모든 것이 동일하지는 않습니다. 예를 들어 Xbox 360 CLR, 반사가 없거나 전체 CLR이하는 모든 IL 작전이 없습니다. 따라서, 다른 컴파일러는 전체 CLR에서 합법적이지만 컴팩트 한 CLR에서 불법 인 IL 코드를 방출 할 수 있습니다.

다른 문제는 클래스 라이브러리의 가용성입니다. 전체 BCL에는 다음이 포함됩니다 Microsoft.visualbasic VB.NET 컴파일러에서 자동으로 참조되는 네임 스페이스. 여기에는 포함됩니다 VB6 호환성 함수, the 내 네임 스페이스 특징뿐만 아니라 일부 컴파일러 헬퍼 기능, 일반적으로 VB.NET 런타임이라고합니다.

CLR이 포팅 될 때마다 특정 어셈블리가 포팅되고 다른 어셈블리는 그렇지 않습니다. Xbox의 경우 Microsoft.visualBasic이 포팅되지 않았습니다. 이것은 당신이 그 네임 스페이스에서 아무것도 참조 할 수 없다는 것을 의미합니다. 호환성이나 내 네임 스페이스를 참조하지 않는 것은 상당히 쉽지만, 컴파일러 서비스를 명시 적으로 호출하지 않고 컴파일 된 IL에 삽입 할 수 있습니다.

vb.net 8에서는 문서화되지 않고 지원되지 않는 -novbruntimeref vbc.exe로 전환하여 Microsoft.visualbasic.dll을 참조하지 못하게합니다. 불행히도, 이것은 때때로 홀수 컴파일러 오류를 일으킬 수 있습니다. vb.net 9에서는 그게되었습니다 /vbruntime으로 문서화 및 지원 및 이름이 변경되었습니다.

세 번째 케이스는 Addins 및 Visual Studio 지원입니다. 이것은 각 언어에 대해 템플릿, 코드 유전자 등을 지원하는지 여부에 따라 개별 패키지에 달려 있습니다. 그래도 일부 타당이 XNA 용 VB.NET 템플릿을 출시했다고 생각합니다. 공식적으로 지원되지 않습니다.

결론은 기술적 문제 (CLR 포트, BCL 가용성, 컴파일러 IL 출력) 및 지원 (테스트, 자금 및 기타 언어에 대한 Addins)이 혼합 된 것 같습니다.

다른 팁

언어 지원을 정의하는 도구 세트입니다. 예를 들어 XNA는 단순히 C#과 함께 모든 작업을 수행했으며 지원 만 배송했습니다. 여전히 vb.net에 앱을 작성하고 명령 줄에서 수동으로 컴파일 할 수 있습니다. 앱이 불법 IL (XNA가 지원하지 않는 Opcodes)에 컴파일하지 않는 한 여전히 실행됩니다. 주요 문제는 리소스입니다. 모든 언어를 완전히 개발하고 테스트 할 수있는 인력이 없으므로 하나를 선택했습니다.

모든 계정에서 VB.NET 및 C#은 CLR과 관련하여 99.9999에 해당합니다. 그러나 당신을 물릴 수있는 약간의 차이가 있습니다. 또한 일부 Microsoft 블로그에서 CLR이 VB.NET 또는 C#에 의해 프로그래밍 할 수없는 일이없고 IL이 수행 해야하는 몇 가지가 있다는 것을 기억합니다. 참으로 흥미 롭습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top