myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Entwicklungs- und Laufzeitumgebung (Infrastruktur) » VS 2019 – Eigene Klassen (DLL) automatisch in weiteres Projekt Debug/Release einfügen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

VS 2019 – Eigene Klassen (DLL) automatisch in weiteres Projekt Debug/Release einfügen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
pollito pollito ist männlich
myCSharp.de-Mitglied

avatar-3521.gif


Dabei seit: 26.02.2010
Beiträge: 143
Entwicklungsumgebung: VS2019, Team Developer 6.2


pollito ist offline

VS 2019 – Eigene Klassen (DLL) automatisch in weiteres Projekt Debug/Release einfügen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!

Die Überschrift ist etwas verwirrend, mir fiel aber nichts besseres ein – sorry! Ich erkläre es:

Ich habe ein Projekt, das Klassen aus einem anderen Projekt von mir verwendet. Diese Klassen liegen als DLL vor – sie werden in das Projekt als Verweis eingefügt.

Wenn ich nun die Klassen ändere, ändern sich die DLLs sowohl in bin\Debug als auch in bin\Release. Diese neuen DLLs hätte ich auch gerne automatisch in den entsprechenden bin-Ordnern meins Projektes – ein Mal in bin\Release für das fertige Programm und einmal in bin\Debug für die Entwicklung. Allerdings kann ich über "Verweis Hinzufügen..." nur einen Verweis hinzufügen: entweder bin\Debug oder bin\Relese.

Wie kann ich automatisch dafür sorgen, dass ich während der Entwicklung die Debug-Version meiner DLL habe, während bei Fertigstellung des Programms die Release-Version der DLL verwendet wird?

Sicher eine triviale Sache, aber ich komme nicht drauf.

Liben Dank im Voraus und einen schönen Sonntag!

René
Neuer Beitrag 15.09.2019 11:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.387
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dies geht wohl nur über manuelles Editieren der Projektdatei, s.  Visual Studio 2010 Compiling with the Debug or Release version of third party library depending on if my project is being compiled Build or Release?, also

XML-Code:
<Reference Include="MyLib">
   <HintPath>..\lib\$(Configuration)\MyLib.dll</HintPath>
</Reference>

(alternativ entsprechend der anderen Antworten mittels Bedingung (Condition)).
Neuer Beitrag 15.09.2019 12:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.166
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die korrekten Wege wären:
- Projektreferenz statt DLL-Referenz verwenden
- Paketmanagement (NuGet) verwenden
Neuer Beitrag 15.09.2019 12:30 Beiträge des Benutzers | zu Buddylist hinzufügen
hypersurf hypersurf ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.10.2008
Beiträge: 472
Entwicklungsumgebung: VS Studio 2019, Android Studio
Herkunft: Münster


hypersurf ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich würde auch immer mit NuGet arbeiten, das erleichtert das ganze sehr.
Neuer Beitrag 15.09.2019 13:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pollito pollito ist männlich
myCSharp.de-Mitglied

avatar-3521.gif


Dabei seit: 26.02.2010
Beiträge: 143
Entwicklungsumgebung: VS2019, Team Developer 6.2

Themenstarter Thema begonnen von pollito

pollito ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke!

Mit Projektreferenzen werden die entsprechenden Queldateien teil meines Zielprojektes und demnach immer wieder mitübersetzt. Habe ich das richtig verstanden? Interessant – ich muss schauen, ob das eine gangbare Lösung ist.

Bei NuGet muss ich erst passen. Bis auf ein paar Mal was von VS nachinstallieren zu lassen, kenne ich mich damit nicht aus. Dank deinem Vorschlag weiß ich jetzt aber, dass es einen weiteren Weg gibt und werde ihn mir in den nächsten Tagen anschauen. Danke dafür!

LG

René
Neuer Beitrag 15.09.2019 13:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pollito pollito ist männlich
myCSharp.de-Mitglied

avatar-3521.gif


Dabei seit: 26.02.2010
Beiträge: 143
Entwicklungsumgebung: VS2019, Team Developer 6.2

Themenstarter Thema begonnen von pollito

pollito ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Th69:
(...)

XML-Code:
<Reference Include="MyLib">
   <HintPath>..\lib\$(Configuration)\MyLib.dll</HintPath>
</Reference>

(...)

Danke! Der erste Test war nicht erfolgreich. Ich muss nachschauen, was ich das falsch gemacht habe.

Eine Frage in die Runde: Ich kann anscheinend dasselbe erreichen, wenn ich im Präbuildereignis die entsprechenden DLLs (sofern sie sich geändert haben), in das Ziel kopiere. Ich habe gerade einen Test durchgeführt, der erfolgreich war: Als DLL-Verweis wird auf die Debug-DLL verwiesen. Beim Erstellen der Release-Version wird zunächst die Release-DLL kopiert und verwendet. – Ist das ein gangbarer Weg oder eher Gefrimmele und demnach mit Seiteneffekten zu rechnen?

Nochmals vielen Dank!

LG

