2010-08-18 2 views
2

우리의 응용 프로그램에서 이상한 동작이 .NET 4 설치 한 후 확인할 수 있는지 우리에게보고 사용자 : 난 당신이 어셈블리를 지정하지 않은 경우는로드 할 수 있음을 인식하지 않았다어셈블리가로드되는 프레임 워크를 식별하는 방법은 무엇입니까?

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v2.0.50727" /> 
    </startup> 
</configuration> 

을 높지만 호환되는 버전.

실행 파일이 실행되는 프레임 워크를 식별 할 수 있습니까? 런타임에? 또는 외부 프로세스를 통해? 이 경우임을 확인하고 사용자 경험은 다른 문제의 결과가 아니기를 바랍니다.


프로세스 탐색기가 EVEMon가 2.0에서 실행하고 있다고, 내가 문제를 의심하는 경향입니다 환경했다입니다 :

Process Explorer

+0

누구나 downvote에 대한 관심을 공유 할 수 있습니까? –

+0

Evemon이 그토록 유용한 도구이므로 +1을 드리겠습니다. –

+0

감사합니다 Scott, 잊지 마세요 EVEMon이 C#으로 작성되었습니다. 코드를 살펴보고 싶다면 아무 것도 추가 할 수 있는지 확인하십시오 :-p –

답변

5

어셈블리의 실행 코드 내에서 시스템을 사용할 수 있습니다. Environment.Version 정적 속성은 실행중인 CLR 버전을 확인합니다.

어셈블리 코드를 변경하지 않으려는 경우 Process Explorer을 사용하면 런타임에 프로세스에로드 된 DLL을 볼 수 있습니다. CLR 버전은 mscoree.dll 버전에서 확인할 수 있습니다.

+0

Process Explorer에 2.0이라고 이상합니다. –

1

CLR 버전 2.0.50727을 대상으로 한 프로그램은 .NET 4.0에서 자동으로 실행되지 않습니다. 명시 적 .config 파일 항목이 필요합니다. 클라이언트의 .config 파일에 대한 탁월함을 감안할 때, 이것은 실제로 그녀가 한 일일 수도 있고 문제가 있음을 알았을 수도 있습니다.

+0

그러나 2/3/3.5 대상 어셈블리를 4.0 프로세스에로드 할 수 있습니다. – Richard

1

Nicole은 Process Explorer가 확실히 쉬운 방법이라고 말했습니다. WindDBG를 사용하여 전체 메모리 덤프에서이 정보를 얻을 수도 있습니다.

또한 4.0과 함께 나란히 CLR hosting이 표시됩니다. 4.0 이전에는 프로세스가 없다면 no way of knowing what CLR was loaded이었습니다. 이것은 당신이 묘사 한 행동을 경험하게 한 이유가 될 수 있습니다.