C # 또는 .NET에서 어셈블리가 무엇인지 설명해 주시겠습니까?
- 어디에서 시작하고 어디에서 끝날까요?
- 어셈블리에 대해 알아야 할 중요한 정보는 무엇입니까?
C # 또는 .NET에서 어셈블리가 무엇인지 설명해 주시겠습니까?
답변:
어셈블리는 일반적으로 DLL 인 코드의 컴파일 된 출력이지만 EXE도 어셈블리입니다. 모든 .NET 프로젝트를위한 가장 작은 배포 단위입니다.
일반적으로 어셈블리에는 지정된 컴퓨터에서 처음 실행될 때 네이티브 코드 ( "JITted"-Just-In-Time 컴파일러에 의해 컴파일 됨)로 컴파일되는 MSIL (Microsoft Intermediate 언어)의 .NET 코드가 포함되어 있습니다. 컴파일 된 코드도 어셈블리에 저장되고 후속 호출에서 재사용됩니다.
어셈블리에는 아이콘, 비트 맵, 문자열 테이블 등과 같은 리소스도 포함될 수 있습니다. 또한 어셈블리는 버전 번호, 강력한 이름, 문화권, 참조 된 어셈블리 등과 같은 정보와 같은 어셈블리 매니페스트의 메타 데이터도 포함합니다.
99 %의 경우에서 하나의 어셈블리는 디스크의 실제 파일과 동일합니다. 다중 파일 어셈블리 (하나의 파일 이상에 분산 된 하나의 어셈블리)의 경우는 제가보기에 다소 이상한 경우로 보입니다. 5 년 이상의 .NET 개발에서 지금까지 본 적이 없습니다.
다중 파일 어셈블리에는 DLL 또는 EXE에 하나의 어셈블리 매니페스트 만 있고 여러 netmodule 파일에 MSIL 코드가 있습니다.
Microsoft .NET 프레임 워크에서 어셈블리는 배포, 버전 관리 및 보안에 사용하기 위해 부분적으로 컴파일 된 코드 라이브러리입니다.
http://www.codeguru.com/columns/csharp_learning/article.php/c5845
어셈블리는 모든 .NET 응용 프로그램을 성공적으로 컴파일 할 때 컴파일러에서 자동으로 생성되는 파일입니다. 동적 링크 라이브러리 또는 실행 파일 일 수 있습니다. 응용 프로그램에 대해 한 번만 생성되며 이후의 각 컴파일시 어셈블리가 업데이트됩니다.
다음 은 작은 인용문 인 .NET 어셈블리 구성에 대한 또 다른 설명입니다.
.NET 프레임 워크는 메타 데이터와 매니페스트 정보를 모두 저장하는 모듈, 어셈블리의 개념으로 구성됩니다. 어셈블리에는 여러 모듈이 포함될 수 있습니다. Visual C #은 C # 컴파일러 (csc.exe)에 의해 어셈블리로 변환되는 하나의 모듈 만 생성하지만 어셈블리는 어셈블리 링커 (al.exe) 명령 줄 도구를 통해 여러 .NET 모듈을 함께 연결할 수 있습니다. 예를 들어 각 소스 코드 .cs 파일을 모듈로 컴파일하고 함께 연결하여 어셈블리를 형성 할 수 있습니다. 어셈블리는 모듈과 리소스의 모음 일뿐입니다. 그러나 이러한 모듈 중 하나입니다. 어셈블리에 대한 매니페스트 메타 데이터 (아래 참조) 정보를 포함해야 CLR에서 이해할 수 있습니다.
....
VS.NET에서 새 .exe 또는 .dll을 생성하면 파일이 bin 폴더에 나타납니다. 메모장에서 열면 횡설수설이 나오거나 파일의 구조를 모르고 16 진 편집기 내에서도 의미를 나타내려면 ildasm.exe 또는 CFF 탐색기와 같은 도구가 필요합니다. 어셈블리의 구조는 다음과 같습니다.PE 헤더
CLR 헤더
CLR 메타 데이터
CLR
IL 코드
네이티브 데이터
대답은 즉시 파악하기위한 것입니다.
간단히 말해, 클래스 및 추가 파일이있는 경우 컴파일 된 프로젝트입니다. 즉, 솔루션의 각 프로젝트는 assembly 입니다.
또는 더 기술적으로
는 어셈블리 타입은 flesystem에 저장되는 곳이다. 어셈블리는 코드 배포를위한 메커니즘입니다. 예를 들어
System.Data.dll
어셈블리에는 데이터 관리를위한 형식이 포함되어 있습니다. 다른 어셈블리에서 형식을 사용하려면 참조되어야합니다. - 출처
우리는 그것을 어떻게 압니까? 솔루션 아래의 프로젝트 속성을 살펴보면 다음 이미지를 볼 수 있습니다.
프로젝트를 컴파일하면 DLL 또는 EXE로 나타납니다 .
소스 코드가 언어 컴파일러에 의해 컴파일되면 관리되는 어셈블리 와 MSIL (MisroSoft Intermediate Language)이 생성됩니다. 해당 어셈블리에는 .dll 또는 .exe 파일이 포함되어 있습니다 . Assebmly는 Private Assembly 와 Shared Assembly 의 두 가지 유형이 될 수 있으며 , 공유 Assembly는 GAC (Global Assembly Cache)에 저장 되므로 모든 응용 프로그램에서 참조 할 수 있고 Private 어셈블리는 하나의 응용 프로그램에서만 사용할 수있는 응용 프로그램 폴더에 저장됩니다.
어셈블리는 논리 단위의 모음입니다. 논리 단위는 애플리케이션을 빌드하고 .Net 프레임 워크를 사용하여 배포하는 데 필요한 유형 및 리소스를 나타냅니다. 기본적으로 Assembly는 Exe와 DLL의 모음입니다. 이식 가능하고 실행 가능합니다.
프로그램 (프로젝트)의 소스 코드를 작성한 후 프로젝트에 따라 DLL 또는 EXE 파일이 생성됩니다. 단일 프로젝트에 대해 한 번만 만듭니다. 두 가지 유형이 있습니다. 1 :-단일 2 :-단일 프로그램에서만 사용되는 공유 또는 다중 프로그램 단일 어셈블리, 공유는 다중 프로그램에 사용할 수 있습니다.