2011-09-29 2 views
2

Oracle.DataAccess.dll을 사용하여 데이터베이스에 연결하여 작업을 수행하는 응용 프로그램을 빌드하고 있습니다. 데이터베이스 액세스는 응용 프로그램이 수행하는 작업의 90 %를 수행 할 필요가 없으며 응용 프로그램이 JIT로드 덕분에 dll을 사용하지 않고 정상적으로로드됩니다. 그러나 dll이없는 경우 응용 프로그램의 특정 부분에 액세스 할 때 충돌이 발생합니다.어셈블리 누락시 응용 프로그램 기능 사용 안 함

dll이 없을 때 해당 양식에 대한 액세스를 사전에 해제하려면 응용 프로그램로드시 해당 DLL을 감지 할 수있는 방법이 있습니까?

업데이트 :

내가 더 나은 솔루션은 거기 밖으로

if (!File.Exists("Path to Oracle.DataAccess.dll")) 
{ 
    toolStripMenuItem.Enabled = false; 
} 

을 수행하여 잠재적 인 해결책을 찾을 수 있었다?

+0

어셈블리를 동적으로로드하고 있으므로 해당 어셈블리가로드 될 때 응용 프로그램의 해당 부분에 대한 링크를 동적으로 빌드하지 않는 이유는 무엇입니까? –

+0

어셈블리를 프로젝트 참조로 디자인 타임에 정의해야한다고 생각합니다. C#의 자체 JIT로드를 통해로드가 실제로 필요할 때 지연됩니다. – iterion

답변

2

Assembly.Load을 시도해보고 작동하는지 확인할 수 있습니다. 그렇지 않으면 아마도 GetLoadedModules이 필요한 것을 할 수 있습니다. 경로 검색은 GAC를 제외하고 다른 장소의 어셈블리가 될 수 있으므로 작동하지 않습니다.