플랫폼에 따라 특정 음 : LINQPad에서 Akavache를 사용하는 방법? <a href="https://github.com/akavache/Akavache" rel="nofollow">Akavache</a>에 대한
.NET 4.5 데스크톱 (WPF) - 당신은 86로 응용 프로그램을 표시해야합니다, 그렇지 않으면 당신은 SQLitePCL_Raw가 제대로로드되지 대한 이상한 런타임 오류가 발생합니다.
지금 막 Akavache Github 페이지의 샘플 코드를 모델로 만든 간단한 코드를 사용하여 LINQPad에서 Akavache를 테스트하려고합니다.
async void Main()
{
BlobCache.ApplicationName = "JonTestApp1";
var dt = DateTime.Now;
await BlobCache.UserAccount.InsertObject("Test1", dt);
var toaster = await BlobCache.UserAccount.GetObject<DateTime>("Test1");
toaster.Dump();
}
예측할 수 있듯이 폭발하고 있습니다.
응용 프로그램 빌드 대상을 LINQPad에서 x86으로 표시하려면 어떻게합니까? AnyCPU 빌드가 아닌 4.53.16 절을 사용하면 정상적인 베타 버전입니다. 설정과 Google에서 어디에서나 보았지만 아무것도 찾을 수 없습니다.
감사
* 업데이트 @Joe Albahari의 제안을 시도 1 *
. 내가 LINQPad의 NuGet을 통해 Akavache를 설치 한 이후
System.TypeInitializationException: The type initializer for 'NativeMethods' threw an exception. ---> System.Exception: sqlite3.dll was not loaded.
at SQLitePCL.SQLite3Provider.NativeMethods..cctor()
--- End of inner exception stack trace ---
at SQLitePCL.SQLite3Provider.NativeMethods.sqlite3_open_v2(Byte[] filename, IntPtr& db, Int32 flags, Byte[] vfs)
at SQLitePCL.SQLite3Provider.SQLitePCL.ISQLite3Provider.sqlite3_open_v2(String filename, IntPtr& db, Int32 flags, String vfs)
at Akavache.Sqlite3.Internal.SQLiteConnection..ctor(String databasePath, SQLiteOpenFlags openFlags, Boolean storeDateTimeAsTicks)
at Akavache.Sqlite3.Internal.SQLiteConnection..ctor(String databasePath, Boolean storeDateTimeAsTicks)
at Akavache.Sqlite3.SQLitePersistentBlobCache..ctor(String databaseFile, IScheduler scheduler)
at Akavache.Sqlite3.Registrations.c__DisplayClass6.b__2()
at System.Lazy`1.CreateValue()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Lazy`1.get_Value()
at Akavache.Sqlite3.Registrations.c__DisplayClass6.b__3()
at Splat.ModernDependencyResolver.GetService(Type serviceType, String contract) in z:\code\paulcbetts\splat\Splat\ServiceLocation.cs:line 223
at Splat.DependencyResolverMixins.GetService[T](IDependencyResolver This, String contract) in z:\code\paulcbetts\splat\Splat\ServiceLocation.cs:line 138
at Akavache.BlobCache.get_UserAccount()
at UserQuery.d__0.MoveNext() in c:\Users\jcomtois\AppData\Local\Temp\LINQPad\_qizvxzkh\query_rjuuom.cs:line 45
, 나는 sqlite3.dll을이었다 곳을 찾기 위해 검색을 몇 가지해야 할 일을했을 : IntPtr.Size
이것은 내가 처음 await
줄에 받고있어 예외는 실제로 4입니다. 다양한 빌드에 대해 Akavache NuGet 패키지 (내 AppData/Local/LINQPad/Nuget ...) 내에서 약 15 개의 slqlite3.dll을 발견했습니다. x86 폴더의 파일을 LINQPad 디렉토리로 복사하려고 시도했지만 동일한 오류가 발생했습니다. 나는 각각의 다른 sqlite3.dll을 LINQPad 폴더에 복사하려고 시도했지만 여전히 같은 결과를 보였다.
이 컴퓨터에 Visual Studio를 설치할 수 없어서 LINQPad에서 작동하도록하는 방법이 있었으면합니다.
흥미 롭습니다 - BaseDirectory를 테스트했을 때 LINQPad 설치 디렉토리가 있습니다. 실제로 두 상자에서 수정을 시도 했으므로 모든 사람이 동일하다고 가정했습니다. 리플렉션에서 필자는 항상 LINQPad의 "no-installer"버전을 사용합니다. LINQPad와 관련이있을 수 있습니다. – rdavisau