1

System.Data.SQLite (SDS) は、明らかに、.Net アプリケーションから SQLite を使用する最も一般的な方法です。

私は疑問に思っていた

  • SDS では、さらに SQLite DLL を出荷する必要があります。または、SDS に SQLite ソース コードが含まれている場合は、
  • SDS は VB.Net アプリケーションに静的にコンパイルできますが、DLL としてのみ出荷できますか?

ありがとうございました。

4

2 に答える 2

0

実際、C++ ランタイムを必要としない System.Data.SQLite.dll をコンパイルするのは非常に簡単です。たとえば、ソース コードをダウンロードしてビルド手順に従うと、次のパスに System.Data.SQLite.dll の静的にリンクされた (C/C++ ランタイムは不要) コピーが見つかります。

<your-src-root>\bin\<2008 or 2010>\<Win32 or x64>\ReleaseStatic

たとえば、ソースが にある場合、C:\Work\sqlite-netFx-source-1.0.80.0Win32 および .NET 3.5 (VS 2008) の静的にリンクされたバイナリは次の場所にあります。

C:\Work\sqlite-netFx-source-1.0.80.0\bin\2008\Win32\ReleaseStatic

さらに、 System.Data.SQLite.dll は、管理された .netmodule と、 link.exeを使用してリンクされたネイティブ .obj ファイルで構成される混合モード アセンブリであるため、アプリを .netmodule としてビルドし、それらをリンクすることもできます。 SQLite を使用して単一の混合モード アセンブリにします。

結果として得られるアセンブリは依然として Win32 または x64 のいずれかになりますが、ほとんどすべての x64 マシンで Win32 コードの実行に問題がないため、次の場合は Win32 に落ち着くことができます。

  • アプリは常に Win32 プロセスに読み込まれる .exe または .dll であり、
  • より大きなアドレス空間や x64 でのみ利用可能なアンマネージ コードの使用など、x64 固有の利点を使用しない
于 2012-12-10T17:14:55.840 に答える
0

私のコメントをさらに詳しく説明すると、SDS はアンマネージ コードの .net ラッパーであるため、リリース コードを DLL のコピーと共に出荷する必要があります。

Steve が言及しているように、DLL には 32 ビット バージョンと 64 ビット バージョンがあり、多くのフラストレーションの後に発見したように、対応するビジュアル C++ ランタイムをターゲット マシンにインストールする必要があるため、32 ビット バージョンを 64 ビット マシンにデプロイすると、 32 ビットの C++ ランタイム環境がインストールされている必要があります。

私が現在検討しているがテストする時間がなかった代替手段は、純粋な.net実装であるcsharpe-sqliteです。

http://code.google.com/p/csharp-sqlite/

名前が示すように c# でコーディングされていますが、もちろん vb.net を含む任意の .net 言語で使用できます。

于 2012-12-10T12:15:15.363 に答える