2011-09-01 3 views
1

.NET Framework 3.5 또는 .NET Framework 4.0 런타임에서 실행할 수있는 라이브러리를 만드는 경우 염두에 두어야 할 점이 무엇인지 알고 싶습니다. Enterprise Library와 같은 일부 이전 버전과의 호환성이 필요합니다 (단 3.5 이전에는 해당 없음). 나는 그들이 3.5에서 라이브러리를 컴파일했지만 4.0 애플 리케이션에서 실행할 수있는 것을 보았다. 같은 효과를 내고 싶습니다. MINIMAL 프로젝트 유지 보수 노력. 제 질문이 충분히 분명하기를 바랍니다. 의견이 있으면 알려 주시기 바랍니다.Framework 4.0 런타임에서 Framework 3.5 라이브러리로드

EDIT : app.config를 2.0 및 4.0 런타임 모두를 인식하도록 설정하면 내 EXE가 실제로 두 런타임 중 하나에서 올바르게 실행됩니다. .NET 3.5와 4.0을 개별적으로 제거하여 각각을 개별적으로 실행할 수 있는지 테스트했습니다. 이러한 각 프레임 워크를 사용하여 고려해야 할 몇 가지 사항이있을 수 있지만 작은 tool'ish 유형의 앱과 libs에 대해서는 괜찮을 것이라고 생각합니다. 동의하지 않는 사람?

감사

답변

1

런타임은 이전 버전과 호환됩니다. 따라서 4.0 런타임은 3.5 및 2.0 기반 어셈블리를 실행할 수 있지만 그 반대의 경우는 아닙니다. 2.0 런타임에서 4.0 어셈블리를 실행하려고하면 2.0 런타임에서 4.0 어셈블리를로드 할 수 없기 때문에 BadImageFormatException이 발생합니다. Side-by-side 실행도 또 다른 옵션이지만 런타임의 최신 버전 (4.0 이상)에 적용되며 Microsoft는 앞으로도 격리 될 수있는 런타임 버전을 위해 계속 노력하고 있다고 들었습니다. 여러 버전의 어셈블리를 컴파일 할 필요는 없지만 응용 프로그램에 필요한 최소 런타임 버전을 염두에 두어야합니다. 예를 들어. NET 3.5가 필요한 단일 모듈이있는 경우,이 모듈보다 전체 응용 프로그램에 필요한 최소 런타임이어야합니다.

+0

안녕하세요. 내가 처음 3.5 용으로 컴파일하려고한다면 런타임 3.5 (또는 기술적으로 2.0)와 4.0 (호환 가능)을 호출하기 전에 작동하는지 확인합니다. 실제로이 방법으로 작동 할 수있어서 기쁩니다. 내 인생을 더 편하게 해줄거야. 답변 감사합니다. –

+0

기꺼이 도와 드리겠습니다. 네가 알고 싶어하는 것이 있다면, 나를 때리면 나는 그걸 블로그에 올릴 것이다. –

1

MS는이 http://msdn.microsoft.com/en-us/library/ms171868.aspx

에 대한 기사가 있습니다 인 - 프로세스 실행 이 기능은 동일한 프로세스에서 여러 버전의 .NET Framework를로드하고 시작하는 응용 프로그램을 가능하게 나란히 . 예를 들어 .NET Framework 2.0 SP1을 기반으로하는 추가 기능 (또는 구성 요소)과 동일한 프로세스에서 .NET Framework 4를 기반으로하는 추가 기능을로드하는 응용 프로그램을 실행할 수 있습니다. 이전 구성 요소는 이전 .NET Framework 버전을 계속 사용하고 새 구성 요소는 새 .NET Framework 버전을 사용합니다. 자세한 내용은 In-Process Side-by-Side 실행을 참조하십시오.

+0

좋아요, 이제는 조금 나아졌습니다. 따라서 .NET 3.5와 4.0 모두 호환되어야하는 응용 프로그램을 만들고 싶다면 두 버전의 두 버전을 모두 올바르게 컴파일하고 컴파일해야합니다. 그러나 4.0 런타임에 3.5 libs를로드 할 수 있으며 동일한 런타임에서 실행된다는 것을 읽었습니다. –

+0

음, 위의 내용이 아닙니다. 나는 다윗이 너에게 그것을 더 분명하게 만들었다는 것을 안다. – kmcc049

관련 문제