Ich hab eine grundlegende Frage zu VisualStudio. Wenn ich mir eine "Hilfs" - Klasse geschrieben habe und diese in allen meinen Projekten verwenden will, wie gehe ich dabei vor ?
Wenn ich nun diese Klasse in 100 Projekten verwende und nach einem jahr verbessere ich einpaar methoden oder es kommen methoden hinzu. Muss ich dann die klasse ja manuell in alle Projekte erneut wieder reinziehn per Drag & Drop. Ich bin mir sicher das es dafür elegantere lösungen gibt. Jemand eine Idee ? Ist es irgendwie möglich nur einen Verweis zur *.cs zu erstellen oder diese aus einem anderen pfad zu usen ?
Hallo Tam0r,
erstelle dir ein Projekt vom Typ Klassenbibliothek (bzw. Class Library in der englischen Version von Visual Studio). Beim Kompilieren (unbedingt den Release-Modus verwenden!) wird eine .dll
-Datei im Projektordner unter bin/Release/
erzeugt, die du in deinen anderen Projekten einbinden kannst.
Wenn du deine Funktionen später ergänzt oder modifizierst, tust du das nur in deiner Klassenbibliothek und tauschst in den anderen Projekten lediglich die DLL aus.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Hallo Tam0r,
ich habe mir unter Projekteigenschaften eingestellt wohin die dll kompiliert wird. Und alle anderen Projekte die diese dll referenzieren auf diesen Ort. Dies ist jedoch nur unter Release eingestellt. Im Debugmodus bleibt die dll im bin/Debug.
Einstellen kannst du dies unter "Projekteigenschaften/Build/Output Path". Bitte beachte dabei dass du für diese Einstellung die Konfiguration auf release
umstellst.
Gruß
Michael
Noch eine "Kleinigkeit".
Wer hunderte Projekte hat und keine Sourcecode Versionsverwaltung benutzt ( Subversion und co ) der spielt mit dem Feuer.
Und wenn man sowas einsetzt, stellt sich so eine Frage eigentlich auch nicht, denn dann hat man seine Projekte sowieso schon vernünftig Modularisiert.
Ist es irgendwie möglich nur einen Verweis zur *.cs zu erstellen oder diese aus einem anderen pfad zu usen?
Der Vollständigkeit halber: Ja, kann man. Siehe Anhang (Hinzufügen > vorhandenes Element > Hinzufügen als Link).
Ich würde dir aber auch dringend zu einer Versionsverwaltung raten. Wenn du da bestimmte Dateien in vielen Projekten wiederverwendest, kannst du dafür ein separates Repository erstellen und (im Falle von SVN) diese mittels svn:externals einbinden.
Gruß,
dN!3L
Vorsicht, svn:externals versioniert anders als eine echte integration.
Du hast dann immer die neueste Version, was manchmal nicht gewollt sein kann.
Vorsicht, svn:externals versioniert anders als eine echte integration.
Was ist für dich eine "echte Integration"?
Szenario ist doch, dass ich 100 verschiedene Projekte habe, die alle die gleiche Datei verwenden. Wenn ich diese Datei ändere, sollen alle 100 Projekte diese Änderungen auch mitbekommen.
Das kann man dann ja dadurch lösen, dass man 100 verschiedene Repositories hat plus eins für diese gemeinsam genutzte Datei/Komponente und die gemeinsam genutzten Sachen dann per svn:externals in die 100 Projekte einbindet.
Wenn man für ein Projekt mal eine alte Version braucht, kann man ja die externe Ressourcen auf eine bestimmte Revision "downgraden".
Oder gibt es noch andere (bessere) Lösungsmöglichkeiten?
Gruß,
dN!3L
Das meinte ich nicht.
Man sollte sich nur vor Augen führen das bei der Integration per svn:externals immer die neueste Version im Projekt ist, was manchmal nicht gewünscht ist.
Wir branchen z.b. jedes Release, so das wir diese ggf wieder herstellen und patches erstellen können.
Ist hier eine per svn:externals eingebundene Lib mit dabei, ist sie aber nicht in diesem Zustand, sondern immer in der neuesten Version.
Hat schon zu massiven Problemen geführt.
Das sollte man also bedenken, wenn man svn:externals einsetzt.
Wir branchen z.b. jedes Release, so das wir diese ggf wieder herstellen und patches erstellen können. Ist hier eine per svn:externals eingebundene Lib mit dabei, ist sie aber nicht in diesem Zustand, sondern immer in der neuesten Version.
Ah, OK. Gibt's da eine komfortable Lösung für? Außer die Externals immer auf eine bestimmte Revision festzunageln?
Habe ich auch noch keine echte Lösung gefunden.
Wir haben dann svn:externals entfernt und die aktuelle version eingecheckt.
Dann ist die fest am release versioniert.
Man kann bei den externals auch eine revision mit angeben mit "-r revision".
Das ist dann nantürlich etwas fummelig das einzubauen aber wenns nicht allzu oft vorkommt nicht soo schlimm.
Wenn man eine major release wirklich in einem Versionsstand in SVN festhalten will kann man einfach das Projekt in svn kopieren und die externals anpassen.