Laden...

Eine DLL in vielen Projekten: Verhindern, dass man bei Änderungen alle Projekte kompilieren muss

Erstellt von Tuxinator09 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.854 Views
T
Tuxinator09 Themenstarter:in
11 Beiträge seit 2011
vor 9 Jahren
Eine DLL in vielen Projekten: Verhindern, dass man bei Änderungen alle Projekte kompilieren muss

Hi,

ich habe verschiedene (teils proprietäre) DLLs, welche ich in kompilierter Form in so ziemlich allen meinen Projekten einbinde. Zusätzlich habe ich eine eigene Toolsammlung, welche ich als Projekt immer in die Mappe einbinde und so als Verweis hinzufüge.
Wenn jetzt eine dieser DLLs aktualisiert wurde, muss ich diese in sämlichten Projekten neu hinzufügen bzw. austauschen.
Geht es irgendwie, dass ich diese DLLs nur in meine Toolsammlung integriere und darüber dann an die letztendlichen Projekte weiterreichen kann? Dann müsste ich die DLL immer nur in einem Projekt übernehmen und muss neu Kompilieren. Das wäre eine enorme Erleichterung 😃

Ich hoffe ich habe es einigermaßen anschaulich erklärt und hoffe auf hilfreiche Antworten ^^

Grüße
Tuxinator

F
10.010 Beiträge seit 2004
vor 9 Jahren

Ja.

Fügedie DLL über ProjektmappenExplorer/hinzufügen/vorhandenes Element hinzu.
Setze unter Eigenschaften den "Buildvorgang" auf "Keine" und stelle "In Ausgabeverzeichnis kopieren" auf "Kopieren wenn neuer".

T
Tuxinator09 Themenstarter:in
11 Beiträge seit 2011
vor 9 Jahren

So hab ich das ja aktuell schon. Aber halt in jedem einzelnen Projekt. Kann ich das auch in meine Toolsammlung (separates Projekt) einbinden und "freigeben" damit das von anderen Projekten automatisch mitbenutzt werden kann?

P
1.090 Beiträge seit 2011
vor 9 Jahren

Hi vielleicht sind NunGet Packete da was für dich.

Codekicker: Wiederverwendung von Komponenten mit NuGet

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

16.842 Beiträge seit 2008
vor 9 Jahren
F
10.010 Beiträge seit 2004
vor 9 Jahren

@Tuxinator09:
Was hälst du davon es mal selber zu probieren?
Solange du deine Toolsammlung als Projekt einbindest, werden alle darin befindlichen DLL's gleich kopiert.

Und da du ja sicherlich eine Sourcecodeverwaltung benutzt ist das auch kein problem.
Schließlich kann jede etwas wie externals.

T
Tuxinator09 Themenstarter:in
11 Beiträge seit 2011
vor 9 Jahren

Erstmal vielen Dank für die Antworten.

Probiert habe ich da schon einige verschiedene Ansätze, sonst hätte ich hier nicht gefragt 😉 (mit solchen Antworten hab ich schon fast gerechnet...)

Das man mit Nuget auch eigene Archive aufsetzen kann, war mir neu. Das ist nen schöner Ansatz, den ich wohl mal testen werde.

Ich wusel mich dann wohl noch ein bisschen durch...danke aber schon mal.

S
145 Beiträge seit 2013
vor 9 Jahren

Kam eine Fehlermeldung in der Art das DLL oder abhängigkeit nicht gefunden werden konnte oder DLL in falscher Version geladen wurde?

Wenn ja könnt es auch einfach sein das du beim kompilieren die AssemblyVersion erhöht hast, in diesem Fall müssen die Projekte neu kompiliert werden die diese DLL einsetzen.
Alternative wäre einfach nur die Dateiversion zu erhöhen, dann müsstest du die anderen projekte auch nicht neu kompilieren.

T
67 Beiträge seit 2010
vor 9 Jahren

Geht es irgendwie, dass ich diese DLLs nur in meine Toolsammlung integriere und darüber dann an die letztendlichen Projekte weiterreichen kann?

Natürlich geht das. Wieso auch nicht. Es ist allerdings die Frage ob es Sinnvoll ist alles in eine "eierlegende Wollmilchsau" zu packen.
Ich persönlich erstelle mir für jede solcher DLLs einzelne Wrapper die ich dann bei Bedarf in das jeweilige Projekt einbinde.
Das gilt übrigens auch für eine "Tool Sammlung". Auch hier sollte man Sinnvoll nach Bereichen trennen und entsprechend einzelne Projekte erstellen.

T
Tuxinator09 Themenstarter:in
11 Beiträge seit 2011
vor 9 Jahren

Ich hatte nie den Zugriff auf die Funktionen, wenn ich die DLL versucht habe über die Toolsammlung einzubinden.
Habe jetzt einen Sammelordner erstellt in welchem die einzelnen DLLs liegen. Die kann ich dann bei bedarf in das jeweilige Projekt einbinden und habe die DLL dann nicht immer in dem Projektverzeichnis liegen. Ist erstmal schon eine erleichterung.

Die Toolsammlung macht in meinem Fall schon Sinn, da ich einen Großteil der Funktionen darin in so ziemlich jedem Projekt benötige. Am Ende werden die ganzen Einzelprojekte sowieso per Plugin-System wieder zusammen geführt und teilen sich dann die DLL 😉 Da läuft schon alles optimal.