2012-02-02 3 views
0

나는 간단한 응용 프로그램을 만들었고 C# 또는 .net 프로그램이 어셈블리 파일을 포함하는 어셈블리 파일로 변환된다는 책을 읽었지 만 그 어셈블리 파일의 위치를 ​​알고 싶습니다.어셈블리 파일은 어디에 있습니까?

+2

기본적으로 VS는 프로젝트 폴더 아래에 하위 폴더 bin/Debug 및 bin/Release를 만듭니다.이 폴더는 프로젝트 폴더 아래에 있어야합니다. – StuartLC

답변

3

모든 C# 프로그램 (더 일반적으로, 모든 .NET 언어) 중간 바이트 코드가 포함이 .exe 또는 .dll 인 .NET "총회"로 변환됩니다 - CIL. 그 바이트 코드는 JIT compiler에 의해 즉석에서 프로그램을 실행할 때 컴퓨터 언어로 컴파일됩니다.

기본적으로 Visual Studio는 .NET 어셈블리를 프로젝트의 /bin 폴더에 배치 한 다음 그 아래에서 선택한 구성을 배치합니다. (기본적으로 2 개만 존재, /bin/Debug/bin/Release)이 속성은 프로젝트 속성에서 변경할 수 있습니다.

.NET 어셈블리에는 어셈블리 코드가 없지만 ildasm.exe 또는 Mono.Cecil 같은 도구를 사용하여 CIL 바이트 코드를 볼 수 있습니다.

JIT 컴파일러는 시스템의 현재 하드웨어 구성을 감지하고 CPU의 기능을 기반으로 최적화를 적용 할 수있는 이점이 있습니다. JIT가 생성하는 물건을 보는 데는 아무런 목적이 없습니다. 컴퓨터마다 다를 것이므로.

+0

코드에서 수행되는 최적화 작업을보고 싶지 않다면 JIT 컴파일을 기반으로 한 가정을 만드는 데 아무런 목적이 없습니다. 최적화를 시도하는 경우 CIL 바이트 코드가 더 적합 할 것입니다. 코드가 더 나은 옵션이 될 것입니다) –

3

용어에 대해주의해야합니다.

.NET 바이너리는 "어셈블리"라고하며 어셈블리 코드는 포함하지 않습니다 (어셈블리 코드로 가정하면 실제 기계 명령어를 의미합니다). 대신 엉뚱한 CPU의 어셈블리 언어와 비슷한 CIL을 포함합니다. 실행 전 CIL은 Just-in-time으로 플랫폼 용 네이티브 어셈블리로 컴파일되고 실행됩니다.

디버그 빌드를 작성하는 경우 bin/Debug은 어셈블리가있는 곳입니다. 릴리스의 경우 bin/Release

이러한 디렉터리는 Visual Studio Project 위치와 관련이 있습니다.

+0

어떻게 디버깅 시간에 실행되는 어셈블리 코드를 잡을 수 있습니까? –

+0

실제 소스 코드 대신 CIL을 통해 디버깅 하시겠습니까? – Alan

+0

@ R.Vector : 실제 네이티브 어셈블리 코드 또는 IL을 원하십니까? –

0

You can create two types of ASP.NET Assemblies in ASP.NET: private ASP.NET Assemblies and shared assemblies. Private ASP.NET Assemblies are created whey you build component files like DLLs that can be applied to one application. Shared ASP.NET Assemblies are created when you want to share the component files across multiple applications. Shared ASP.NET Assemblies must have a unique name and must be placed in Global Assembly Cache (GAC). The GAC is located in the Assembly directory in WinNT. You can view both the manifest and the IL using ILDisassembler (ildasm.exe).
심판 : http://www.dotnet-guide.com/assemblies.html