2011-11-30 1 views
0

내 코드에서 이것을 가지고 : 내 프로그램을 디버깅 할 때Assembly.GetTypes는()

Assembly assembly = Assembly.LoadFile(dllFile); 
//dllFile has the correct value of a path of a .dll file 
foreach (Type type in assembly.GetTypes()) {...} 

, 모든 것이 잘 작동합니다. 내 프로그램 용으로 exe 파일을 만들면 assembly.GetTypes() 코드가 실행되고 실행이 중지됩니다. 무엇이 assembly.GetTypes()가 내가 exe를 사용할 때 디버깅 할 때 다르게 작동합니까?

+1

다음을 살펴보십시오. http://social.msdn.microsoft.com/Forums/en/US/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/ – Prisoner

+0

두 경우의 경로는 무엇입니까? – V4Vendetta

+0

dllFile의 정확한 값을 표시하십시오. 하드 코드 한 경우 디버그 모드에서 디버그 폴더의 릴리스 폴더 – Serghei

답변

3

이 링크에서보세요 :

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/

당신은() Assembly.LoadFile를 사용해서는 안됩니다. 어셈블리가있는 을 알고있는 경우 LoadFrom()을 사용하고 Load()를 사용하여 .NET이 어셈블리를 찾은 곳에서 을 찾습니다. 로드()를 사용하여 환경 설정해야하지만 당신은 그 이벤트를 구독 할 수 있습니다

신용

+0

Assembly.LoadFile() 대신 Assembly.LoadFrom()을 사용해야합니다. –

+1

잘 알고 있습니다 :) –

1

exe ​​파일을 만들 때 어셈블리가 올바른 폴더에 있고 또한 exe 파일이 해당 폴더에 액세스 할 수 있는지 확인해야합니다.

+0

어셈블리가 올바른 폴더에 있습니다. 제대로로드됩니다. –

0

@HansPassant에 .NET 어셈블리를 찾을 수 있도록하기 위해 .config 파일을 필요로하고 위치에서 간단한 Assembly.LoadFrom을 할 수 있습니다 엔지니어가 알고있는 시스템을 기반으로 자신 만의 멋진로드를 수행 할 수도 있습니다. AppDomain의 다양한 종속성을 해결하는 측면을 처리 할 수있는 AppDomain에는 TypeResolveResourceResolve 이벤트가 있습니다. 자세한 내용은 Microsoft forum thread을 참조하십시오.