문제

SLIMDX를 사용한 프로젝트를 변환하여 관리되지 않는 코드가 .NET 4.0으로 변환하는 동안 다음 오류가 발생했습니다.

혼합 모드 어셈블리는 런타임의 'v2.0.50727'버전에 대해 구축되며 추가 구성 정보없이 4.0 런타임에로드 할 수 없습니다.

인터넷 검색 주변에 솔루션을 제공했는데,이를 응용 프로그램 구성에 추가하는 것입니다.

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

내 질문은 무엇입니까 useLegacyV2RuntimeActivationPolicy 행위? 그것에 대한 문서를 찾을 수 없습니다.

도움이 되었습니까?

해결책

약간의 시간 (그리고 더 많은 검색) 후 이 블로그 항목 Jomo Fisher에 의해.

최근에 본 문제 중 하나는 나란히 런타임에 대한 지원으로 인해 .NET 4.0이 구형 혼합 모드 어셈블리에 바인딩하는 방식이 변경되었다는 것입니다. 이 어셈블리는 예를 들어 C ++ CLI에서 컴파일 된 어셈블리입니다. 현재 사용 가능한 DirectX 어셈블리는 혼합 모드입니다. 이와 같은 메시지가 보이면 문제가 발생했음을 알 수 있습니다.

혼합 모드 어셈블리는 런타임의 'v1.1.4322'버전에 대해 구축되며 추가 구성 정보없이 4.0 런타임에로드 할 수 없습니다.

한조각

응용 프로그램에 대한 좋은 소식은 app.config 플래그를 설정하여 이러한 어셈블리에 대한 .NET 2.0 ERA 바인딩으로 돌아갈 수있는 옵션이 있다는 것입니다.

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>
</startup>

따라서 런타임로드가 혼합 모드 어셈블리가 변경된 방식처럼 보입니다. 이 변경 사항에 대한 세부 사항이나 왜 완료된 이유를 찾을 수 없습니다. 하지만 useLegacyV2RuntimeActivationPolicy 속성은 CLR 2.0로드로 되돌아갑니다.

다른 팁

다음은이 속성에 대한 정보가없는 것을 돕기 위해 최근에 쓴 설명입니다.http://www.marklio.com/marklio/permalink,Guid,CC34C3C-BE44-4422-86B7-900900E451F9.aspx (인터넷 아카이브 웨이백 머신 링크)

가장 관련성이 높은 비트를 인용합니다.

.NET 설치] v4는 "비 충격적"입니다. 설치할 때 기존 구성 요소의 동작을 변경해서는 안됩니다.

uselegacyv2runtimeactivationpolicy 속성을 사용하면 기본적으로“레거시 Shim API에 대한 종속성이 있습니다. 선택한 런타임과 관련하여 예전 방식으로 작동하게하십시오.”

왜 우리는 이것을 기본 동작으로 만들지 않습니까? 이 동작이 더 호환되며 이전 버전의 포팅 코드가 훨씬 쉽다고 주장 할 수 있습니다. 기억할 경우, 이것은 V4의 영향력을 발휘할 수 있기 때문에 기본 동작이 될 수 없으므로 기존 앱을 컴퓨터에 설치할 수 있습니다.

전체 게시물은 이것을 더 자세히 설명합니다. RTM에서는 MSDN 문서가 더 나을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top