Entity Framework 6とSQL Server Compact 4.0がインストールされたWPFプロジェクトを標準でセットアップしました。プロジェクトをビルドすると、SQL Server CE の展開に必要なすべてのファイルがRelease
フォルダーに正しくコピーされますSystem.Data.SqlServerCe.dll
。
ただし、SQL Server Compact がインストールされていないマシンでプロジェクトを実行すると、System.IO.FileLoadException
.
私の開発環境では、System.Data.SqlServerCe.dll
GAC からロードされます。dll のバージョン番号が説明されているこのリファレンスを見つけました: http://technet.microsoft.com/en-us/library/gg213826.aspx
アセンブリ形式 NuGetのバージョンSystem.Data.SqlServerCe.dll
は 4.0.0.0 だと思います。
System.Data.SqlServerCe.dll
そのため、プロジェクトの参照をプライベート フォルダーから 4.0.0.1 ファイルに手動で変更し、 System.Data.SqlServerCe.dll
4.0.0.1 を運用マシンにコピーしました。
私はapp.config
そのように変更しました:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
</system.data>
今、私は開発マシンでこの例外を受け取ります:
指定された接続のタイプは「SqlCeConnection」ではありません。
本番マシンではSystem.Data.Entity.Core.EntityException
.
NuGet と EF 6 を使用してプライベート展開を行う機会はありますか? それとも、x86、amd64 フォルダー内のすべてのファイルを手動でコピーする必要がありますか?