2009-05-28 8 views
4

우리의 응용 프로그램은 많은 사용자 지정 내장 라이브러리와 타사 라이브러리를 사용하고 있으며 각 응용 프로그램에는 이러한 어셈블리에 대한 개인 참조가 있습니다. 즉, 이러한 각 응용 프로그램의 bin 폴더에는 참조 된 어셈블리가 복사됩니다. 예 : 응용 프로그램 A는 log4net.dll, CustomLibA.dll, CustomLibB.dll 및 응용 프로그램 B를 참조하며 log4net.dll, CustomLibA.dll, CustomLibB.dll을 참조하며 이러한 어셈블리는 다음과 같은 구조로 저장됩니다..NET에서 어셈블리 공유

D : \를 Inetpub \ wwwroot에 \ 애플리케이션 A \ 빈 D : \를 Inetpub \ wwwroot에 \ 애플리케이션 B 빈 \

나는이 배열에 대한 다음과 같은 질문이 있습니다

  1. 내가이가 만들 생각을 모든 응용 프로그램이 이러한 모든 어셈블리를로드하므로 가상 주소 조각화가 발생하므로 응용 프로그램 및 참조 수가 증가함에 따라 성능 문제가 발생합니다. 내 가정이 맞습니까?

  2. 이러한 모든 응용 프로그램이 공용 폴더에서 어셈블리를 참조하며 bin 폴더에 개인 복사본이 없도록 응용 프로그램을 구성 할 수 있습니까? 예 : 어셈블리의 log4net.dll은 CustomLibA.dll, CustomLibB.dll은 다음 폴더에 구성되어

D : \를 Inetpub \ wwwroot에 \ APPS \ 공통 다음과 같이 구성되어있는 응용 프로그램에서

참조

:

D : 어플 \ 애플리케이션 A D \ \를 Inetpub \ wwwroot에 : \를 Inetpub \ wwwroot에 \ APPS \ 애플리케이션 B

이러한 응용 프로그램 내의 bin 폴더는 일반적인 어셈블리이 없습니다.

이 방법이 유용할까요? copy local을 false로 설정하여이 작업을 시도했지만 '파일 또는 어셈블리 xxxx을로드 할 수 없습니다.'라는 메시지가 나타납니다.

나는 GAC를 사용할 수 있다는 것을 알고 있지만 배포 과정의 특성상 특정 사용자 정의 라이브러리에 GAC가 사용되지 않도록하고 싶습니다.

감사합니다. 하리 크리슈 난.

+0

이러한 것들에 대한 좋은 참조는 C# –

답변

2

GAC를 사용하면 성능 및 코드 공유에 이점이 추가 될 수 있습니다. 모든 응용 프로그램을 공통 공유 경로로 참조하면 각 응용 프로그램이 자체 어셈블리 복사본을 메모리에로드한다는 사실을 변경하지 않습니다.

공유 경로가 제공하는 유일한 이점은 이러한 어셈블리의 여러 복사본을 배포 할 필요가 없다는 것입니다.

+0

이것이 제 질문에 모두 대답하지는 않지만 jerryjvl이 첫 번째 질문에 대답했습니다. 감사. –

3

언제든지 bin 또는 gac이 아닌 다른 폴더에서 참조를 찾기 위해 appdomain의 다른 경로를 추가 할 수 있습니다.
AppDomain.AddReferencePath

+1

을 통한 CLR의 처음 3 장이 사용중인 프레임 워크에 따라 다릅니다. AppDomain.CurrentDomain.AppendPrivatePath (경로) 및 AppDomainSetup adSetup = 새 AppDomainSetup(); adSetup.PrivateBinPath = path –

1

나는 GAC가 일반적인 클래스 라이브러리에 대한 최선의 방법이라고 생각합니다. 여전히 local \ bin 디렉토리에 사용자 정의 라이브러리를 배치 할 수 있습니다.

+0

어셈블리의 이름이 강력한 경우. –

+0

GAC가 가장 좋은 장소라고 생각합니다. 그리고 우리는 GAC에 Thrid Party 라이브러리를 설치했습니다. 그러나 특정 맞춤 라이브러리는 한 달에 두 번 출시되며 GAC에 배포하는 것은 배포 프로세스로 인해 번거로울 수 있습니다. –

관련 문제