3

문제 :MVC3 응용 프로그램 - 가져 오기 "파일 또는 어셈블리 'System.Data.SQLite'또는 해당 종속성 중 하나를로드 할 수 없습니다."

저는 C# 4.0, MVC 3 기반 웹 응용 프로그램을 만들고 있습니다. SQLite를 데이터베이스로 사용하고 있습니다.

파일이나 어셈블리 'System.Data.SQLite'또는 해당 종속성 중 하나를로드 할 수 없습니다 : 나는 응용 프로그램을 시작하면

, 나는이 오류가 발생합니다. 잘못된 형식의 프로그램을로드하려고했습니다.

=== Pre-bind state information === 
LOG: User = Steve-PC\Steve 
LOG: DisplayName = System.Data.SQLite 
(Partial) 
WRN: Partial binding information was supplied for an assembly: 
WRN: Assembly Name: System.Data.SQLite | Domain ID: 2 
WRN: A partial bind occurs when only part of the assembly display name is provided. 
WRN: This might result in the binder loading an incorrect assembly. 
WRN: It is recommended to provide a fully specified textual identity for the assembly, 
WRN: that consists of the simple name, version, culture, and public key token. 
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue. 
LOG: Appbase = file:///C:/Users/Steve/Documents/Visual Studio 2010/Projects/EMMA3/EMMA_Web/ 
LOG: Initial PrivatePath = C:\Users\Steve\Documents\Visual Studio 2010\Projects\EMMA3\EMMA_Web\bin 
Calling assembly : (Unknown). 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\Users\Steve\Documents\Visual Studio 2010\Projects\EMMA3\EMMA_Web\web.config 
LOG: Using host configuration file: C:\Users\Steve\Documents\IISExpress\config\aspnet.config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
LOG: Attempting download of new URL file:///C:/Users/Steve/AppData/Local/Temp/Temporary ASP.NET Files/root/6454c2d1/d37faccb/System.Data.SQLite.DLL. 
LOG: Attempting download of new URL file:///C:/Users/Steve/AppData/Local/Temp/Temporary ASP.NET  Files/root/6454c2d1/d37faccb/System.Data.SQLite/System.Data.SQLite.DLL. 
LOG: Attempting download of new URL file:///C:/Users/Steve/Documents/Visual Studio 2010/Projects/EMMA3/EMMA_Web/bin/System.Data.SQLite.DLL. 
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated. 

내가 사용하고 :

윈도우 7 64 비주얼 웹 개발자 2010 IIS 익스프레스 7.5 System.Data.SQLite 64 1.0

는 융합 어셈블리로드 추적이다. 77.0

저는 인터넷 검색을 많이 해왔으며 일반적인 생각은 64 비트에서 32 비트 어셈블리를 실행하는 것과 관련이있는 것으로 보입니다. 시스템 또는 그 반대입니다. 내가 해봤

것들 : 웹 서버에 내장 된 VS에서 IIS 익스프레스

  1. 전환합니다. 분명히 내장 된 서버는 32 비트 응용 프로그램에만 대처할 수 있으며 IIS Express는이 두 가지를 모두 수행 할 수 있습니다. 변경 없음.
  2. SQLite 64 비트 버전을 사용하고 있는지 확인하십시오. 원래 정규 버전을 사용하고 있었지만 64 비트 버전으로 변경하는 것은 도움이되지 않습니다.
  3. IIS에서 'win 64 on 32 bit app'설정을 사용합니다. (IIS Express에서는 appcmd.exe - appcmd를 사용하여 apppool/apppool.name : "/ enable32bitapponwin64 : true)을 설정합니다. 다시 말하지만, 이것은 변화가 없습니다.
  4. Sqlite를 제거/다시 설치하십시오. 변경 없음.
  5. 더 간단한 버전의 프로젝트를 만들어 모든 것이 깨끗하고 원인을 좁히십시오. 이것은 아래의 '재현하는 단계'로 인도하지만 실제로 도움이되지는 못합니다.

단계 재현 :

  1. 새로운 MVC 3 웹 프로젝트를 만듭니다.
  2. 실행하여 작동하는지 확인하십시오.
  3. Nuget을 사용하여 SQLite x64에 대한 참조를 추가하십시오.
  4. 사이트를 다시 실행하면이 오류가 발생합니다. 그래서 요약

- 내가 위의 오류 받고 있어요, 그것은 SQLite는 몇 가지 방법으로 확실히 때문에, 난 모든 64 비트를 갖고있는 것 같다,하지만 여전히 작동하지 않습니다. 어떤 아이디어?

미리 감사드립니다.

답변

1

얼마 전에 이것을 알아 냈으며이 질문을 잊어 버렸습니다.

대답은 SQLite x64를 제거하고 SQLite x86을 설치하는 것이 었습니다. 간단합니다. 64 비트 버전의 윈도우에서 64 비트 어셈블리를 만들 때 이상하게 보입니다. 그러나 거기에 우리가갑니다. 실제로 데이터 액세스 로직을 가진 클래스 라이브러리는 64 비트 버전의 SQLite를 참조하지만 어떤 이유로 실제 웹 프로젝트는 32 비트 버전을 참조해야합니다.

1

Visual Studio에서 웹 응용 프로그램을 실행할 때이 오류가 발생하면 내장 웹 서버가 32 비트 전용이기 때문에이 오류가 발생합니다. VisualStudio에서 64 비트 디버깅/실행을 원하면 Cassini 프로젝트를 확인하십시오. cassini의 64 비트 버전을 빌드하고 VisualStudio 기본 웹 서버 대신 사용하는 방법이 있습니다.

관련 문제