bin과 gac 둘 다 dll, 어떤 것이 사용됩니까?
프런트엔드 변경 사항만 포함하여 많은 웹 사이트에 배포되는 웹 애플리케이션이 있습니다. 공유 백엔드 부분은 GAC에 DLL이 있으므로 하나의 DLL만 업데이트하면 모든 사이트가 업데이트됩니다.
GAC를 /bin 폴더의 DLL로 재정의하여 새 기능이 릴리스되기 전에 테스트할 수 있는 방법이 있습니까?
참조된 DLL과 버전 번호가 같으면 GAC가 사용됩니다.
버전 번호를 늘리면 새 버전 번호를 참조하는 웹 사이트를 다시 만들고 새 버전을 /bin 디렉터리에 넣으면 해당 DLL이 사용됩니다.
버전 번호를 변경하지 않으려는 경우에는 운이 거의 없습니다.
.NET은 강력한 명명된 어셈블리를 로드할 때 먼저 사용할 버전 번호를 결정하려고 합니다.먼저 참조를 통해 이 작업을 수행한 다음 게시자 정책을 찾은 다음 구성 파일에서 바인딩 리디렉션을 찾습니다.
이렇게 하면 GAC에서 어셈블리를 찾은 다음 지정된 코드베이스에서 DLL에 대한 다양한 파일 시스템 폴더를 검색합니다.이러한 단계 중 하나에서 올바른 버전 어셈블리를 찾으면 중지됩니다.
강력한 명명된 어셈블리의 버전 번호를 변경하지 않을 경우 .NET은 GAC에서 원래 어셈블리를 찾고 검색을 중지합니다.GAC를 찾는 것이 먼저이기 때문에 새 버전 번호를 지정하지 않는 한 어셈블리의 코드베이스를 지정하는 것은 좋지 않습니다.
요소를 사용하여 \bin 폴더의 어셈블리로 GAC를 재정의할 수 있습니다.
지정함으로써<codebase version="1.2.3.4" href="/bin/MyAssembly.dll" />
내 web.config 파일에서 나는 내 애플리케이션에게 GAC에 지정된 버전이 아닌 이 버전을 사용하라고 말할 수 있습니다.
조립 위치를 지정하기 위한 요소도 검토할 수 있습니다.
저는 제가 아담 실스와 같은 생각을 하고 있다고 생각하지만, 제가 이해하기 위해 다시 말을 했습니다.제가 직접 테스트한 결과, 다음과 같습니다.
- 앱이 버전 1.0.0.0으로 컴파일되고 1.0.0.1이 GAC에 있으면 /bin에서 .dll을 생략할 수 있습니다.
- 앱이 버전 1.0.0.1로 컴파일되고 1.0.0이 GAC에 있는 경우에는 GAC를 무시하려면 /bin에 .dll을 넣어야 합니다./bin에 최신 버전을 포함하지 않는 한 GAC 버전이 필요한 버전보다 오래된 경우 오류가 발생합니다.
이게 맞았으면 좋겠어요...
윈도우즈 SDK(소프트웨어 개발 키트)에 포함된 어셈블리 바인딩 로그 뷰어(Fuslogvw.exe)를 사용하여 로그 파일의 바인딩 정보를 볼 수 있습니다.
s
언급URL : https://stackoverflow.com/questions/981142/dll-in-both-the-bin-and-the-gac-which-one-gets-used
'programing' 카테고리의 다른 글
EF 4.1 예외 "공급자가 공급자 매니페스트를 반환하지 않았습니다.토큰 문자열" (0) | 2023.06.29 |
---|---|
PHP+MongoDB: 'No sheat file or directory' 메시지와 함께 'MongoCursorException'이(가) 발견되지 않았습니다. (0) | 2023.06.29 |
Oracle은 단락 평가를 사용합니까? (0) | 2023.06.24 |
Mongoid 파인더가 작동하지 않나요? (0) | 2023.06.24 |
파일 확장명을 기반으로 Gitdiff를 필터링하는 방법은 무엇입니까? (0) | 2023.06.24 |