DLL에서 관리 코드인지 관리되지 않는 코드인지 프로그램에서 어떻게 확인할 수 있습니까? 우리는 모든 관리 DLL이 MSIL인지 확인하기 위해 this code을 사용하고 있습니다. 그러나 관리되지 않는 DLL에 예외가 발생하므로 먼저 DLL이 관리되는지 확인해야합니다.DLL을 관리할지 또는 관리하지 않는지 프로그래밍 방식으로 결정할 수 있습니까?
답변
가장 간단한 옵션은 파일을 열어보고 예외를 잡는 것입니다. 관리되지 않는 어셈블리는 Assembly.LoadFrom
에 예외를 throw합니다.
그러나 더 엄격하게 결정하려면 해당 정보에 대한 PE 헤더를 직접 검토해야합니다. 이 article describes the process 자세한 내용은 있지만 DLL의 PE 헤더 IMAGE_OPTIONAL_HEADER 구조를 확인해야합니다.
그들은 확실히 그렇게 쉽게하지 않습니다 :) 감사합니다. –
@DavidThielen 아니오 - 불행히도,이 간단한 API는 없습니다 , 심지어 네이티브 측면에서. –
@DavidThielen이 작업을 수행하기 전에 코딩을 진행하기 전에 관련된 시간을 생각해보십시오. 예외를 처리하는 것이 빌드 시간에 2ms를 추가하는 경우 PE 헤더를 파싱하는 방법을 쓰는 대신'(처리기를 작성하는 데 소요되는 시간/예외 처리와 감지 사이의 시간차) <빌드 수 프로그램의 일생은 가치가 없다. –
- 1. TFS WorkItem 필드가 필요한지 프로그래밍 방식으로 결정할 수 있습니까?
- 2. 프로그래밍 방식으로 대상 .NET Framework 버전을 결정할 수 있습니까?
- 3. 클래스가 프로그래밍 방식으로 어떤 속성을 결정할 수 있습니까?
- 4. 프로그래밍 방식으로 인터페이스 요구 사항/종속성/상속을 결정할 수 있습니까?
- 5. EditItemTemplate에서 사용할 컨트롤을 프로그래밍 방식으로 어떻게 결정할 수 있습니까? (ASP.NET)
- 6. ASP.NET MVC의 면도기 모델을 프로그래밍 방식으로 결정할 수 있습니까?
- 7. 프로그래밍 방식으로 SharePoint 개체의 유형을 결정할 수 있습니까?
- 8. 어떻게 UITableViewRow가 프로그래밍 방식으로 표시 될지 결정할 수 있습니까?
- 9. 열 길이를 초과하여 프로그래밍 방식으로 (OLEDB)를 결정할 수 있습니까?
- 10. 멀티 코어, 하이퍼 스레딩 또는 멀티 프로세서에서 프로그래밍 방식으로 어떻게 결정할 수 있습니까?
- 11. 프로그래밍 방식으로 또는 스크립트 방식으로 net.tcp를 활성화 할 수 있습니까?
- 12. 프로그래밍 방식으로 DLL에서 UAC 활성화없이 DLL을 등록하십시오.
- 13. 컴퓨터가 연결된 스위치의 잭을 결정할 수 있습니까?
- 14. 프로그래밍 방식으로 C#/VB.NET COM dll을 등록하십시오.
- 15. MOTION_EVENT 프로그래밍 방식으로 프로그래밍 할 수 있습니까?
- 16. .NET 프로세스에서로드되는 네이티브 DLL을 프로그래밍 방식으로 확인하는 방법이 있습니까?
- 17. 어떻게하면 (Windows) OS의 최대 사용자 모드 공간을 프로그래밍 방식으로 결정할 수 있습니까?
- 18. outlook 또는 outlookexpress에서 전자 메일을 프로그래밍 방식으로 삭제할 수 있습니까?
- 19. ios - UITableViewCell은 프로그래밍 방식으로 또는 IB에서 사용할 수 있습니까?
- 20. 프로그래밍 방식으로 해시 규칙을 만들 수 있습니까?
- 21. 앱에서 프로그래밍 방식으로 GPS를 사용할 수 있습니까?
- 22. 프로그래밍 방식으로 iPhone 화면을 잠글 수 있습니까?
- 23. 어떻게 프로그래밍 방식으로 ComponentListener를 실행할 수 있습니까?
- 24. 프로그래밍 방식으로 크로메스트 경로에 연결할 수 있습니까?
- 25. 프로그래밍 방식으로 jWizard에서 단계를 숨길 수 있습니까?
- 26. 어떻게 프로그래밍 언어에서 사용해야하는 데이터 유형을 결정할 수 있습니까?
- 27. 어떻게 프로그래밍 방식으로 WAV 파일의 샘플 속도와 비트 전송률을 결정할 수 있습니까?
- 28. Java가 Windows 시스템에 설치되었는지 여부를 프로그래밍 방식으로 어떻게 결정할 수 있습니까?
- 29. OnKeyDown 재정의에서 해당 e.Key 값에서 표시 할 문자를 프로그래밍 방식으로 결정할 수 있습니까?
얼마나 자주 하시겠습니까? 때로는 예외를 처리하고 계속 진행해야하는데,이를 해결하기위한 쉬운 (예외적 인) 방법이 있는지 모르겠습니다. –
@ScottChamberlain 빌드 프로세스에 있으므로 시간이 많이 걸리지 않습니다. 코드가 예상대로 실행될 때 예외가 발생하는 것을 싫어합니다. –
@DavidThielen 직접 API는 없으므로 약간 복잡합니다. 개인적으로 예외를 잡는 것은 그저 쉽고 깨끗하기 때문에 내가 취하는 접근법입니다. –