4.0 CLR 응용 프로그램에서 링크해야하는 2.0 CLR 어셈블리 (순수한 관리 코드, 혼합 모드 문제 없음)가있는 경우 2.0 CLR 또는 4.0에서 2.0 코드가 실행됩니다..NET 4.0 응용 프로그램에서 .NET 2.0 Managed Assembly를 링크 할 때 어떤 프레임 워크가 사용됩니까?
기본적으로 4.0 코드가 변경되면 4.0 코드가 영향을받을 위험이 있습니까?
4.0 CLR 응용 프로그램에서 링크해야하는 2.0 CLR 어셈블리 (순수한 관리 코드, 혼합 모드 문제 없음)가있는 경우 2.0 CLR 또는 4.0에서 2.0 코드가 실행됩니다..NET 4.0 응용 프로그램에서 .NET 2.0 Managed Assembly를 링크 할 때 어떤 프레임 워크가 사용됩니까?
기본적으로 4.0 코드가 변경되면 4.0 코드가 영향을받을 위험이 있습니까?
위의 대답은 잘못에서보세요. 당신은 전체 프레임 워크와 나란히 있습니다. NET 2 응용 프로그램 (라이브러리가 아니라 EXE를 의미)이 자동으로 .Net 4로 승격되지 않습니다.
.Net 4 응용 프로그램이 .Net 2 어셈블리를로드하면 동일한 런타임에로드됩니다. 정보를 공유 할 수 있습니까?). .Net 2 어셈블리는 .Net 4 런타임에서 변경 사항의 손상을 최소화하는 것으로 간주되는 호환 모드를 사용하여로드됩니다 (주로 .Net 4의 보안 변경 사항). 이 기능을 가지고 있지 않기 때문에
닷넷이 어셈블리는 닷넷 4 어셈블리를 참조 할 수 없습니다.
내가 아는 당신이 C++ 응용 프로그램에서 닷넷 어셈블리를로드하는 경우입니다 유일한 예외. C++ 응용 프로그램은 두 개의 런타임을로드하고 호스트 할 수 있습니다. .Net 2 어셈블리와 .Net 4 어셈블리를로드 할 수는 있지만 서로 직접 대화 할 수는 없습니다. 이것이 CLR Procs가 SQL Server에서 작동하는 방법입니다. .NET 2 CLR Proc 및 .Net 4 CLR Proc는 통신 할 수 없지만 둘 다 서버에로드됩니다.
는 최근 닷넷 프레임 워크를 호스팅에 대한 MSDN 매거진에 좋은 기사가 있었다, 그러나 나는 지금 그것을 찾을 수 없습니다. 어쩌면 다른 사람이 링크를 게시 할 수 있습니다.그래서 당신은 많은 문제없이 닷넷 4 실행 파일로 모든 .NET이 조립에 대해 단지로드 할 수 있어야합니다. 내가 본 유일한 문제점은 보안 권한 때문입니다.
기본적으로 4.0 코드가 변경되면서 4.0 코드가 영향을받을 위험이 있습니까?
아니요. .NET 4부터는 호환성 문제에 대해 걱정할 필요가 없습니다 ! 버전 4에는 "In-Process Side-by-Side Execution"이라는 새로운 기능이 도입되었습니다.이 기능을 사용하면 여러 버전의 CLR을 동일한 프로세스에로드 할 수 있습니다. 당신은 2.0 CLR 어셈블리를로드 할 때 즉
, 주요 응용 프로그램이 4.0 런타임에서 실행되기 때문에, 당신은 2.0 런타임을로드를 알 수 있습니다. 2.0 CLR 어셈블리는 2.0 런타임을 사용하지만 응용 프로그램은 4.0 런타임을 계속 사용합니다.어떻게 지정합니까? 내 생각에 2.0 CLR 어셈블리 (예 : "My.dll"과 같은 디렉토리에 "My.dll.config")에 대한 구성 파일을 추가 할 수 있지만 DLL로 직접 시도하지 않았습니다. 그럼에도 불구하고, 여기에 당신이 어셈블리의 설정 파일에 넣어 내용은 다음과 같습니다
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
문서에 따르면 올바릅니다. 그러나 때때로 C# 컴파일러가 v2.0 어셈블리를 추가하고 별칭을 지정하여로드 문제를 일으키는 것으로 보입니다. 이걸 설명 할 수 있니? 다음은 그 예입니다 : http : // stackoverflow.co.kr/questions/3841911/linking-to-a-net-v2-0- 조립품 -net-v4-0- 조립품 - 함께 표시 - 링크 - – codekaizen
답변 주셔서 감사합니다. 이것은 빠른 테스트 프로젝트를 작성함으로써 이루어집니다. 4.0을 실행하는 콘솔 앱과 3.5를 실행하는 클래스 라이브러리가 있습니다. 지정된대로 설정 파일을 만들었고 Environment.Version은 4.0입니다. – AlexWilson
구성 파일이 DLL에서 작동하지 않습니다. 그것은 런타임에 의해로드되는 것이므로 .EXE 구성 파일에 추가해야합니다. – codekaizen
HTW의 대답은 당신을 위해 그것을 대답하지 않았다, 또는 당신에 충돌합니다. 이
이봐 요, 전이 일을 완전히 잊었어요.이 app.config
"CLR 호스팅 API"에 대한 내용을 알고 있는지 모르겠다 : msdn.microsoft.com/en-us/magazine/cc163567.aspx – user276648