2016-05-04 36 views
2

64ビットコンピュータでWindows 8.1上でVisual Studio Community 2015を使用して開発した小さなC#WinFormsアプリケーションがあります.Net Framework 4.5.2および任意のCPU | 32ビットを推奨します。 (私はx86だけを対象にしてみました)。ClickOnceを使用してSQLiteでWinformsアプリケーションを公開する方法

NuGet Package Managerを使用して、Entity Framework 6.3.1およびSystem.Data.SQLite 1.0.101(System.Data.SQLite、System.Data.SQLite.Core、System.Data.SQLite.EF6、およびSystem.Data.SQLite.Linq)、System.Data.SQLite.Coreはプロジェクト参照に表示されません。

このアプリケーションはVSデバッガで正常に動作しますが、ClickOnce公開バージョンでは、同じコンピュータにインストールして実行するとUnableがSQLite.Interop.dll例外をロードできなくなります。

ソリューションエクスプローラでSQLite.Interop.dllへの参照がありません。プロジェクトのx86およびx64 Debugフォルダにはこのようなdllがありますが、空のReleaseフォルダにはありません。 x86またはx64 dllのいずれかへの参照を追加しようとすると、追加できない(つまり、アクセスできないか、有効なアセンブリまたはCOMコンポーネントではない)というエラーが表示されます。プロジェクト参照のSQLite dllの3つにCopy Local = trueがあります。

私は、SQLite NuGetのインストールでプロジェクトのプロパティ/リファレンスを設定できなかったと推測していますが、それが何であるか、その理由、回避方法についてはわかりません。 SQLite、NuGet、Visual Studio、私は誰が責任を持っているのか分からない。

ありがとうございました。スティーブ

+0

私はまったく同じ問題を抱えています。さらに私は、私のclickonceソリューションを使って、再配布可能なC++パッケージを無償でインストールしようとしました。何年も前からこの同じ問題を解決する方法はたくさんありますが、実際に私の問題を解決するものは何もありません – MrNickel

答えて

5

私はただの解決策を見つけました。 https://github.com/oysteinkrog/SQLite.Net-PCL/issues/158#issuecomment-88163499 <概説コメントを読む - そこ

重要作品:

私はx86およびx64用の新しいプロジェクトフォルダを作成しました。私はクリック一回展開するプロジェクトフォルダをプロジェクトに作成しました。つまり、実行可能ファイルを生成するプロジェクトです。 binフォルダのinteropファイルを新しいソリューションフォルダにコピーしました

+0

お返事ありがとうございます。私はSQLite.Interop.dllを参照に追加することで展開に追加しようとしましたが、試みたときにエラーが発生しました(管理されたコードではないと思います)。 –

+1

明確にするには:フォルダを作成したらdllを追加するには、「Add-> Existing Item」を使用してdllファイルを選択します。 – muccix

0

あなたのソリションエクスプローラにx86とx64フォルダを含めてください。次に、Copy to local = trueを設定します。私はsqlite.interop.dllでフォルダを作成します

+0

フォルダに「ローカルにコピー」を設定するにはどうすればよいですか? – Zolbayar

関連する問題