2010-03-16 3 views
2

.NET에 대한 권리가 있는지 묻고 싶습니다. 따라서 .NET은 새롭고 오래된 창 기능을 쉽게 구현할 수있는 새로운 프레임 워크입니다. Java와 비슷하지만 "바이트 코드"로 컴파일되지만 이름은 Common Language Infrastructure 또는 CLI입니다. 이 언어는 .NET Framework에서 해석되므로 .NET을 사용하여 프로그래밍하여 생성 된 코드는 CPU에서 직접 실행할 수 없습니다. 이제는 CLI로 컴파일 할 수있는 언어가 거의 없습니다. 첫째, 그것은 J #, C++ 다른 것보다 Microsoft가 개발 한 C#입니다. 나는 이것이 일반적으로 옳다는 것을 의심한다, 적어도 나는 그것이 올바르게 이해되기를 바란다.Visual Studio 및 .NET 프로그래밍

하지만 여전히 누락 된 것은 컴퓨터 코드 컴파일 된 코드를 C#으로 작성할 수 있습니까? Visual Studio 2005를 사용하는 경우 Win32 프로젝트를 선택하면 컴퓨터 코드로 컴파일되므로 정적 라이브러리 코드는 연결 단계에서 응용 프로그램에 구현되므로이 응용 프로그램을 실행하는 데 필요한 것은 Windows 동적 링크 라이브러리뿐입니다. 그리고 이러한 동적 링크 라이브러리는 모든 Windows 설치에서 구현되거나 DirectX 설치에서 제공됩니다.

Visual Studio 2005에서 CLR을 선택하면 응용 프로그램이 CLI 코드로 컴파일 된 후 .NET Framework가 먼저 실행되고 .NET Framework가 해당 프로그램을 실행합니다. 컴퓨터 코드가 아니기 때문입니다.

그래서 맞습니까? 나는 당신이 인터넷에서이 정보들을 읽을 수 있기 때문에 물어 본다. 그러나 나는 그것이 옳은 것인지 아닌지를 말해 줄 사람이 아무도 없다. 감사.

+0

CLI (Common Language Infrastructure)는 프레임 워크 자체입니다. 여기에는 가비지 컬렉터 및 JIT 컴파일러가 포함됩니다. JIT 컴파일러는 중간 언어 또는 IL (= 바이트 코드)을 기계 코드로 컴파일합니다. CLI는 바이트 코드가 아니지만 IL은 있습니다. – Steven

+0

CLI와 CIL을 혼동하기 쉽습니다. 나는 우리가 보통 "CIL"대신에 "일리노이"(또는 때로는 "MSIL"이라고 말합니다.)라고 생각합니다. –

답변

2

.NET의 첫 번째 IDE는 2002 년 이었으므로 .NET은 8 년이되었습니다. 전체 영원;)

.NET은 C#, Basic 및 J #뿐만 아니라 C++로 시작되었습니다. 예를 들어 동적 언어 IronRuby와 같은 다른 많은 언어가 뒤따 랐습니다. C#과 Basic에는 .NET 프레임 워크가 필요없는 코드를 생성 할 수있는 옵션이 없습니다. C++에서는이 옵션을 사용할 수 있습니다. 표준 도구를 사용하면 C#을 컴퓨터 코드로 컴파일 할 수 없습니다.

런타임을 최적화 할 수있는 것들이 있습니다 (어셈블리를 미리 JIT 할 때 ngen을 살펴보십시오). 지터가 있고 항상 해석되는 것은 아니기 때문에 예를 들어 VB 스크립트보다 빠릅니다. 이것은 일반적으로 매번 수행되는 것이 아니라 처음으로 하나의 어셈블리를 실행하거나 응용 프로그램을 설치하는 동안 ngen을 사용하여 수행됩니다.

HTH, -sa

+2

.NET 어셈블리를 NGen 할 수 있습니다. 그것의 네이티브 이미지 (= 머신 코드)를 생성합니다. .NET Framework 없이는이 기본 이미지를 실행할 수 없습니다. 그래서 어떤면에서는 오래된 기계어 코드가 아닙니다. – Steven

+1

NGen은 모든 의존성을 인라인 할 수있는 옵션이 있다고 생각하여 .net 프레임 워크가 필요하지 않은 네이티브 이미지를 생성 할 수 있습니다 ... 편집 : Ahh ..NGen이 아니라 도롱뇽의 RemoteSoft를 사용하면 .net 프레임 워크가 설치 될 필요가없는 실행 파일을 생성 할 수 있습니다. 값진 것 : http://www.remotesoft.com/linker/intro.html –

2
  • CLI 는 .NET 프레임 워크에 의해 해석하지만, 일반적으로 컴파일되지 않습니다. 순수한 해석은 너무 느릴 것입니다.
  • C#, J # 등이 동시에 나타납니다. 사실, J #은 Microsoft J ++에서 유래했기 때문에 이전에 J #이라고 말할 수 있습니다. C++은 이전에도 Managed C++ (NOW : C++/CLI)를 의미했습니다. 나는 그것이 동시에 행해졌다고 생각한다. 마이크로 시프트에서 2 ~ 3 명이 일하고 있습니다.)
  • 기계어에 C#을 쓸 수 없습니다. Win32 프로젝트는 네이티브 C++ (즉, .NET 런타임을 사용하지 않는 버전)입니다.
관련 문제