Laden...

Bestimmte Klassen auslagern, damit sie auch in anderen Projekten genutzt werden können

Erstellt von Tam0r vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.611 Views
T
Tam0r Themenstarter:in
137 Beiträge seit 2008
vor 13 Jahren
Bestimmte Klassen auslagern, damit sie auch in anderen Projekten genutzt werden können

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 ?

1.002 Beiträge seit 2007
vor 13 Jahren

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

1.552 Beiträge seit 2010
vor 13 Jahren

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

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

F
10.010 Beiträge seit 2004
vor 13 Jahren

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.

2.891 Beiträge seit 2004
vor 13 Jahren

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

F
10.010 Beiträge seit 2004
vor 13 Jahren

Vorsicht, svn:externals versioniert anders als eine echte integration.
Du hast dann immer die neueste Version, was manchmal nicht gewollt sein kann.

2.891 Beiträge seit 2004
vor 13 Jahren

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

F
10.010 Beiträge seit 2004
vor 13 Jahren

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.

2.891 Beiträge seit 2004
vor 13 Jahren

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?

F
10.010 Beiträge seit 2004
vor 13 Jahren

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.

R
103 Beiträge seit 2009
vor 13 Jahren

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.