이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 46998|회답: 2

[출처] .NET은 전체 참조 어셈블리를 받지 않습니다

[링크 복사]
게시됨 2020. 8. 22. 오전 10:41:02 | | | |
사용하세요. .NET에서 로드된 어셈블리를 얻는 방법은 불완전하며, 다른 라이브러리를 참조하지만 호출하지 않으면 로드된 어셈블리에서 얻을 수 없습니다. 이 글에서는 WinForm과 ASP.NET 에서 완전한 어셈블리를 얻는 방법을 설명합니다.

소개

사용하세요. .NET에서 로드된 어셈블리를 얻는 방법은 불완전하며, 다른 라이브러리를 참조하지만 호출하지 않으면 로드된 어셈블리에서 얻을 수 없습니다. 이 글에서는 WinForm과 ASP.NET 에서 완전한 어셈블리를 얻는 방법을 설명합니다.

ASP.NET (측정되지 않음)

.NET 프레임워크는 어셈블리를 현재 AppDomain에 불러올 때까지 미룹니다. 예를 들어, SomeMethod(에서 서드파티 라이브러리만 호출하면, 서드파티 DLL은 보통 SomeMethod()의 첫 실행이 되어야 로드됩니다.

AppDomain.GetAssemblies()는 현재 AppDomain에 로드된 모든 어셈블리를 제공합니다. BuildManager.GetReferencedAssemblies()는 Web.config 및 기타 위치에서 참조된 모든 어셈블리 목록을 반환하여 해당 어셈블리를 현재 AppDomain에 불러옵니다.

코드:



윈폼

아래 코드를 사용해 로드된 어셈블리를 얻는 것부터 시작하세요.



획득된 의회 총회 수는 12개이며, 다음 그림에서 나타난다:



다른 라이브러리의 메서드를 호출하지 않으면, 메인 애플리케이션이 dll을 로드하지 않는데, 아마도 성능 오버헤드를 줄이기 위해서일 것입니다. 그래서 다른 라이브러리의 메서드를 처음 호출할 때 약간 느릴 수 있습니다.

수정된 코드를 다음과 같이 사용하세요:





얻은 어셈블리 어셈블리 수는 117개이며, 원칙은 애플리케이션 디렉터리 아래에 dll을 가져와 불러오는 것입니다.

이 경우 AppDomain.CurrentDomain.GetAssemblies()를 호출할 때, ToList() 방식으로, 전체 어셈블리를 얻을 수 있으며, 117 이상일 수도 있습니다.

현재 조립 상태 받아





이전의:.NET은 만료 알림을 위해 Redis 캐시를 사용합니다
다음:ServiceNow 클라우드 IT 비즈니스용 전문 관리 도구
 집주인| 게시됨 2020. 12. 25. 오후 3:50:46 |
게시됨 2021. 9. 22. 오후 8:39:35 |
배우기 시작해...
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com