IT

C # 또는 .NET의 어셈블리는 정확히 무엇입니까?

lottoking 2020. 10. 10. 10:26

C # 또는 .NET의 어셈블리는 정확히 무엇입니까?


C # 또는 .NET에서 어셈블리가 무엇인지 설명해 주시겠습니까?

  1. 어디에서 시작하고 어디에서 끝날까요?
  2. 어셈블리에 대해 알아야 할 중요한 정보는 무엇입니까?

어셈블리는 일반적으로 DLL 인 코드의 어셈블리 된 출력이지만 EXE도 어셈블리입니다. 모든 .NET 프로젝트를위한 가장 작은 배포 단위입니다.

어셈블리에는 일반적으로 지정된 컴퓨터에서 처음 실행될 때 내장 코드 ( "JITted"-Just-In-Time 컴파일러에 의해 수행됨)로 수행되는 MSIL (Microsoft Intermediate 언어)의 .NET 코드가 포함되어 있습니다. 시작된 코드도 어셈블리에 저장되고 호출에서 호출됩니다.

어셈블리에는 아이콘, 비트 맵, 공유 테이블 같은 리소스도 있습니다. 또한 어셈블리는 버전 번호, 강력한 이름, 문화권, 참조 된 어셈블리 어셈블리 같은 정보와 같은 어셈블리 매니페스트의 메타 데이터도 포함합니다.

99 %의 경우에서 하나의 어셈블리는 디스크의 실제 파일과 동일합니다. 다중 파일 어셈블리 (하나의 어셈블리, 하나 이상의 파일에 분산 됨)의 경우는 제가보기에 다소 이상한 경우로 시청합니다. 5 년 이상의 .NET 개발에서 지금까지 본 적이 없습니다.

다중 파일 어셈블리에는 DLL 또는 EXE에 하나의 어셈블리 매니페스트 만 있고 여러 netmodule 파일에 MSIL 코드가 있습니다.


.NET 어셈블리

Microsoft .NET 프레임 워크에서 어셈블리는 배포, 버전 관리 및 보안에 사용하기 위해 부분적으로 관리 된 코드 라이브러리입니다.


http://www.codeguru.com/columns/csharp_learning/article.php/c5845

어셈블리는 모든 .NET 응용 프로그램을 사용하여 생성 할 때 컴파일러에서 자동으로 생성되는 파일입니다. 동적 링크 라이브러리 또는 실행 파일 일 수 있습니다. 응용 프로그램에 대해 한 번만 생성하고 이후의 각 어셈블리가 업데이트됩니다.


다음 은 작은 인용문 인 .NET 어셈블리 구성에 대한 또 다른 설명입니다.

.NET 프레임 워크는 메타 데이터와 매니페스트 정보를 모두 저장하는 모듈, 어셈블리의 개념으로 구성됩니다. 어셈블리에는 여러 모듈이 있습니다. Visual C #은 C # 컴파일러 (csc.exe)에 의해 어셈블리로 변환되는 하나의 모듈 만 생성하지만 어셈블리는 어셈블리 링커 (al.exe) 명령 줄 도구를 통해 여러 .NET 모듈을 함께 사용할 수 있습니다. 예를 들어 각 소스 코드 .cs 파일을 모듈로 만들고 함께 연결하여 어셈블리를 형성 할 수 있습니다. 어셈블리는 모듈과 리소스의 모음 일뿐입니다. 그러나 그러나 다만 모듈 중 하나는 어셈블리에 대한 매니페스트 메타 데이터 (아래 참조) 정보를 포함해야합니다.
....
VS.NET에서 새 .exe 또는 .dll을 생성하면 파일이 bin 폴더에 나타납니다. 메모장에서 열면 횡설수설이 나오거나 파일의를 모르는 16 진수 편집기 구조를 사용할 수 있습니다. ildasm.exe 또는 CFF 탐색기와 같은 도구가 필요합니다. 어셈블리의 구조는 다음과 가변적입니다.

PE 헤더
헤더
CLR 메타 데이터
CLR
IL 코드
헤더 데이터


소스 코드가 언어 컴파일러에 의해 생성됩니다 관리되는 어셈블리 와 MSIL (MisroSoft Intermediate Language) 해당 어셈블리에는 .dll 또는 .exe 파일이 포함 되어 있습니다 . Assebmly는 Private AssemblyShared Assembly 의 두 가지 유형이 될 수 있으며, Shared AssemblyGAC (Global Assembly Cache)에 저장 모든 응용 프로그램에서 참조 할 수 있고 Private 어셈블리는 하나의 응용 프로그램에서만 사용할 수있는 응용 프로그램 폴더입니다. 에 저장됩니다.


어셈블리는 게시하거나 애플리케이션을 실행할 때 생성되는 DLL 또는 EXE입니다.


프로그램 (프로젝트)의 소스 코드를 코드 후 프로젝트에 따라 DLL 또는 EXE 파일이 생성합니다. 단일 프로젝트에 대해 한 번만 만듭니다. 두 가지 유형이 있습니다. 1 :-단일 2 :-단일 프로그램에서만 사용되는 공유 또는 다중 프로그램 단일 어셈블리, 공유는 다중 프로그램에 사용할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/1362242/what-exactly-is-an-assembly-in-c-sharp-or-net