2016-07-28 19 views
0

Bei der Fehlersuche in unseren Anwendungen kann ich aufgrund eines unvollständigen Release-Zyklus und menschlicher Fehler in vielen Situationen nicht sicher sein, aus welchem ​​Zweig die Assemblies stammen.Include TFS-Pfad in .NET Assembly

(Wir haben ziemlich viele verschiedene Bugfix/Feature/Test/Release-Filialen usw. in unserem TFS).

Die PDB-Dateien können manchmal helfen, zumindest in einer Testumgebung, aber manchmal fehlen sie oder sind veraltet/gehören zu Assemblys aus einem anderen Zweig.

Also, ich habe versucht, eine Möglichkeit zu denken, die Quelle Zweig Informationen direkt in der Baugruppe zu integrieren.

Überraschenderweise konnte ich nicht einfach einen direkten Weg online finden, um dies zu erreichen.

Meine Antwort unten erklärt meinen Ansatz. Ich würde mich über Feedback oder alternative Lösungen freuen.

Antwort

2

Kurz gesagt: Ich erstellte ein benutzerdefiniertes Attribut, das ich in AssemblyInfo.cs legte. Im Konstruktor des Attributs wird der Serverpfad für die aktuelle Assembly von TFS abgefragt und in diesen kompiliert.

Es ist im Grunde eine Kombination der folgenden Optionen:

Can I add custom version strings to a .net DLL?

How do I get the path of the assembly the code is in?

Get TFS mapped folder of a local sub folder of the solution?

(Anmerkung: Ich kann nicht den eigentlichen Quellcode veröffentlichen wegen Betriebseinschränkungen, aber ich denke, es ist ziemlich direkt.)

Den Wert des Attributs später zu bekommen, ist leider nicht so einfach, wie die Versionsnummer aus den Eigenschaften der DLL-Datei zu bekommen, aber zumindest ist es jetzt möglich, die benötigten Informationen mit minimalem Aufwand zu bekommen. (Ich benutze ein kleines PowerShell-Skript dafür.)

+1

Ich applaudiere Ihre Einfallsreichtum, aber das wird funktionieren, bis jemand Dinge in TFS ändert ... die Realität ist, dass Sie die Zeit in Straffung Ihres Release-Zyklus investieren müssen, und Zuweisen von Blöcken von Build-Nummern zu jedem Zweig. Wenn Sie auch TFS-Richtlinien implementieren, so muss jedes Einchecken mit einem Arbeitselement verknüpft werden, was auch die Arbeit erleichtert. Ein bisschen Schmerz und Disziplin werden jetzt zu einem weitaus besseren Erlebnis führen. – slugster

+0

@slugster Leider ist die "wirkliche Realität", dass ich keine Kontrolle über meine Firma und/oder Kollegen habe, um Dinge zu tun, die sie tun sollten. Darüber hinaus sind wir ein kleines Unternehmen mit hoher Arbeitsbelastung. Ihr sehr nützlicher Kommentar wird dennoch sehr geschätzt. Vielen Dank. – marsze

+1

Sie können AssemblyInformationalVersion anstelle eines benutzerdefinierten Attributs verwenden: Es wird auf der Eigenschaftsseite des Explorers der DLL angezeigt. –