Entwickler-Ecke

Programmierwerkzeuge - Datenrettung


Csharp-programmierer - Di 26.04.16 17:44
Titel: Datenrettung
Hallo,
ich bin gerade etwas geschockt. Unszwar wollte ich mein Projekt öffnen und alle Daten, außer Form1.cs waren da. Die Form1 an sich und die dazugehörige Klasse sind jedoch weg. Klicke ich Form1 im Projektmappenexplorer, öffnet sich nur der Editor, der nichts anzeigt. Was kann ich jetzt machen? :autsch: :motz: :bawling:


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (.NET) verschoben am Di 26.04.2016 um 18:46


Th69 - Di 26.04.16 17:54

Nachträglich wohl nichts, aber zukünftig solltest du ein "Version Control System (VCS)" (mit einer externen Datensicherung) einsetzen.


Csharp-programmierer - Di 26.04.16 18:05

Zitat:
"Version Control System (VCS)" (mit einer externen Datensicherung)


Wie kann ich mir sowas vorstellen? Wie ein Programm, dass automatisch alle Daten sichert? Und wo kann ich mir soetwas downloaden?


FinnO - Di 26.04.16 18:18

Moin,

nein, ein VCS ist eben kein Backup-Tool. Ein VCS kann u.a.
und erheblich viel mehr. Ein Beispiel für ein solches VCS ist git [https://git-scm.com/]. VisualStudio unterstützt seit Jahren git direkt in der IDE. Wenn man alleine oder gar mit nur einem Branch entwickelt, ist es meiner Meinung nach auch sehr einfach zu verwenden. Öffentliche git-repositories (die dann auch vernünftig gebackupt werden) findet man z.B. auf GitHub [https://github.com].

Als Neueinsteiger in das VCS Thema ist es meiner Einschätzung nach nicht sinnvoll, ein anderes VCS als git auszuprobieren. Git ist de-facto Standard, aus vielen Gründen erheblich besser als SVN und TFS, erheblich verbreiteter als mercurial und deutlich weniger esotherisch als die anderen Einträge der entsprechenden Wikipedia-Liste [https://en.wikipedia.org/wiki/List_of_version_control_software].

BG


Csharp-programmierer - Di 26.04.16 19:25

Ich habe mir GIT Bash nun gedownloadet. Wenn ich diese Anwendung starte, erscheint ein schearzes Fenster ohne Text. Was muss ich hier machen?


Christian S. - Di 26.04.16 19:31

http://lmgtfy.com/?q=git+tutorial


Csharp-programmierer - Di 26.04.16 19:42

Kann ich nicht die .csproj Datei immer kopieren, bevor ich den PC aus mache?
Ich finde Git irgendwie sehr schwer und verwirrend


Th69 - Di 26.04.16 19:43

Hier ein Link zum Benutzen von Git im VS: Einrichten von Git auf dem Entwicklercomputer (Konfigurieren, Erstellen, Klonen, Hinzufügen) [https://msdn.microsoft.com/de-de/library/hh850445%28v=vs.120%29.aspx]

Und falls du doch Git in der Kommandozeile erlernen und benutzen willst: git - Der einfache Einstieg [https://rogerdudler.github.io/git-guide/index.de.html]

Solange du nur lokal dein Repository hast, können dir natürlich auch dort (z.B. durch einen Plattencrash) deine Daten verloren gehen, daher z.B. GitHub als (Backup-)Server benutzen.
Du kannst aber zumindestens den zuletzt eingecheckten Versionsstand wiederherstellen (wenn deine Projektdateien gelöscht wurden).

Edit: Es reicht ja nicht, nur die Projektdatei zu sichern, sondern du mußt alle Sourcen und Resourcen (und weitere Dateien, z.B. Konfigurationen etc.) sichern.

Wenn du kein VCS einsetzen willst, dann mach wenigstens von deinem Projektverzeichnis regelmäßig ZIP-Archive und sichere diese auf externen Datenträgern.


Csharp-programmierer - Di 26.04.16 20:02

Ich habe jetzt ein Testprojekt angelegt, dieses zu der Quellcodeverwaltung hinzugefügt und es kam eine Meldung, dass Reporitory gefunden wurde. In der Website ist ja ein Fenster, wo man dieses Projekt zu GIT hinzufügen kann. Dieses Fenster kann ich bei mir nicht finden.


jaenicke - Di 26.04.16 21:32

Ich würde sehr zu Tortoisegit raten... Gerade als Einstieg ist das sehr viel einfacher als in eine IDE integrierte Lösungen oder gar die Kommandozeile.

Damit kannst du einfach im Windows Explorer arbeiten. Ganz kurz gesagt fügst du dann nach dem Erstellen des Repositorys mit add neue Dateien hinzu, committest und pushst dann die Änderungen. Das geht alles per Kontextmenü im Windows Explorer.


mandras - Mi 27.04.16 00:26

Ich persönlich mag GIT lieber, für manche Kundenaufträge wurde mir SVN festgelegt - beide haben ihre Vor- und Nachteile.

Man kann auch nicht sagen, daß eines der oben genannten klare Vorteile für Einsteiger habe.

Für SVN gibt es hier ein nettes Tutorial: http://www.entwickler-ecke.de/viewtopic.php?t=112612&highlight=svn+tutorial
Ist natürlich nicht allumfassend und perfekt aber mM nach ein Einstieg.


Nersgatt - Mi 27.04.16 05:55

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ich würde sehr zu Tortoisegit raten... Gerade als Einstieg ist das sehr viel einfacher als in eine IDE integrierte Lösungen oder gar die Kommandozeile.

Dem schließe ich mich an.
Wenn Du Dich einmal eingearbeitet hast, ist die Sicherung des Quellcodes genauso simpel wie es zu kopieren. Und man hat noch weitere Vorteile gratis dazu.


Lemmy - Mi 27.04.16 06:22

user profile iconmandras hat folgendes geschrieben Zum zitierten Posting springen:

Man kann auch nicht sagen, daß eines der oben genannten klare Vorteile für Einsteiger habe.


hat auch niemand, es wurde lediglich Tortoisegit empfohlen und das ist nun wirklich einfacher als die git-Bash.... :-) Wobei gerade wenn man noch nie was mit SCM zu tun hatte und Einzelkämpfer ist, sehe ich die Vorteile schon eher bei SVN. Aber das ist nun wirklich ein anderes Thema...

Grüße


doublecross - Mi 27.04.16 12:09

Hi,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ich würde sehr zu Tortoisegit raten... Gerade als Einstieg ist das sehr viel einfacher als in eine IDE integrierte Lösungen oder gar die Kommandozeile.


obwohl ich Jahrelang begeistert mit TortoiseSVN gearbeitet habe, hat mich TortoiseGIT insbesondere im Zusammenhang mit SSH Verbindungen ziemlich geärgert (Schlüssel wurden nicht verwendet, obwohl vorhanden, Passwörter immer wieder Erfragt usw.). Somit möchte ich als weiteres alternatives Tool auch noch auf SourceTree [https://www.sourcetreeapp.com/] hinweisen, mit dem Arbeite ich im Zusammenhang mit GIT erheblich Stressfreier. Das Tool kostet kein Geld, es verlangt allerdings nach 30 Tagen eine Registrierung, somit schadet es nicht eine Wegwerf-E-Mail-Adresse zur Hand zu haben.

PS: Ja es ist möglich das die Probleme aus dem Zusammenspiel von TortoiseGIT und irgendwelchen anderen Tools auf meinem Entwicklungssystem liegen, ich möchte es daher auch nicht schlecht reden, dennoch kann es sicher nicht schaden eine Alternative zu nennen ;).


erfahrener Neuling - Mi 27.04.16 15:46

@Csharp-programmierer
Hi,

ich bin auch Anfänger, benutze TortoiseSVN und finde es sehr anwenderfreundlich. Ich füge am Anfang den Projektordner hinzu (einfach Rechtsklick auf Ordner und dann die entsprechende Option wählen) und dann kann ich alle Dateien, die ich hinzugefügt hab, beliebig oft nach einer Änderung 'committen' (sozusagen eine neue Version erstellen). Ganz einfach im Explorer mit Rechtsklick. Ist echt hilfreich, wenn man sein Programm vermurkst (dann einfach letzte Version laden) oder mit anderen Programmierern an einem Projekt arbeitet.


OlafSt - Mi 27.04.16 21:33

Ich vermisse noch immer ein brauchbares Tutorial zum Aufbau eines GIT-Hosts im eigenen Netzwerk, so das man seine Sourcen zentral auf einem Server liegen und sichern lassen kann, während man auf seinen Entwicklermaschinen und -notebooks einfach und bequem ein/auschecken kann...


jaenicke - Do 28.04.16 07:03

Das SVN Tutorial stammt ja auch von mir... ich werde am Wochenende mal schauen, ob ich dazu komme auch eines für Git zu machen... versprechen kann ich nichts. ;-)


Csharp-programmierer - Sa 07.05.16 11:09

Mir ist gerade eine Idee gekommen. Wenn ich in VS 2013 ein Projekt starte, werden ja die Daten aus dem Ordner "Microsoft VS 2013" aus der .csproj - Datei geladen. Wenn dies stimmt, könnte ich ja schnell eine Konsolenanwendung programmieren, die den Ordner kopiert und diesen in einen externen Datenträger einfügt.

Dann könnte ich ja im Notfall auf die gesicherten Daten zugreifen oder ist das nicht so?


Christian S. - Sa 07.05.16 11:13

Ein Versionskontrollsystem kommt mir da sehr viel nützlicher vor, weil Du halt nicht nur die letzte Version gesichert hast, sondern alle Versionen inklusive Beschreibungen und Diffs, was sich von einer zur anderen Version geändert hat. Die Batchdatei würde ich höchstens nutzen, um das Repository des VCS zu sichern ;)

btw, warum benutzt Du noch VS2013?


Csharp-programmierer - Sa 07.05.16 11:17

Ich habe mir schon vs 2015 runtergeladen, aber da kommt immer eine Fehlermeldung, und das nervt mich ziemlich.

Zu den Versionen: wenn es so ist, dass vs auf die Dateien zugreift, wie ich schon geschrieben habe, dann könnte man sich ja ein Programm schreiben, dass die ganzen Versionen und Backups in einen Datenträger kopiert oder?


Christian S. - Sa 07.05.16 11:19

user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Zu den Versionen: wenn es so ist, dass vs auf die Dateien zugreift, wie ich schon geschrieben habe, dann könnte man sich ja ein Programm schreiben, dass die ganzen Versionen und Backups in einen Datenträger kopiert oder?
Ja, man kann viele Programme schreiben. Ich kann auch ein Programm schreiben, das den ganzen Tag in zufälligen Zeitabständen Helene Fischer abspielt. Aber die Frage ist: Warum?


Csharp-programmierer - Sa 07.05.16 11:24

Das könnte man machen ;)

