2014-03-03 1 views
3

VS20012의 VB.NET을 사용하여 외부 .sdf 파일에 연결하려고합니다. System.Data.SqlServerCE DLL로 작업하는 데 문제가 있습니다.파일 또는 어셈블리 'System.Data.SqlServerCE'을로드 할 수 없습니다.

로컬을 복사하지 않을 때 오류가 발생합니다. 파일 또는 어셈블리 'System.Data.SqlServerCe, 버전 = 3.5.1.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.

로컬 복사 : 파일 또는 어셈블리 'System.Data.SqlServerCe, 버전 = 3.5.1.0, culture = neutral, PublicKeyToken = 89845dcd8080cc91'또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)

SQL Server Compact 버전 4가 설치되어 있으므로 "C : \ Program Files (x86) \ Microsoft SQL Server Compact Edition \ v4.0 \ Private"에서 DLL을 참조하고 있습니다. . 다른 위치에서이 DLL을 추가하려고 시도하고 "같은 종속 어셈블리의 다른 버전간에 충돌이 발견되었습니다"라는 경고가 표시됩니다. 나는 그것을 추가 할 것입니다 것을 클릭하면하여의 app.config에 다음을 한번

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845DCD8080CC91" culture="neutral"/> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1"/> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

하는 나는이 오류의 app.config에 추가됩니다

SQL 서버의 기본 구성 요소를로드 할 수 없습니다 버전 8876의 ADO.NET 공급자에 해당하는 압축. 올바른 버전의 SQL Server Compact를 설치하십시오. 자세한 내용은 기술 자료 문서 974247을 참조하십시오.


이전에 알아챈 사실 중 하나는 System.Data.SqlServerCe가 C : \ Windows \ Microsoft.NET \ assembly 폴더에 없다는 것입니다. I는 (4.0.0.0는 gacutil 의해 표시된 버전 임)을 사용하여 gacutil.exe DLL을 설치

<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/> 

로의 app.config에

<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1"/> 

변경.

이것은 최소한 조립 오류를 극복했습니다. :)

답변을 게시하기에는 너무 이르므로이 수정 사항을 남겨 두겠습니다.

+0

이 질문에 대한 답변을 얻었습니까? – jeffery

+0

그리고 지금 대답 해 줍니까? –

답변

1

위의 문제는 C : \ Program Files \ Microsoft SQL Server Compact Edition \ v4.0 \ Desktop \ System.Data.SqlServerCe.dll을 사용하여 해결할 수 있습니다. 따라서 C : \ Program Files \ Microsoft SQL Server Compact Edition \ v4.0 \ Private 경로의 System.Data.SqlServerCe.dll이 작동하지 않습니다.