2010-07-16 2 views

답변

17

위의 대답은 잘못에서보세요. 당신은 전체 프레임 워크와 나란히 있습니다. 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이 조립에 대해 단지로드 할 수 있어야합니다. 내가 본 유일한 문제점은 보안 권한 때문입니다.

+1

"CLR 호스팅 API"에 대한 내용을 알고 있는지 모르겠다 : msdn.microsoft.com/en-us/magazine/cc163567.aspx – user276648

6

기본적으로 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> 
+0

문서에 따르면 올바릅니다. 그러나 때때로 C# 컴파일러가 v2.0 어셈블리를 추가하고 별칭을 지정하여로드 문제를 일으키는 것으로 보입니다. 이걸 설명 할 수 있니? 다음은 그 예입니다 : http : // stackoverflow.co.kr/questions/3841911/linking-to-a-net-v2-0- 조립품 -net-v4-0- 조립품 - 함께 표시 - 링크 - – codekaizen

+0

답변 주셔서 감사합니다. 이것은 빠른 테스트 프로젝트를 작성함으로써 이루어집니다. 4.0을 실행하는 콘솔 앱과 3.5를 실행하는 클래스 라이브러리가 있습니다. 지정된대로 설정 파일을 만들었고 Environment.Version은 4.0입니다. – AlexWilson

+0

구성 파일이 DLL에서 작동하지 않습니다. 그것은 런타임에 의해로드되는 것이므로 .EXE 구성 파일에 추가해야합니다. – codekaizen

1

HTW의 대답은 당신을 위해 그것을 대답하지 않았다, 또는 당신에 충돌합니다. 이

http://msmvps.com/blogs/rfennell/archive/2010/03/27/mixed-mode-assembly-is-built-against-version-v2-0-50727-error-using-net-4-development-web-server.aspx

+0

이봐 요, 전이 일을 완전히 잊었어요.이 app.config 게시 해 주셔서 감사합니다. 이 작업을 몇 시간 동안 해봤는데 이것이 해결책이었습니다. – TravisWhidden

관련 문제