2012-02-27 2 views
11

다양한 클라이언트 (32 비트 및 64 비트 모두)에서 호출되는 C# 라이브러리가 있습니다. 지금까지는 AnyCPU로 컴파일되었으므로 아무런 문제가 없었습니다.32 비트 및 64 비트 버전의 라이브러리를 배포하는 방법

최근에는 SQLite .NET 라이브러리에 종속성을 추가했습니다.이 라이브러리는 32 비트 및 64 비트 버전 (AnyCPU 제외)으로 제공됩니다. 이제 두 개의 빌드가 필요합니다. 두 비트 모두에 대해.

과거에는 하나의 .NET 어셈블리가 적절한 기본 라이브러리가있는 폴더에 Private\amd64Private\x86 개의 폴더가있는 스키마가있는 다른 라이브러리 (MS SQL Compact가 마음에 들었습니다)를 보았습니다. 필요에 따라 각각을 부를 것입니다.

내 접근 방식이이 접근법을 실행 가능합니까? 그것을 구현하는 방법에 대한 문서가 있습니까? 코드 변경이 필요하거나 배포 기술입니까?

답변

6

. 처음 세 가지 접근법에는 코드 변경 (작음)이 필요합니다.

A. 응용 프로그램 시작 중에 플랫폼 특정 폴더를 가리 키도록 PATH를 수정할 수 있습니다. 그러면 .NET은 해당 폴더에서 로컬 DLL을 자동으로로드합니다.

B. AssemblyResolve 이벤트에 가입 한 다음 플랫폼을 기반으로 어셈블리를 선택할 수 있습니다.

Scott Bilias의 블로그 게시물 http://scottbilas.com/blog/automatically-choose-32-or-64-bit-mixed-mode-dlls/을 확인하십시오. 그는 결국 접근 방식을 선호하게됩니다.

"간단히 말해서 로더를 속이는 것입니다! 존재하지 않는 p4dn.dll을 참조하고 AssemblyResolve 이벤트를 사용하여로드를 가로 채서 올바른 비트 크기 어셈블리. "

C. 어셈블리 위치를 결정하려면 플랫폼 별 exe.configs 세트와 codebase 요소를 사용하십시오. 설치 프로그램은 플랫폼에 따라 올바른 설치 프로그램을 설치합니다.

http://msdn.microsoft.com/en-us/library/4191fzwb.aspx

D.는 만 플랫폼에 해당하는 파일을 설치,이 설정 32 비트 및 64 비트 하나를 작성합니다.

관련 문제