PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VS 2005 - in Umgebungsvariable builden


Monger
2008-04-17, 10:44:53
Ich könnte mal wieder Hilfe gebrauchen.

Wenn ich unter Visual Studio 2005 eine Projektmappe erstelle (zu deutsch: "builde"), packt er ja üblicherweise den Output in das "bin" Verzeichnis in eben diesem Projekt.

Jetzt möchte ich gerne diesen Output auslagern, damit der ganze Schmodder nicht jedesmal in unserem Subversion Repository gespeichert wird.

Problem ist: ich möchte mich ungern auf einen festen Pfad festlegen. Auf verschiedenen Rechnern könnte das hier und da problematisch werden. Deshalb war mein Gedanke, doch eine passende Umgebungsvariable unter Windows anzulegen, und dort einfach reinzubuilden.

Die Variable an sich ist als Benutzervariable angelegt. Aber ich bin irgendwie zu doof, Visual Studio davon zu überzeugen, da doch bitteschön auch reinzubuilden! :(
Ich habs jetzt mit $(Output) und %Output% im Ausgabepfad probiert, aber jedesmal legt der einfach lokal einen Ordner mit genau diesem Namen an, statt in das richtige Verzeichnis zu gehen!

Kann mir da jemand helfen?

Bietchiebatchie
2008-04-18, 20:20:34
Ich weiß, das beantwortet deine eigentliche Frage nicht, aber warum nicht einfach alle .exe files im Repository ignorieren?
Vielleicht macht es auch Sinn alle bin-Verzeichneisse zu ignorieren?

PatkIllA
2008-04-18, 20:30:03
Vielleicht macht es auch Sinn alle bin-Verzeichneisse zu ignorieren?
Das ist ja auch das übliche und die svn:ignore Einstellung wird ja auch auf dem Server gespeichert.

Monger
2008-04-18, 20:48:48
Ich weiß, das beantwortet deine eigentliche Frage nicht, aber warum nicht einfach alle .exe files im Repository ignorieren?
Vielleicht macht es auch Sinn alle bin-Verzeichneisse zu ignorieren?

Okay, ich wusste gar nicht dass das geht.
Trotzdem: wir haben wahrscheinlich ein ganzes Sammelsurium an Bibliotheken und ausführbaren Daten. Wäre schick, wenn man die an einem Ort sammeln könnte, den man rechnerbezogen umbiegen kann.

Ich plane hier, TortoiseSVN einzusetzen. Und wenn ich das richtig gesehen habe, arbeiten diese IgnoreLists dateibezogen. Jede einzelne Datei da einzupflegen kann hässlich werden, oder kann ich tatsächlich den ganzen Ordner angeben?

PatkIllA
2008-04-18, 20:53:42
Du kannst sowohl Dateien und Ordner hinzufügen, mit und ohne Platzhalter.
Du kannst die ignore Einstellungen auch in untergeordnete Ordner vererben, das ist aber ungünstig gelöst.
Du musst die Ignorelost sowieso einsetzen, weil ihr sonst die projektspezifischen Benutzereinstellungen mit commiten würdet.
Klingt irgendwie so, als ob in eurer Firma noch niemand ein Versionierungstool eingesetzt hätte.

Gast
2008-04-18, 20:59:34
...
Postbuild Events, die alles dorthin kopieren wo es hingehört.

Alternativ auf ein richtiges Buildsystem wie Scons setzen und das MS-Build sein lassen. Das vereinigt so ziemlich alle guten Eigenschaften der mir bekannten Buildsysteme inkl ccache und ist frei erweiterbar, das es auf Pythonskripte basiert.

Nur wenn man .Net Anwendungen hat ist es leider nicht wirklich brauchbar. :(

Monger
2008-04-18, 21:32:41
Du musst die Ignorelost sowieso einsetzen, weil ihr sonst die projektspezifischen Benutzereinstellungen mit commiten würdet.

Wie meinst du das? Welche Benutzereinstellungen werden denn wo in einem .NET Projekt mitgeschleppt? Bisher schienen mir die Projekte eigentlich ohne Einschränkungen portabel zu sein.

Aber die Ignore List würde auch taugen, um die obj-Ordner zu unterdrücken... ja, die wären wohl ganz praktisch.


Klingt irgendwie so, als ob in eurer Firma noch niemand ein Versionierungstool eingesetzt hätte.
Das ist ne komplizierte Geschichte. Die Entwicklungsabteilungen bei uns verwenden ClearCase als Client, und haben natürlich auch passende Leute die den Subversion Server betreuen.
Wir selbst als Testautomatisierer haben aber aus Kostengründen eine Eigenentwicklung aufs Auge gedrückt bekommen, die - vorsichtig ausgedrückt - nix taugt. Ich versuche jetzt gerade die Projektleitung davon zu überzeugen, doch bitte auf was gescheites umzusteigen - dazu sollte ich halt aber auf jede Anforderung irgendeine gangbare Lösung in der Tasche haben.
Ich muss nicht (und könnte auch gar nicht) das dann selber umsetzen, aber ich sollte wissen ob es grundsätzlich funktionieren kann.

Ich hab in anderen Projekten mal mit TortoiseSVN gearbeitet, und war sehr angetan. Aber ich weiß halt höchstens wie man es bedient, nicht wie man es konfiguriert.

Bietchiebatchie
2008-04-18, 21:47:47
Wie meinst du das? Welche Benutzereinstellungen werden denn wo in einem .NET Projekt mitgeschleppt? Bisher schienen mir die Projekte eigentlich ohne Einschränkungen portabel zu sein.
Von VS selber enden die User Options Dateien auf .suo.


Aber die Ignore List würde auch taugen, um die obj-Ordner zu unterdrücken... ja, die wären wohl ganz praktisch.
Das ist ungemein praktisch; vor allem wenn man verteilt arbeitet und z.B. über Inet commited, das reduziert die Größe des Repositories nämlich enorm.


Ich hab in anderen Projekten mal mit TortoiseSVN gearbeitet, und war sehr angetan. Aber ich weiß halt höchstens wie man es bedient, nicht wie man es konfiguriert.

Falls du es mit Tortoise ausprobieren willst: in Preferences-Global-Subversion-Global Ignore Pattern: z.B. "*\bin *\obj"

Coda
2008-04-18, 22:15:15
Jetzt möchte ich gerne diesen Output auslagern, damit der ganze Schmodder nicht jedesmal in unserem Subversion Repository gespeichert wird.
Was machen bitte Output-Binaries im Subversion? Das ist schonmal per-se Blödsinn. Da gehören die Input-Files rein und sonst nichts. Außer evtl. noch DLLs und Libs die man selten ändert.

Sonst verstehe ich das Problem nicht. Es wird im Repository doch nur das gespeichert was man auch geadded hat. Ansonsten ignoriert Subversion das Zeug doch.

Monger
2008-04-18, 22:27:19
Sonst verstehe ich das Problem nicht. Es wird im Repository doch nur das gespeichert was man auch geadded hat. Ansonsten ignoriert Subversion das Zeug doch.
Vielleicht habe ich das ja alles falsch im Kopf, aber TortoiseSVN arbeitet doch auch auf Ordner Ebene?!?
Sprich: wenn man einen Ordner dem Repository hinzufügt, wird standardmäßig auch alles hinzugefügt was unterhalb dieses Ordners liegt. Da jedesmal wieder den \bin und \obj Ordner (und irgendwelche benutzerbezogenen Dateien) rauszufischen, könnte lästig werden. Wenn man diese Entscheidung dem Benutzer von vorneherein abnehmen könnte, wäre das schon praktisch.

Das ganze System soll nach Möglichkeit auch von Leuten bedienbar sein, die abgesehen von ein paar Skripten kaum Programmiererfahrung haben.

Dass die Binaries im Repository Quatsch sind, ist mir auch klar. Mit unserem derzeitigen Tool ist das derzeit so (frag bitte nicht warum!), und der Server fängt regelmäßig an zu qualmen.

Coda
2008-04-18, 22:27:52
Vielleicht habe ich das ja alles falsch im Kopf, aber Subversion arbeitet doch auch auf Ordner Ebene?!?
Sprich: wenn man einen Ordner dem Repository hinzufügt, wird auch alles hinzugefügt was unterhalb dieses Ordners liegt.
Nö. Einzelne Dateien.