2012-06-23 3 views
4

작년 10 월부터 Microsoft 빌드 컨퍼런스를보고 있었는데 새로운 Metro 스타일 앱을 만들 때 개발자가 C#으로 원시 코드를 작성할 수 있다고 발표 한 것을 알고있었습니다. 이것이 어떻게 가능한지? 나는 단지 궁금하다. C#이 중간 바이트 코드로 컴파일 된 다음 가상 컴퓨터에서 실행되도록 (CLI 표준의 일부로) 설계되지 않았습니까? 가상 머신에서 실행되는 것을 어떻게 "원시 코드"라고 부를 수 있습니까?C#의 원시 코드?

+0

바이트 코드는 가상 시스템의 기본입니다. 그게 전부입니다 –

+0

C#은 언어입니다. 네이티브 코드로 컴파일되는 것을 막을 수있는 근본적인 마술이 있다고 생각합니까? VM에서 실행할 필요는 없습니다. –

+0

@MateuszKowalczyk 그래서 "진짜"의미에서 네이티브 코드가 아닌가? – Ayush

답변

2

항상 네이티브 코드를 관리 코드에서 호출 할 수 있습니다. 일반적으로 어떤 시점에서 Windows와 상호 작용하는 .net 응용 프로그램은 기본 구성 요소로 제어 권한을 넘깁니다.

역사적으로 고유 코드를 수동으로 호출하기 위해 PInvoke (플랫폼 호출)를 사용합니다. 관리 코드가 DLL에 구현 된 관리되지 않는 함수를 호출 할 수 있도록합니다.

새로운 기능은 Windows Runtime, 기본적으로 향상된 COM 기반 API입니다. 당신은 여기에서 그것을 읽을 수 있습니다 - http://en.wikipedia.org/wiki/Windows_Runtime - 프로세스를 더 쉽게/덜 들여다.

EDIT - 분명히 말하면, C#을 원시 코드로 컴파일 할 수있는 것은 아닙니다. 이것은 여전히 ​​가능하지 않습니다. 그들은 winrt가 C#의 원시 코드 호출을 포함하는 새로운 (클리너) 메커니즘을 제공한다고 선전했습니다.

+1

질문을 읽으면서 OP가 관리되지 않는 라이브러리를 호출하지 않고 바이트 코드로 C#을 컴파일하는 것에 대해 묻는 것처럼 보였습니다. 그래도 나는 잘못 될 수 있습니다. –

+2

그는 프레젠테이션을 오해했습니다.C#을 네이티브 코드로 컴파일 할 수는 없습니다 (이론적으로 그런 컴파일러를 만들 수는 있지만 존재하지 않습니다.) 그러나 C#과 네이티브 코드를 결합하는 것이 더 쉽습니다. 예를 보려면 http://blogs.msdn.com/b/pfxteam/archive/2011/11/12/10236375.aspx – bkr

+0

참조 Bartok 컴파일러 (~ 5 년 전 MS의 Singularity 프로젝트의 일부)는 C# (글쎄, # 노래하지만, 그것은 C#의 확장) 네이티브 코드, IIRC. –