2016-11-15 2 views
0

Meine C# -Konsolenanwendung verfügt über eine eingebettete MS SQL Server Compact-Datenbank (.sdf-Datei). Wenn eine neue Version der Anwendung installiert wird, muss diese Datei nicht überschrieben werden.ClickOnce- und SQL Server Compact-Datenbank

.sdf → Dateieigenschaften → Build-Aktion: Welcher Wert sollte ausgewählt werden? Die Optionen sind Keine, Kompilieren, Inhalt, Eingebettete Ressource, EntityDeploy, Anwendungsdefinition, Seite, Ressource, SplashScreen, DesignData, DesignDataWithDesignTimeCreatableData und XamlAppDef.

Antwort

0

Die Erstellungsaktion sollte "Keine" sein, aber wichtiger ist das "Kopieren in Ausgabeverzeichnis". Dies sollte "Kopieren, wenn neuer" sein.

+0

Ich denke, dass das Kopieren in Ausgabeverzeichnis ist etwas über die Bauzeit entschieden. Was ich brauche, ist ClickOnce setup.exe zu konfigurieren, um .sdf nur zu installieren, wenn es nicht existiert ... Software-Update darf es nicht überschreiben. Ist es möglich? Wie? – haba713

+1

Angesichts der Tatsache, dass "Datei kopieren, wenn es derzeit nicht existiert" keine Option ist, ist es am besten, sie auf "Immer kopieren" auf einen temporären Speicherort oder einen Dateinamen auf dem Gerät zu setzen und dann Ihren C# -Code zu testen Die SDF-Datei ist bereits vorhanden, und wenn nicht, kopieren Sie die SDF-Datei an den richtigen Speicherort. Nicht hübsch, ich weiß. –

+0

Ok! Verbindungszeichenfolge ist 'Data Source = | DataDirectory | \ MyDb.sdf'. Also habe ich die Projektdatei 'MyDb.sbf' in' MyDbEmpty.sdf' umbenannt und am Anfang von 'Progam.Main()' überprüfe ich, ob die Datei 'MyDb.sdf' in' ApplicationDeployment.CurrentDeployment.DataDirectory' existiert und Wenn * nicht *, kopieren Sie 'MyDbEmpty.sdf' nach' MyDb.sdf'. Der Zugriff auf 'ApplicationDeployment.CurrentDeployment.DataDirectory' in der VS-Debug-Ausführung löst eine Ausnahme aus und muss behandelt werden. Mike Gledhill, danke für deine Hilfe! – haba713