2009-10-11 5 views
3

: 닷넷 어셈블리의 위치에 대한 AssemblyFoldersEx모노 어셈블리 폴더? 레지스트리 같은 키가 Windows 시스템에

\ 마이크로 소프트 \ .NETFramework \ V2.0.50727 \

HKLM \ 소프트웨어는 GAC가 아닌 다른 폴더.

비 - 승리 모노 시스템은 이들을 검색하는 방법이 있습니까? 아니면 중요하지 않다고 생각 했습니까?

+4

왜 그 중 하나를 원해야합니까? 설치 프로그램은 ApplicationDirectory 나 AssemblyCache에 어셈블리를 설치하는 프로그램입니다. 코드는 이러한 폴더와 관련이 없습니다. –

+0

"코드가이 폴더와 아무 관계가 없습니다."어떻게 알 수 있습니까? 내 코드에 대해서는 아무 말도하지 않았다. –

+0

그런 다음이 위치를 알아야하는 이유를 설명하십시오. 기회는 당신이해서는 안되는 일을하고있는 것입니다. – skolima

답변

5

레지스트리는 크로스 플랫폼이 아닙니다. 구성 데이터를 저장하는 것도 좋지 않습니다. 레거시 코드를 다루지 않는 한 .Net에서 레지스트리를 사용하지 마십시오.

GAC는 Mono와 .NET 모두에서 전역 어셈블리를 추적합니다. 지역 어셈블리는 나머지 프로그램과 함께 보관해야합니다.

정말로 이러한 위치가 필요하다면 (그러지 않아야 함) 구성 파일에 수동으로 위치를 지정해야합니다.

어쨌든 GAC에있는 어셈블리의 물리적 위치를 찾는 이유는 무엇입니까?

3

Linux의 Mono는 GAC를 파일, 경로 및 두 파일 사이의 링크 목록으로 저장합니다. 기본 모노 런타임을 생성하는 대부분의 코드는 MONO_ASSEMBLIES라는 컴파일 시간 플래그를 사용합니다. 이 값은 빌드 시스템 내에서 기본적으로 $ prefix/lib로 설정됩니다.

대부분의 리눅스 배포판에서 $ prefix는 "/ usr"로 설정되어 있으므로 MONO_ASSEMBLIES은/usr/lib가됩니다. 이 점을 염두에두고 GAC의 실제 기본 경로는 $prefix/lib/mono/gac입니다. GAC에 대해 여러 기본 경로를 설정할 수있는 모노 (MONO_GAC_PREFIX) 환경 변수를 설정할 수도 있습니다.

이 경로는 설치마다 변경할 수 있으며 모노는 환경 변수를 사용하는 다중 경로를 허용하므로 기본 경로는 Assembly.Location 일 필요가 있습니다. 또한 Assembly.GlobalAssemblyCache을 사용하면 경로를 확인해야할지 결정하는 데 도움이됩니다.

도움이 되었기를 바랍니다.

관련 문제