다음과 같은 예외가 발생합니다.
혼합 모드 어셈블리는 런타임 ‘v2.0.50727’버전에 대해 빌드되며 추가 구성 정보가 없으면 4.0 런타임에로드 할 수 없습니다.
WPF 프로그램에서 Crystal 보고서를 내보내려고 할 때 …
이미 app.config에 다음을 추가했습니다 …
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
모든 전문가가 도울 수 있습니까 ????
내가 찾은 참조 :
http://www.davidmoore.info/2010/12/17/running-net-2-runtime-applications-under-the-net-4-runtime
답변
구성 노드 아래의 app.config 에서이 정확한 시작 태그를 사용하십시오.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<requiredRuntime version="v4.0.20506" />
</startup>
답변
예외는 .NET 4.0에 포함 된 일부 .NET 2.0.50727 구성 요소를 명확하게 나타냅니다. App.config 파일에서 다음을 사용하십시오.
<startup useLegacyV2RuntimeActivationPolicy="true" />
내 문제를 해결했다
답변
응용 프로그램 app.config 파일에 useLegacyV2RuntimeActivationPolicy = “true”속성을 추가하십시오.
오래된 가치
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
새로운 가치
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
문제를 해결할 것입니다.
답변
나는 실제로 역 솔루션 과 동일한 문제가있었습니다 . .NET 프로젝트를 .NET 4.0으로 업그레이드 한 다음 다시 .NET 3.5로 되돌 렸습니다. 내 프로젝트의 app.config에 다음과 같은 문제가 계속 발생하여 위의 오류가 발생했습니다.
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
이 오류를 해결하기위한 해결책은 다음과 같이 올바른 2.0 참조로 되 돌리는 것입니다.
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
따라서 다운 그레이드로 인해 위의 오류가 발생하면 .NET Framework 지원 버전을 백업해야 할 수 있습니다.
답변
나에게 이것은 MSTest
(VS2015) 에서 단위 테스트를 실행할 때 발생했습니다 . 추가했다
<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>
에
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\TE.ProcessHost.Managed.exe.config
답변
app.config에서 레거시를 활성화해도 효과가 없었습니다. 알 수없는 이유로 내 응용 프로그램이 V2 런타임 정책을 활성화하지 않았습니다. 나는 여기 에서 일을 발견했다 .
app.config에서 레거시를 활성화하는 것이 권장되는 방법이지만 경우에 따라 예상대로 작동하지 않습니다. 레거시 V2 정책을 강제 실행하려면 기본 애플리케이션에서 다음 코드를 사용하십시오.
public static class RuntimePolicyHelper
{
public static bool LegacyV2RuntimeEnabledSuccessfully { get; private set; }
static RuntimePolicyHelper()
{
ICLRRuntimeInfo clrRuntimeInfo =
(ICLRRuntimeInfo)RuntimeEnvironment.GetRuntimeInterfaceAsObject(
Guid.Empty,
typeof(ICLRRuntimeInfo).GUID);
try
{
clrRuntimeInfo.BindAsLegacyV2Runtime();
LegacyV2RuntimeEnabledSuccessfully = true;
}
catch (COMException)
{
// This occurs with an HRESULT meaning
// "A different runtime was already bound to the legacy CLR version 2 activation policy."
LegacyV2RuntimeEnabledSuccessfully = false;
}
}
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("BD39D1D2-BA2F-486A-89B0-B4B0CB466891")]
private interface ICLRRuntimeInfo
{
void xGetVersionString();
void xGetRuntimeDirectory();
void xIsLoaded();
void xIsLoadable();
void xLoadErrorString();
void xLoadLibrary();
void xGetProcAddress();
void xGetInterface();
void xSetDefaultStartupFlags();
void xGetDefaultStartupFlags();
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
void BindAsLegacyV2Runtime();
}
}
답변
프로젝트의 파일이 아닌 다른 구성 파일을 사용하고 Visual Studio를 다시 시작하십시오.
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.x86.exe.config
(32-bit)
또는
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.exe.config
(64-bit)