René
Neuer Beitrag 15.09.2019 13:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
M.L.
myCSharp.de-Mitglied

Dabei seit: 26.09.2006
Beiträge: 195
Entwicklungsumgebung: VS Community '19


M.L. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
Bei NuGet muss ich erst passen.

Hier geht es zur Doku:  https://docs.microsoft.com/en-us/nuget/
Neuer Beitrag 15.09.2019 19:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
hypersurf hypersurf ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.10.2008
Beiträge: 472
Entwicklungsumgebung: VS Studio 2019, Android Studio
Herkunft: Münster


hypersurf ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von pollito:
Bei NuGet muss ich erst passen. Bis auf ein paar Mal was von VS nachinstallieren zu lassen, kenne ich mich damit nicht aus.

Musste Dir wirklich mal anschauen. Einen eigenen NuGet-Server aufzusetzen dauert nicht mal ne Stunde und die Pakete lassen sich per Batch-Einzeiler oder auch direkt beim Build erstellen.
Neuer Beitrag 15.09.2019 20:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pollito pollito ist männlich
myCSharp.de-Mitglied

avatar-3521.gif


Dabei seit: 26.02.2010
Beiträge: 143
Entwicklungsumgebung: VS2019, Team Developer 6.2

Themenstarter Thema begonnen von pollito

pollito ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für die Tipps! Ich werde mir das Thema NuGet ab heute anschauen, sofern ich etwas Zeit abzwacken kann. Auf alle Fälle ist es jetzt auf meiner Agenda drauf.

LG

René
Neuer Beitrag 16.09.2019 08:43 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pollito pollito ist männlich
myCSharp.de-Mitglied

avatar-3521.gif


Dabei seit: 26.02.2010
Beiträge: 143
Entwicklungsumgebung: VS2019, Team Developer 6.2

Themenstarter Thema begonnen von pollito

pollito ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Gut, ich habe etwas Zeit gefunden, mich mit NuGet ein wenig zu befassen (eher einzulesen). Was ich aber nicht verstehe, ist es, wie man ein Paket mit beiden Versionen (Bin und Release) erstellen und verwenden kann.

Wird das von NuGet überhaupt unterstützt?

Nochmals vielen Dank!

LG

René
Neuer Beitrag 20.09.2019 16:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.166
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Es gibt in NuGet Stable und Unstable Pakete.
Unstable wird anhand von SemVer Richtlinien identifiziert:  https://semver.org/
Siehe auch Doku:  https://docs.microsoft.com/en-us/nuget/c...kage-versioning

Prinzipiell ist es so, dass man in 99,9999% aller Varianten immer Release paketiert.
Wenn Du einen ordentlichen DevOps Prozess hast, geht das alles völlig automatisiert:

- feature Branch in Git erstellen
- Changes commiten
- Pullrequest erstellen
- PullRequest erhält eine SemVer Beta Version (das macht zB GitVersion automatisch inkl. Versionierung)
- Das Paket ist entsprechend ein Beta Paket
- Wenn Changes valide sind, dann wird der Freature Branch in den master branch überprüft
- Der Build ist dann stable
- Paket ebenfalls Stable

via Azure DevOps ist das alles in wenigen Zeilen umzusetzen:
 https://github.com/BenjaminAbt/AzureDevO...otNetCore-NuGet

bzw genaue Steps:
 https://github.com/BenjaminAbt/AzureDevO...otnet-nuget.yml

In der Umsetzung mit Azure DevOps sieht das dann so aus wie im Anhang:
- Der Build erzeugt ein oder mehrere Pakete (je nach Repository/Projekt) in der jeweiligen Konfiguration
- Das Release published auf ein oder mehrere Feeds

PS: prinzipiell kann man auch Debug-Pakete erstellen (das kann man konfigurierbar machen), sollte aber nur für die Unstable und niemals für die Stable Pakete gelten.
I.d.R. ist auch so, dass Debug-Pakete nicht auf den "offiziellen" Feed gepublished werden.

Abt hat dieses Bild (verkleinerte Version) angehängt:
2019-09-20 16_44_04-0.1.1 Pkg-Auth CI and 1 more page - Microsoft Edge.png
Volle Bildgröße

Neuer Beitrag 20.09.2019 16:39 Beiträge des Benutzers | zu Buddylist hinzufügen
pollito pollito ist männlich
myCSharp.de-Mitglied

avatar-3521.gif


Dabei seit: 26.02.2010
Beiträge: 143
Entwicklungsumgebung: VS2019, Team Developer 6.2

Themenstarter Thema begonnen von pollito

pollito ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Super, danke! Da habe ich aber einiges nachzuholen.

Ich hatte sehr viele Jahre C++ in Visual Studio programmiert, und da war es normal, im den Einstellungen unterschiedliche DLLs, LIBs usw. für Debug und Release angeben zu können. Eine direkte ähnliche Möglichkeit sehe ich für C# nicht.

LG

René
Neuer Beitrag 20.09.2019 17:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 13.11.2019 03:14