Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Bestimmte Klassen auslagern, damit sie auch in anderen Projekten genutzt werden können
Tam0r
myCSharp.de - Member



Dabei seit:
Beiträge: 138

Themenstarter:

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

beantworten | zitieren | melden

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 ?
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1626
Herkunft: Südtirol/Italien

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 3138

beantworten | zitieren | melden

Zitat von Tam0r
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
Attachments
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

Vorsicht, svn:externals versioniert anders als eine echte integration.
Du hast dann immer die neueste Version, was manchmal nicht gewollt sein kann.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 3138

beantworten | zitieren | melden

Zitat von FZelle
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
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 3138

beantworten | zitieren | melden

Zitat von FZelle
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?
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
rasepretrep
myCSharp.de - Member



Dabei seit:
Beiträge: 105

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers