2009-01-30 6 views
11

사용 가능한 모든 .NET 2.0 어셈블리를 나열하는 가장 좋은 방법은 무엇입니까?사용 가능한 모든 .NET 어셈블리 나열

.NET 탭에서 '참조 추가 ...'를 수행 할 때 MS Visual Studio에서 보여주는 예제가 필요합니다.

나는 Visual Studio에서 자체 디렉토리 구성과 GAC 및 다른 .NET 설치를 읽었습니다. 이 디렉토리가 컴퓨터의 휴대용 방식 (예 : 다른 컴퓨터에 D : 드라이브에 설치된 Windows가있을 수 있음)에있는 위치를 알 수있는 방법에 대한 아이디어는 무엇입니까?

나열된 정보에서 Assembly.Loadxxxx()를 사용할 수 있어야합니다.

참고 : 프로그래밍 방식으로 수행해야하며 gacutil을 사용하지 않는 것이 좋습니다 (예 : C# API를 제공하지 않는 경우). 이 모든 목표는 사용자 정의 동적 스크립트 편집기를 작성하여이 정보를 얻을 필요가 있음을 이해하는 것입니다.

답변

-1

이전에 같은 문제에 대해 알게 된 유일한 정보는 this이지만 그 정보를 사용하지는 못합니다.

보기에 보면 모든 .DLL 파일을 찾기 위해 디렉토리를 트래버스하는 것이 약간 번거로우 며 어쩌면 그렇게해야 할 수도 있습니다.

9

먼저 GAC의 참조 어셈블리와 어셈블리간에 중요한 차이점이 있습니다. 코드를 컴파일하려면 참조 어셈블리가 필요합니다. 코드를 실행하려면 .exe와 같은 폴더에있는 어셈블리의 복사본이나 GAC의 어셈블리 중 하나가 필요합니다.

일반적으로 .NET 응용 프로그램을 설치하면 설치 프로그램이 GAC에서 사용하는 어셈블리를 복사합니다. 이러한 어셈블리는 이 아니며을 참조 어셈블리로 사용할 수없는 경우 해당 어셈블리가 어떤 폴더에 저장되어 있는지 찾을 수 없으므로 컴파일러에게 해당/reference 명령 줄 인수의 적절한 값을 알릴 수 없습니다. 글쎄, 당신은 알아낼 수 있지만 Microsoft는 쉘 애드 인을 사용하여 가능한 한 어렵게 만들려고 노력했다.

여러분이 자신의 프로그램에서 어셈블리를 사용할 수있는 .NET 응용 프로그램을 설치하면 다른 점이 생깁니다. .NET 프레임 워크와 같습니다. 모든 어셈블리를 2 부씩 만듭니다. 하나는 GAC에 들어가고 다른 하나는 "잘 알려진"위치에 있습니다. .NET Framework의 경우 이러한 잘 알려진 위치는 c : \ windows \ microsoft.net \ 및 c : \ program files \ reference 어셈블리입니다. 후자 폴더는 .NET 3.0 이상에서 사용되기 시작했습니다.

Visual Studio의 참조 추가 대화 상자는 이러한 잘 알려진 위치를 나열하는 레지스트리 키를 사용합니다. 부부가 있지만 중요한 것은 HKLM\Software\Microsoft\.NETFramework\AssemblyFolders입니다.

짧은 설명 : 해당 레지스트리 키를 사용하여 참조 추가 대화 상자에서 생성되는 것과 동일한 목록을 생성 할 수 있습니다. 하지만 100 % 신뢰할 수있는 것은 아니며 일부 제품이 다른 곳에서 복사 한 참조 어셈블리가 누락 될 수 있습니다. VS에서 찾아보기 탭을 사용하여 참조를 추가해야합니다. 그리고 전체 디스크를 검색하여 직접 찾으십시오.

+0

답변에서 마지막 부분을 시도했지만 작동하지 않았습니다. 'System.dll'은 예를 들어'HKLM \ Software \ Microsoft \ .NETFramework \ AssemblyFolders'에있는 경로에 포함되어 있지 않습니다. – GETah

관련 문제