2017-01-28 1 views
1

외부 DLL (CLR 어셈블리)로 SQL Server 2008에서 호출하려면 .NET v2.0에 내장 된 DLL이 있어야합니다. 이 dll은 SQL Server 버전과 호환되도록 .net v2.0에 있어야하며 .net V4.5에서 개발 된 SQL Server와 다른 C# 기능 사이를 연결하는 역할 만합니다. 그래서 나는 .NET V4.5에 내장 된 다른 DLL을 다시 보았지만 컴파일 할 수는 없다!DLL을 내장 할 수 있습니까? Net V2.0은 .Net V4.5에 내장 된 다른 DLL을 참조합니까?

경고 MSB3258 : 나는 fallowing 경고가, 버전 = 4.0.0.0 기본 참조는 .NET 프레임 워크 어셈블리에 대한 간접 종속성 "mscorlib에 있기 때문에"my_dll "확인할 수 없습니다를 중립 문화 = PublicKeyToken = b77a5c561934e089 "이며 현재 대상 프레임 워크에서"2.0.0.0 "버전보다 높은 버전 인"4.0.0.0 "이 있습니다.

어셈블리 버전의 호환성을 무시할 수 있습니까? 또는 SQL Server 2008에서 .net V.4.5로 개발 된 함수를 호출 할 수있는 다른 솔루션을 사용할 수 있습니까?

+2

SQL Server의 CLR 버전이 2.0이기 때문에 이것은 작동하지 않습니다. 4.5 어셈블리를로드 할 수 없으며 해당 어셈블리가 다른 시스템 어셈블리를 전혀 참조하지 않은 경우에도 해당됩니다 (당연히 그렇습니다). .NET 2.0을 대상으로하는 모든 어셈블리를 재 컴파일하거나 서버를 업그레이드하십시오. –

+0

@JeroenMostert는 댓글 상자에 답변을 입력 한 것처럼 보입니다. –

+0

@MartinSmith : 그렇습니다.하지만 문제가되는 사랑의 두뇌가 뛰어나고 어쨌든 어떤 해결책을 찾기 위해 열심히 노력하지 않고서는 "어쩔 수 없다"라고 대답하는 것을 싫어하기 때문입니다. 악용 COM! 어쩌면 당신은 어셈블리 버전 헤더로이 경우 어쩌면 ... "셧업 (SHUT UP)을 할 수 있습니다. 그리고 OP는 또 다른 해결책을 요구했고, 나는 이미 대답이 적은 질문들을 덜 찾습니다. ... 나는 지금 멈추지 않을 것이다. –

답변

0

나는 당신의 질문을 따르고 있지만 프로젝트의 의존성을 .NET 4.5로 변경하기 만하면된다. .NET Framework는 다른 프레임 워크 버전을 참조 할 수 있지만 종속성의 순서를 고려해야합니다. 2.0이 4.0 라이브러리를 사용하는 경우 구성 요소에 대한 참조가 없으므로 실패합니다. 프로젝트가 컴파일되면 단일 어셈블리에 배치되고 어셈블리에는 사용되는 모든 재료에 대한 참조가 있어야합니다. 하나; 귀하의 프로젝트가 별도의 dll 인 경우에는 4.0 멤버가 공개적으로 어셈블리에 노출되지 않는 한 이들을 참조 할 수 있습니다. 하나; 즉, dll은 자체적으로 작동하도록 4.0이 설치된 환경이 필요합니다.

동일한 어셈블리의 다른 버전을 실행하려면 프로젝트 구성에 assemblyBinding을 추가해야합니다.

따라하기가 어렵지만이 게시물을보고이를 달성하는 방법을 더 잘 이해하는 데 도움이되는지 확인하십시오.

Post

0

answer here마다, COM으로 필요한 구성 요소를 노출시킴으로써 닷넷 4.5 어셈블리를 참조 할 수있다. .Net의 모든 버전은 핵심에있는 COM을 기반으로하므로 통신의 '최소 공통 분모'채널로 사용할 수 있습니다. 요구 사항에 따라 Named Pipes, IPC 또는 Web Services를 사용할 수도 있습니다.

관련 문제