2017-04-24 11 views
1

사용자 지정 SSIS 작업을 만드는 프로젝트가 있습니다. SQL Server의 각 버전마다 다른 DTS Dll 참조가 필요합니다.빌드시 참조 DLL 변경

는 SQL 2008-100
는 SQL 2012-110
는 SQL 2014-120
....

나 코드가 있어야 SQL 서버의 diffrent 버전을 지원하는 내 응용 프로그램을 구축하기 위해 약간 다른 내가 사용하려고 했어 Predecessor directives

어떻게 해야할지 알지 못했지만 다른 버전을 빌드 할 때 참조 된 DLL을 변경하는 방법이 있습니다.

빌드 할 때 참조 DLL을 변경할 수 있습니까? 그렇다면 어떻게?

참고 : 현재 우리는 프로젝트를 복사하는 빌드 스크립트를 사용하여 많은 멋진 문자열을 대체하고 참조를 변경합니다. 이것은 효과가 있지만 개인적으로 나는 그것을 못생긴 찾습니다.

답변

0

확실하지 않음이 작동하지만 한번 풀어 줄 것이다 경우 : MS SQL 서버의 모든 버전에 대한

  • 로컬 복사본 필요한 모든 종속성을. 런타임에 버전을 확인하고 해당 DLL을로드하거나

  • 종속 변수의 버전을 정의하는 빌드 타임 변수를 만듭니다. 하나의 라이브러리 (예 : 2008)에 대한 참조를 추가합니다. C# 프로젝트 파일을 수동으로 편집하고 2008에 대한 참조를 빌드 타임 변수로 바꿉니다. 이제 빌드 타임 변수를 변경하여 사용되는 라이브러리를 제어 할 수 있습니다.

+0

오히려 재미있는 생각처럼 들립니다. – DaImTo

0

코드가 "다를"해야하는 경우 앱을 모든 다른 라이브러리에 연결할 수 있습니다. 결국 .NET은 메소드 (또는 일부 필드가있는 클래스)가 필요할 때만 어셈블리를로드합니다.

+0

SQL Server 2008 고객은 SQL Server 2008에서 다른 DLL을 사용할 필요가 없습니다. 이 dll은 GAC에서 살아야합니다 – DaImTo

+0

@DaImTo "지연로드"덕분에 .NET은 dll을 사용하지 않는 한로드하지 않습니다. 나는 응답으로 그것을 썼다. * 결국 .NET은 메소드 *가 필요할 때만 어셈블리를로드 할 것이다. 다른 어셈블리를 사용하는'DoSomething2008()'과'DoSomething2012()'를 가지고 있다면 아무런 문제가 없어야합니다. .NET에서 필요한 "사전 검사"가 없기 때문에 필요한 어셈블리가 모두 있는지 확인할 수 있습니다. – xanatos