2013-05-21 1 views
0

.NET에 대해 질문이 있습니다.. NET 응용 프로그램에 의해 Dll 사용

dll의 일부 하위 집합을 사용하는 WinForms applications 집합이 있습니다. 그 중 일부는 해당 응용 프로그램간에 공유됩니다. 모든 바이너리는 같은 디렉토리에 있습니다. 그 WinForms 애플 리케이션을 분할하고 구체적인 애플 리케이션에 필요한 DLL 만 가져 가야합니다. 어떻게하면 쉽게 할 수 있습니까? ("빠른"5 분 솔루션이 필요합니까?)

옵션은 내가 생각 :

  1. domain.ExecuteAssembly을 (@ "exefilename"); domain.GetAssemblies(); // 앱에서 사용하는 어셈블리를 확인합니다.

    단일 스레드 아파트 속성 또는 별도 스레드가 필요합니다. x86, x64 및 AnyCPU 빌드에 문제가 있습니다. 보안, 프레임 워크 버전 등으로 많은 트릭이 있습니다.

    그래서 "5 분"해결 방법이 아니며 추가 조사가 필요하다고 생각합니다.

  2. Assembly.GetReferencedAssemblies()

    이 (어셈블리 참조 어셈블리가 차례로 다른 어셈블리를 참조하는 경우 작동하지 않습니다) 1 개 레벨 제한이 있습니다. (System.Diagnostics 네임에서)

  3. Process.Modules

    (당신이 (AppDomain.Load 방법으로 파일을로드에서 바이트 [] 바이트 [])를 읽을 때) 원시 조립 로딩 작동하지 않습니다

    .NET 4에서 시작하는 데 작동하지 않습니다 (이 문제로 인해 msft connect에 버그가 있음). .NET 3.5에 대한 훌륭한 "5 분"솔루션이 되겠지만 .NET 4.5에 대한 솔루션이 필요합니다.

  4. 그냥 응용 프로그램을 실행하고 폴더의 모든 DLL을 삭제하십시오. 사용 된 파일은 삭제되지 않습니다 (파일은 잠겨 있습니다). 그러나 여전히 원시 어셈블리 로딩에는 작동하지 않습니다.

다른 아이디어가 있습니까?

+0

사용자 작업 -> signIn, SignUP, forgotPassword, 암호 재설정 2) DB Inser/ADd/Edit, 4) DB DEleted 양식은 분할 할 수있는 것처럼 적용됩니다. –

+0

여기 좋은 기사가 있습니다 : http://msdn.microsoft.com/en-us/magazine/cc163641.aspx#S1 옵션 1을 선택하는 경우 –

+0

@Akshay Joy 죄송합니다, 내가 팔로 잉을 확신하지 못합니다. 당신. dll에 비즈니스 로직이 필요하며 UI가 필요하지 않습니다. 하지만 그 dll의 어떤 하위 집합이 특히 모든 단일 응용 프로그램에서 사용되는지 알아야합니다. –

답변

0

정확하게 기억하면 IlDasm.exe은 DLL 종속성을 반복적으로 검사합니다.