Aber wenn mein Programm unter der Version 1.0.1.2 veröffentlicht wird und ich dann davon ein Backup mache, aber die Ordner mit denen Vs arbeitet durch einen PC Absturz abhanden gekommen sind, kann ich ja immer noch auf das Backup zurückkommen, oder nicht?


Ralf Jansen - Sa 07.05.16 12:46

Könnte man. Und weil das intelligente Leute in der Vergangenheit auch bemerkt haben ist aus diesen Gedanken (und anderen) das Konzept von Versionverwaltungssystemen entstanden.

Dein Widerstand gegen ein VCS ist nicht hilfreich. Sowas hat in einem Entwicklungsprozess ein ganz zentrale Bedeutung. Eine ähnliche wie die IDE. Und du kämmst wohl kaum auf die Idee Visual Studio durch Notepad + Standalone Compiler zu ersetzen um dann irgendwelche Tools zu schreiben die dir den Umgang damit erleichtern. Nein du nimmst Visual Studio weil ähnliches selbst zu schaffen fast aussichtslos ist ohne viele hilfreiche Hände und tiefe Taschen die das bezahlen. Es selbst zu machen macht nur Sinn wenn man es als weitere Programmierübung betrachtet.

Ein VCS zu benutzen bedeutet einen gewissen Lernaufwand ja. Die Lernkurve ist aber jetzt nicht so hoch und was man mitnimmt ist absolut nützliches Wissen.
Es wurde bereits empfohlen aber schau dir Bitbucket [https://bitbucket.org/] oder Github [https://github.com/] an. Da erfüllst du dann auch gleich nebenbei eine weitere Anforderung an ein gutes Backup. Es ist Offsite.

3-2-1 Merkregel für gutes Backup - 3 Kopien deiner Daten auf mindestens 2 verschiedenen Medientypen und mindestens 1 davon an einem anderen Ort.


GuaAck - Sa 07.05.16 21:57

Hallo,

Versionskontrollsystem sind für Projekte eine ausgezeichnete Sache. Gegen reinen Datenverlust hilft aber auch gut die Windows-Datensicherung. Die sichert automatisch geänderte Dateien, bei mir z. B. auf einem externen NAS-Laufwerk. Hat mir schon gelegentlioch geholfen.

Grüße GuaAck


Csharp-programmierer - Sa 07.05.16 23:34

Zitat:
Dein Widerstand gegen ein VCS ist nicht hilfreich. Sowas hat in einem Entwicklungsprozess ein ganz zentrale Bedeutung.

Da hast du völlig Recht, Ralf. Aber wenn ich nun irgendeinen Fehler mache, was die Datensicherung mit GIT angeht, und wieder alle Daten verloren gehen, dann habe ich das selbe Problem wieder. Ich habe auf meiner Wensite angegeben, dass die Anwendung bis zum 01.07. fertig sein soll, was sich durch den Datenverlust hinzieht. Wenn ich mit der Hauptentwicklung dieser Anwendung fertig bin, habe ich Lust und Zeit GIT zu erlernen.

Ich denke aber erstmal, dass ich ein kleines Programm schreibe, was die Versionen einer Software verwaltet und die Daten sichert. Die Grundlage, den zu sichernden Projektordner (samt Inhalt) zu kopieren und auf einem externen oder internen Datenträger speichern. So habe ich ein System, wo ich zu 100% weiß, wie es funktioniert und was ich machen muss. Falls dann PC-Daten verloren gehen, kann ich im Notfall immer noch auf die Kopien der Ordner zugreifen, und so dieses Projekt wieder herstellen, oder was meint ihr zu der simplen Idee?

Zitat:
Versionskontrollsystem sind für Projekte eine ausgezeichnete Sache. Gegen reinen Datenverlust hilft aber auch gut die Windows-Datensicherung. Die sichert automatisch geänderte Dateien, bei mir z. B. auf einem externen NAS-Laufwerk. Hat mir schon gelegentlioch geholfen.


Das wäre natürlich auch noch eine Methode, über die ich mich noch mehr informieren möchte.
Mit freundlichen Grüßen,
Yannic M.


ssb-blume - So 08.05.16 07:40

Hallo,

VS15 ist "verschlimmbessert", man kann damit nicht mal eine Form1 umbenennen oder gar löschen
Ebanso nervt das ständige } Einfügen nach der Eingabe von { usw...
Letztens ist mir passiert, dass der Kursor (der sich drehende Kreis) nicht mehr ausging und nur noch Abbruch mit
dem Taskmanager half.
Ich warte nun auf das erste Update..

hansi


Christian S. - So 08.05.16 14:19

user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
man kann damit nicht mal eine Form1 umbenennen oder gar löschen

Geht bei mir problemlos.

user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
Ebanso nervt das ständige } Einfügen nach der Eingabe von { usw...

Das kann man in den Optionen ausschalten.

user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
Letztens ist mir passiert, dass der Kursor (der sich drehende Kreis) nicht mehr ausging und nur noch Abbruch mit
dem Taskmanager half.

Mir kommt vor, als sei einfach Deine Installation von VS kaputt.

user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
Ich warte nun auf das erste Update..

Die sind doch schon bei Update 2 :gruebel:


jaenicke - So 08.05.16 15:18

user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Aber wenn ich nun irgendeinen Fehler mache, was die Datensicherung mit GIT angeht, und wieder alle Daten verloren gehen, dann habe ich das selbe Problem wieder.
Wenn dein Programm einen Fehler macht, hast du das Problem aber auch.

user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Ich denke aber erstmal, dass ich ein kleines Programm schreibe, was die Versionen einer Software verwaltet und die Daten sichert. Die Grundlage, den zu sichernden Projektordner (samt Inhalt) zu kopieren und auf einem externen oder internen Datenträger speichern.
Das ist exakt das was Git bereits kann. In der Zeit, in der du das Programm geschrieben hast, hast du dich auch mit Git auseinandergesetzt...

Hier habe ich eben mal schnell eine kleine Anleitung dazu geschrieben, in der das genau mit einem zweiten Datenträger ohne Server passiert:
http://www.entwickler-ecke.de/viewtopic.php?t=115462

user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
VS15 ist "verschlimmbessert", man kann damit nicht mal eine Form1 umbenennen oder gar löschen
Funktioniert bei mir auch in der Version ohne Updates problemlos.

user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
Ebanso nervt das ständige } Einfügen nach der Eingabe von { usw...
Geschmackssache. Ich schreibe selten ein { ohne ein schließendes }, deshalb finde ich das sehr praktisch. Es ist sicherlich Gewöhnungssache, dass man es nicht mehr manuell ein zweites Mal schreiben muss. Aber das ist ja konfigurierbar.


Csharp-programmierer - So 08.05.16 20:09

Also erstmal vorab: ich bin ein Mensch, der es bevorzugt, mit seinen eigenen Programmen zu arbeiten. Aus diesem Grund habe ich nun ein kleines Backup Programm geschrieben:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
private void DirectoryCopy(
        string sourceDirName, string destDirName, bool copySubDirs)
        {
            DirectoryInfo dir = new DirectoryInfo(sourceDirName);
            DirectoryInfo[] dirs = dir.GetDirectories();

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException(
                    "Source directory does not exist or could not be found: "
                    + sourceDirName);
            }

            if (!Directory.Exists(destDirName))
            {
                Directory.CreateDirectory(destDirName);
            }


            FileInfo[] files = dir.GetFiles();

            foreach (FileInfo file in files)
            {
                string temppath = Path.Combine(dir.Name, destDirName, file.Name);
                file.CopyTo(temppath, true);
            }

            if (copySubDirs)
            {

                foreach (DirectoryInfo subdir in dirs)
                {
                    string temppath = Path.Combine(destDirName, subdir.Name);
                    DirectoryCopy(subdir.FullName, temppath, copySubDirs);
                }
            }
        }


Hier werden die kompletten Daten kopiert, zwar befinden sich 2 Dateien noch außerhalb von dem Sicherungsverzeichnis, aber dieses Problem kriege ich noch gelöst. Was haltet ihr davon?

Wenn ich mit dem Programm fertig bin, habe ich mir vorgenommen GIT zu erlernen.


jaenicke - So 08.05.16 20:31

Damit weißt du aber immer noch nicht was sich in den Versionen eigentlich geändert hat. Und das ist die wichtigste Information, wenn etwas nicht mehr funktioniert.

Denn ansonsten spielst du nur das Backup ein, weißt aber nicht was falsch war und machst einen Fehier ggf. erneut. Und die aktuellen Änderungen sind noch dazu verloren.