Ich schreibe eine C # -Anwendung, die SQL Server CE 4.0-Dateien verwendet, auf die über das Entity Framework 6.0 per Code-First zugegriffen wird. (Die Anwendung muss lokale DLLs für die SQL Server CE-Verbindung verwenden können, d. H. Die Anwendung muss XCOPY-deploybar sein). Die Anwendung läuft auf meinem Entwicklungscomputer einwandfrei, aber auf anderen Computern (z. B. VMs mit nur Win7 und .NET 4.0) erhalte ich ArgumentException
:
Der ADO.NET-Provider mit dem invarianten Namen 'System.Data.SqlServerCe.4.0' ist entweder nicht in der Computer- oder Anwendungskonfigurationsdatei registriert oder konnte nicht geladen werden. Siehe die innere Ausnahme für Details.
Die innere Ausnahmemeldung sagt:
Der angeforderte .Net Framework Data Provider konnte nicht gefunden werden. Es ist möglicherweise nicht installiert.
Ich habe Google und SO durchsucht und die meisten Kommentare zeigen an, dass die App.config-Datei korrekt ist. Ich glaube, das ist meine (Standard-Verbindung Fabrik und Anbieter Abschnitte), aber hier sind die Inhalte:
%Vor%
Der Build-Ordner enthält die folgenden Dateien (zusätzlich zu den anwendungsspezifischen Dateien natürlich):
- EntityFramework.dll
- EntityFramework.xml
- EntityFramework.SqlServer.dll
- EntityFramework.SqlServer.xml
- EntityFramework.SqlServerCompact.dll
- EntityFramework.SqlServerCompact.xml
In jedem der Unterordner amd64 und x86 befinden sich die folgenden Dateien:
- sqlceca40.dll
- sqlcecompact40.dll
- sqlceer40DE.dll
- sqlceme40.dll
- sqlceqp40.dll
- sqlcese40.dll
Ich bin sicher, dass das Programm auf dem Entwicklungscomputer ausgeführt wird, weil SQL Server CE installiert wurde, aber wie kann ich es mit nur lokalen SQL Server CE-DLLs auf anderen Computern ausführen?