.NET 4.0 프로젝트에서 .NET 2.0 혼합 모드 어셈블리를 참조하려면 어떤 '추가 구성'이 필요합니까?
.NET 4.0 기능 중 일부를 사용하려는 프로젝트가 있지만 핵심 요구 사항은 시스템을 사용할 수 있어야 한다는 것입니다.2.X에 대해 컴파일된 Data.SQLite 프레임워크입니다.저는 여기서 승인된 답변과 같이 이것이 가능하다는 것을 언급하지만 실제로 어떻게 이를 달성할 수 있는지는 모르겠습니다.
2.X 어셈블리를 참조하면서 4.0 프로젝트를 실행하려고 하면 다음과 같은 결과를 얻을 수 있습니다.
혼합 모드 어셈블리는 런타임의 버전 'v2.0.50727'을 기반으로 제작되었으며 추가 구성 정보 없이는 4.0 런타임에 로드할 수 없습니다.
필요한 "추가 구성"은 무엇입니까?
CLR 2.0 혼합 모드 어셈블리를 사용하려면 앱을 수정해야 합니다.포함할 구성 파일:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
은 핵은입니다.useLegacyV2RuntimeActivationPolicy플래그. 이로 인해 CLR은 최신 버전(4.0)을 사용하여 혼합 모드 어셈블리를 로드합니다.이것 없이는 작동하지 않을 것입니다.
이는 혼합 모드(C++/CLI) 어셈블리에만 해당됩니다. 2 는 " 2"에 지정하지 않고 할 수 .app.config.
이 포럼은 .NET Framework Developer Center에 게시됩니다.약간의 통찰력을 제공할 수 있습니다.
(앱의 구성 파일에 추가합니다.
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
대상 프레임워크의 버전에 따라 올바른 문자열을 얻기 위해 여기를 참조할 수 있습니다.
http://msdn.microsoft.com/en-us/library/ee517334.aspx
저는 왜 제 석방이 목표인지 알아내려고 몇 시간을 허비했습니다.Net 4.0 클라이언트에는 전체 버전이 필요합니다.저는 결국 이것을 사용했습니다.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
app.config 파일을 설정하면 Visual Studio가 App.exe.config라는 이름의 복사본을 bin 폴더에 생성합니다.배포 중에 응용프로그램 디렉토리에 복사합니다.분명하게 들리지만 놀랍게도 많은 사람들이 이 단계를 놓칩니다.WinForms 개발자는 파일:)을 구성하는 데 사용되지 않습니다.
2.0 및 4.0 어셈블리를 함께 사용하는 것은 쉽지 않습니다.
app.config에서 지원되는 프레임워크 선언의 순서는 실제로 혼합 모드가 느려지는 예외에 영향을 미칩니다.선언 순서를 뒤집으면 혼합 모드 오류가 발생합니다.이것이 이 답변의 목적입니다.
Windows Forms 앱에서 오류가 발생하면 Windows Forms 앱을 주로 사용해 보십시오.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
<supportedRuntime version="v2.0.50727"></supportedRuntime>
</startup>
또는 프로젝트가 윈도우즈 양식이 아닌 경우.웹 프로젝트에서 이 파일을 web.config 파일에 추가합니다.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"></supportedRuntime>
</startup>
useLegacyV2Runtime과 함께 "시작" 요소를 추가하여 문제를 해결할 수 있었습니다.ActivationPolicy" 특성 세트입니다.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
그러나 이를 적용하려면 App.config에 구성 태그의 첫 번째 자식 요소로 배치해야 했습니다.
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
......
....
위의 것들은 저에게 효과가 없었습니다 (저는 웹 앱에서 일하고 있습니다) - 하지만 이것은...
폴더에서 sgen.exe.config 파일을 편집합니다(먼저 하나를 만들어야 했습니다);C:\Program Files(x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 도구(v7.0 폴더에도 하나가 있지만 변경할 필요가 없습니다. VS2012를 사용하고 있습니다.)
XML의 내용은 다음과 같아야 합니다(이전 답변에서도 동일).
<?xml version ="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
</startup>
</configuration>
웹 서비스에서 작업 중이고 v2.0 어셈블리가 WcfSvcHost.exe에 의해 로드된 종속성인 경우 다음을 포함해야 합니다.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
...\Microsoft Visual Studio 10.0에서\공통7\IDE\ WcfSvcHost.exe.config 파일
이렇게 하면 Visual Studio는 런타임에 로더를 통해 올바른 정보를 보낼 수 있습니다.
Visual Studio 2015로 변경할 때 이 문제가 발생했습니다.위의 답변 중 어떤 것도 우리에게 효과가 없었습니다.결국 우리는 ALLsgen에 다음과 같은 구성 파일을 추가하여 작동하게 되었습니다.시스템에서 실행 파일 실행
<?xml version ="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
특히 이 위치에서는 .NET 4.0을 목표로 할 때에도 그렇습니다.
C:\Program Files(x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 도구
이 구성을 사용했습니다.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0"/>
<supportedRuntime version="v4.0"/>
</startup>
나를 위해 일했습니다.
Visual Studio 2015로 업그레이드할 때 이 문제가 발생했습니다. 여기에 게시된 솔루션 중 어떤 것도 차이를 일으키지 않았습니다. 구성이 올바르지만 변경 위치는 그렇지 않습니다.다음 구성을 추가하여 이 문제를 해결했습니다.
<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>
받는 사람: C:\Program Files(x86)\Microsoft Visual Studio 14.0\공통7\IDE\공통 확장\마이크로소프트\테스트 창\TE.ProcessHost.Managed.exe.config
그런 다음 Visual Studio를 다시 시작합니다.
3~4시간 동안 구글링을 한 후에 이 문제를 해결할 방법을 찾았습니다.다음 사항을 추가했습니다.
<startup selegacyv2runtimeactivationpolicy="true">
<supportedruntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
의 문제를 --> References에서 약프이이문해서못한면 --> 트참조에젝로만다지하.Right Click on DLL오류가 발생하는 부분 -->Select Properties-->Check the Run-time Version--> 그렇다면v2.0.50727그러면 우리는 문제를 알 수 있습니다.문제는 다음과 같습니다.2.0 Version of respective DLL.해결 방법: - 할 수 있습니다.delete the respective DLL프로젝트 참조 자료를 참조한 후download the latest version of DLL's해당 웹 사이트에서 최신 버전 DLL 참조를 추가하면 작동합니다.
동일한 오류가 발생하여 제안된 시작 문을 솔루션의 다양한 구성 파일에 추가하는 데 오랜 시간을 할애하여 프레임워크 불일치를 분리하려고 했습니다.아무 것도 효과가 없었습니다.XML 스키마에 시작 정보도 추가했습니다.그것도 도움이 안 됐어요.문제의 원인이 된 실제 파일("이동 또는 삭제"라고만 표시됨)을 보면 실제로는 LC(라이센스 컴파일러)라는 것이 드러났습니다.
문제가 되는 licenses.licx 파일을 삭제하면 문제가 해결된 것 같습니다.
VS 2008에서 VS 2010으로 일부 코드를 마이그레이션하는 동안 비슷한 문제가 발생했습니다. App.config 파일을 변경하면 문제가 해결되었습니다.
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
</configuration>
이 위치에 C:\Program Files(x86)\Microsoft SDKs\Windows\v7.0을 추가합니다.A\Bin\NETFX 4.0 Tools\x64 FileName: sgen.exe.config(이 파일을 찾지 못하면 파일을 만들고 추가하십시오)
<?xml version ="1.0"?>
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
이렇게 하면 문제가 해결됩니다.
사용
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
그것은 효과가 있지만 드 직전입니다.</configuration>태그를 지정하지 않으면 시작 태그가 제대로 작동하지 않습니다.
또한 저는 클래스 라이브러리에 대한 문제가 있었습니다. 만약 누군가 당신의 메인 애플리케이션에 추가된 클래스 라이브러리에 대한 문제를 가지고 있습니다.그냥 추가
<startup useLegacyV2RuntimeActivationPolicy="true">
클래스 라이브러리에서 선택할 수 있는 기본 응용 프로그램입니다.
언급URL : https://stackoverflow.com/questions/2455654/what-additional-configuration-is-necessary-to-reference-a-net-2-0-mixed-mode
'programing' 카테고리의 다른 글
| 애저에서 레드리스를 실행시키는 방법은? (0) | 2023.05.20 |
|---|---|
| 저장 프로시저에서 OUTPUT 파라미터(옵션)를 사용할 수 있습니까? (0) | 2023.05.20 |
| 바인딩의 기본값은 무엇입니까?Mode= WPF 컨트롤의 기본값은 무엇입니까? (0) | 2023.05.20 |
| 이전 커밋에서 파일 복원 (0) | 2023.05.20 |
| 셸 스크립트에서 문자열이 비어 있지 않거나 공백이 아닌지 확인 (0) | 2023.05.20 |