어셈블리에 대해 공부하고 있으며 검색 후 일부 지점에서 혼란 스럽습니다. 여기에서 질문하고 있습니다. 강하게 명명 된 어셈블리의 경우 어셈블리 확인 순서는 먼저 GAC 다음 루트 디렉터리를 확인한 다음 개인 검색을 수행하는 것입니다.
여러 프로젝트가있는 솔루션이 있고이 안에 모든 참조 어셈블리를 배치 할 폴더가 있다고 가정하고 log4net 어셈블리를 사용해야하는 프로젝트에서 log4net을 말하고 응용 솔루션 디렉토리 내의 폴더를 가리키는 log4net dll 참조를 추가합니다. 여기서 모든 참조 된 dll이 배치되었습니다. 그렇다면 CLR이 GAC를 확인한 다음 루트 디렉토리 등을 참조하는 동안 왜 언급 된 경로에서 확인하지 않는가?.net- 어셈블리 해상도
0
A
답변
1
"이 문서에 대한 참조 추가"라고 말하면 "비주얼 스튜디오"라고 생각합니다.
이 경로가없는 컴퓨터에서 프로그램을 실행하면 어떻게 될까요?
btw. Visual Studio에서 "참조 추가"는 컴파일시에만 사용됩니다. 그것은 참조 된 dll을 대상 폴더에 복사합니다.
Visual Studio는 프로젝트 폴더에 대상 폴더 (표준 bin \ Debug 또는 bin \ Release)를 만들고 배포 할 모든 파일 (exe, dll, config)을 저장합니다.
GAC에 DLL을 설치하면 수동으로 수행해야하며 여러 응용 프로그램에서 사용되는 DLL이므로 신중하게 사용해야합니다.
응용 프로그램이 GAC에서 dll을로드 할 때 이상하고 찾기 어려울 수 있으며이 dll에는 응용 프로그램에서 예상 한대로 다른 버전이 있습니다.
그래서 응용 프로그램 솔루션의 폴더에있는 모든 참조 된 DLL이 GAC에 설치되어 있습니까? 응용 프로그램 솔루션의 일부인 foder와 모든 dll int는 배포의 일부가 아닙니다. –