Laden...

sharpDox - Ein Dokumentationstool für C# | Version 1.2

Letzter Beitrag vor 5 Jahren 223 Posts 132.924 Views
sharpDox - Ein Dokumentationstool für C# | Version 1.2

Aktualisierung:

Hallo!

Version 1.2 online!

Gruß
Geaz


Hallo!

Es hat sich einiges getan!

Ab jetzt ist sharpDox nicht nur frei benutzbar sondern obendrein auch open source!
Jeden den es interessiert der kann ab jetzt den Code hier einsehen und gerne auch etwas beitragen 😃

Zudem sind nun einige neue Features dabei:

  • Added support for articles and custom navigations
  • Added support for multilanguage documentations
  • Added creation of svg diagrams
  • Added a new visibility settings page, which replaces the old namespace-excluder
  • Replaced old new, save and load dialog and added a "recent project" menu
  • Several optimizations

Größte Erneurungen sind, dass in der GUI nun nicht nur Namensräume, sondern bis auf Member-Ebene einzelne Elemente aus der Dokumentation ausgeschlossen werden können.
Zudem kann eine Dokumentation nun z.B. um Artikel erweitert werden! Hier ein Beispiel für einen solchen Artikel.

Ein weiteres Feature ist die Erstellung von mehrsprachigen Dokumentationen!

Alles weitere steht in der Dokumentation von sharpDox beschrieben, die ihr hier findet.

Die Seite für sharpDox ist ebenfalls zu Github gezogen und ist weiterhin über http://sharpdox.de erreichbar.

Beste Grüße
Geaz

Und der zweite Screenshot

Und noch ein Screenshot von der GUI

Hallo,

von der Bedienung ist das Programm echt super. Man muss nichts unnötiges machen. Ich hab direkt mal ein Projekt von mir in die HTML Dokumentation bringen lassen und muss sagen, das ging echt flott.

Eins kann ich nur irgendwie nicht finden. Das Tool erstellt Klassendiagramme und Sequenzdiagramme, find ich es einfach nicht, oder werden die in der HTML-Dokumentation nicht ausgegeben?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

Hey,

freut mich zu hören, dass es so gut klappt 😃

Das Tool erstellt Klassendiagramme und Sequenzdiagramme, find ich es einfach nicht, oder werden die in der HTML-Dokumentation nicht ausgegeben?

Einmal sollten alle Diagramm auch im Unterordner "diagrams" im Ausgabepfad zu finden sein. In der HTML-Doku sind die etwas "versteckt", damit die, je nach Größe, nicht im Weg sind. Schau einmal wenn du in einer Klassenübersicht bist oben rechts, da ist ein Button "Klassendiagramm". Wenn du in einer Methode bist, welche mindestens einen Aufruf einer anderen Methode aus deinem Projekt tätigt, ist an der selben Stelle ein Button "Sequenzdiagramm".

Habe dir mal ein Bild angehängt, damit wir nicht aneinander vorbei reden 😉

Gruß,
Geaz

Hallo Geaz,

ich habe das Programm mal runtergeladen und optisch ist es schonmal sehr ansprechend 😃

Mir ist jedoch gleich der ein oder andere Punkt aufgefallen:*Könnte das Programm nicht den Großteil der Daten für "Allgemeine Einstellungen" aus der Projektdatei ziehen? *Bei einem Projekt ist eine "System.UnauthorizedAccessException" aufgetreten. Die Meldung habe ich jedoch erst im Logfile gesehen. Die Anwendung gibt hierzu keine Infos, weshalb ich erstmal eine Weile gewartet habe. Der User sollte die Info erhalten, dass hier ein Fehler aufgetreten ist, evtl. mit dem Verweis auf das Logfile. *Ein anderes Projekt funktionierte, jedoch wäre es nicht schlecht, wenn man eine Info darüber erhalten könnte, welche Datei er gerade parsed oder erstellt, damit (gerade bei großen Projekten) der User weiß, was und vor allem, dass das Programm noch etwas macht. *Die erstellte Dokumentation (Top-Layout!!) ist leider im IE nicht nutzbar. Nach zwei bis drei Klicks passiert garnichts mehr. Ich kann keinen Punkt mehr anwählen, nur noch die Seite neu laden. Daraufhin tritt wieder das gleiche Phänomen auf. IE Version: 9.0.8112.16421 - Dieses Problem scheint nur bei der Darstellung von Klassen aufzutreten. Blättere ich durch die Namespaces, funktioniert alles. Sobald eine Klasse angewählt wurde, "friert" die Seite ein. *Zur besseren Übersicht wäre es sicherlich hilfreich, wenn noch Zeitangaben im Logfile vorhanden wären

Ich würde das Programm liebend gerne benutzen, würde ich es denn auch im IE nutzen können. 😃

EDIT: Das gleiche Problem mit dem einfrieren der Seite habe ich auch auf deiner Projektseite. Sobald ich mir eine Klasse in deiner Dokumentation ansehen möchte, steht die Seite.

Grüße vom raketenhund!

Projekte
my dvds - Die DVD & BluRay Verwaltung für Windows Phone 8

Hallo Geaz, den Link hatte ich gefunden.

Der zeigt mir jedoch immer nur die aktuelle Klasse an. Den Link zum Sequenzdiagramm erhalte ich auch, bei Klassen die Aufrufen in / von anderen Klassen erhalten. Allerdings wird in dem Overlay was dann geöffnet wird ebenfalls nur das Stück sequenz der Klasse angezeigt mit Pfeilen aus dem nichts und ins nichts. - Wenn ich heut abend zu Haus bin werd ich mal Screenshots von machen.

Falls relevant: Als Browser nutze ich Firefox in der aktuellen Version.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

@raketenhund:

Freut mich, dass dir das Programm zusagt 😃

Ich habe eine neue Version hochgeladen, welche die meisten deiner Probleme beheben sollte. Sowohl das Problem mit dem IE (war im HTML und Wordpress Plugin. Die Doku auf meiner Seite sollte jetzt auch funktionieren), die Zeitangabe in der Log und die Ausgabe im Bausausgabefenster. Einfach mal in die Changelog innerhalb der .rar reinschauen und probieren, ob es jetzt klappt.

Wegen deiner "System.UnauthorizedAccessException" wäre es super, falls du mir deine Log über mein Bugreport Forumlar schicken könntest.

@inflames2k:

Hmm, bei den Klassendiagrammen war der erste Screenshot und meine Aussage wohl etwas irreführend. Momentan ist es in der Tat so, dass lediglich ein Klassendiagramm der aktuellen Klasse angezeigt wird. Ein komplettes Diagramm, also inklusive Beziehungen, ist für die nächste Version geplant (sollte kein großes Problem sein, da alle benötigten Informationen bereits vorhanden sind).

Das Problem mit dem Sequenzdiagramm hört sich eigenartig an, bin auf deinen Screenshot gespannt 😃

Gruß,
Geaz

Wenn ich mir deine Antwort so ansehe, könnte das Problem mit den Sequenzdiagrammen garkeins sein...

Hab mir das noch einmal genauer angesehen. Wenn man verstanden hat worauf der Fokus liegt, ist das in Ordnung.

Zwei Sachen hab ich noch:

  1. Warum werden die erstellten Grafiken 2 mal gespeichert? Einmal unter diagrams und ein weiteres mal unter html\images\diagrams. - Würde es hier nicht einmal ausreichen?

  2. Ich fänds im Sequenzdiagramm schöner, wenn Aufrufe einer Klasse auf sich selbst nicht mit diesem kleinen Pfeilchen dargestellt werden, sondern wie es die meißten UML-Tools machen. Siehe im Anhang.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

Zwei Sachen hab ich noch:

  1. Warum werden die erstellten Grafiken 2 mal gespeichert? Einmal unter diagrams und ein weiteres mal unter html\images\diagrams. - Würde es hier nicht einmal ausreichen?

Eigentlich würde es reichen, dass ist richtig. Ich habe mir nur gedacht, dass es ganz nett wäre, wenn man einfach den html Ordner kopieren kann und dann hat man die ganze Dokumentation direkt in einem Ordner. Gerade wenn man mehrere Exporter aktiv hat finde ich das persönlich ganz praktisch. Ist vielleicht einfach Geschmakssache 😃

  1. Ich fänds im Sequenzdiagramm schöner, wenn Aufrufe einer Klasse auf sich selbst nicht mit diesem kleinen Pfeilchen dargestellt werden, sondern wie es die meißten UML-Tools machen. Siehe im Anhang.

Da gebe ich dir recht. Habe es auf meiner Liste und ist mit dem nächstem Update drin.

Gruß,
Geaz

Ich hab da noch was gefunden.

In einem aktuellen Projekt baue ich gerade einen Authentifizierungsmechanismus.

Bei der Anmeldung gibt es folgenden Abfolgebaum:


-> MainForm.Authenticate
       -> AuthenticationManager.AuthenticateUser
                ->AuthenticationDBHandler.AuthenticateUser

Im generierten Sequenzdiagram zu MainForm.Authenticate geht der Pfeil jedoch nur zum AuthenticationManager und dessen Rückgabe zurück.

Ich hatte vorhin schon mal eine Sequenz, die über mehrere Klassen ging, drum war ich verwundert. Hab ich mich getäuscht oder erstellt das Tool normalerweise den vollen Sequenzbaum ab der Methode bis zum letzten Aufruf? Denn dann solltest du das nochmal prüfen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

Hallo

Also dies ist wirklich ein top Programm. Einfach zu handhaben, schnell und gute Ausgabe. Was mir allerdings noch fehlt, ist die Beschreibung der Parameter bei den Funktionen (<param ...). Auf jeden Fall : weiter so!!

Thomas

Hallo,

ich wollte das Tool mal ausprobieren, da es doch schon sehr nett aussieht.
Leider bricht er bei mir ab:

Fehlermeldung:
SharpDox.Core.exe Information: 0 : 18.02.2013 08:09:21 Neue Konfiguration erfolgreich erstellt.
SharpDox.Core.exe Error: 0 : 18.02.2013 08:12:12 Bauvorgang konnte nicht abgeschlossen werden ...System.ArgumentException: An item with the same key has already been added.
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at SharpDox.Core.Parser.DocumentationParser.ParseDocumentation(IEntity entity)
at SharpDox.Core.Parser.ParseController.GetParsedMethod(IMethod methodNode, CSharpFile file, Boolean isCtor)
at SharpDox.Core.Parser.ParseController.ParseProjectTypeToObject(SDType parsedType, IType type, CSharpFile file)
at SharpDox.Core.Parser.ParseController.GetParsedType(IType type, CSharpFile file)
at SharpDox.Core.Parser.ParseController.GetParsedSolution(Solution solution)
at SharpDox.Core.Builder.RepositoryLoader.LoadRepository(String inputPath)
at SharpDox.Core.Builder.BuildController.BuildDocumentation()

Im Ausgabefeld der Gui hat er gerade die ganzen Klassen gelesen (die letzte dort angegebene Klasse kam aber nicht doppelt vor).

Wenn der "Bau" fehlschlägt, kann man keinen neuen Starten, da ein Klick auf "Stop" keine funktion mehr hat und Start ausgegraut ist. Man muss die Anwendung neustarten.

Ich lasse es gerade mal in meinem Projekt laufen (rund 170.000 Zeilen Code). Irgendwann beim Klasseneinlesen wird die GUI richtig langsam..

Wie kann ich mehrere Namespaces "ausschließen"?
Wenn ich den Namespace "Projekt.Namespace" ausschließe sollte meiner Meinung nach auch "Projekt.Namespace.Ordner.Klasse" nicht in der Doku landen.

Hoffe, es hilft dir ein wenig.

Gruß
Björn

Hallo Geaz,

schönes Programm.

Wie ein Vorredner bereits erwähnt hat, wäre es noch schön wenn Projektinformationen direkt aus diesem gelesen werden.

Was mir noch aufgefallen ist:

  • Bei der Auswahl des Logos werden keine Bilder angezeigt.
  • Wählt man Neu bleibt die Ansicht innerhalb des Bauen menüs.
  • Bauen kann angeklickt werden, obwohl kein Projekt ausgewählt ist.
  • Eine Fortschrittsanzeige wäre nett.

Gruß André

Hi,

danke für euer vieles Feedback. Das hilft mir sehr und ist auch weiterhin sehr erwünscht 😉

Ich hatte vorhin schon mal eine Sequenz, die über mehrere Klassen ging, drum war ich verwundert. Hab ich mich getäuscht oder erstellt das Tool normalerweise den vollen Sequenzbaum ab der Methode bis zum letzten Aufruf? Denn dann solltest du das nochmal prüfen.

Sollte eigentlich die komplette Sequenz sein. Habe es gecheckt und es wird in der nächsten Version korrekt funktionieren. Dazu werde ich die Sequenzdiagramme etwas vom Erscheinungsbild überarbeiten.

Was mir allerdings noch fehlt, ist die Beschreibung der Parameter bei den Funktionen (<param ...)
Thomas

Auf der Liste und auch in der nächsten Version mit drin. Danke für deine aufmunternden Worte 😃

@björn
Wäre es mögich, dass du mir die Klasse, in der der Fehler auftritt, zu schickst? Ich habe bereits eine Vermutung warum das passiert und würde diese gerne gegenchecken.

Deine anderen Punkte sind ebenfalls auf der Liste und mit der nächsten Version hoffentlich erledigt 😃

  • Bei der Auswahl des Logos werden keine Bilder angezeigt.
  • Wählt man Neu bleibt die Ansicht innerhalb des Bauen menüs.
  • Bauen kann angeklickt werden, obwohl kein Projekt ausgewählt ist.
  • Eine Fortschrittsanzeige wäre nett.

Das Bild wird in der Tat bisher nicht vom HTML Exporter genutzt. Wird in der nächsten Version, genau wie auch deine anderen Punkte, erledigt sein 😃

Zudem wird in der nächsten Version ein AutoUpdater beinhaltet sein, welcher automatisch das Hauptprogramm und registrierte Plugins aktualisieren kann. Habe ich Samstagabend geschrieben und funktioniert ganz gut bisher.

Danke euch allen noch einmal für die Unterstützung und die netten Worte 😃

Gruß,
Geaz

Hi Geaz!
Ich wollte deine Software mal testen und musste für den Start in die Konfigurationsdatei noch

<loadFromRemoteSources enabled="true"/>

einfügen, damit ich keine Fehlermeldung erhalte.

Gruß
Michael

Hallo Geaz,

habe mir sharpDox 0.8.1 herunter geladen und zu einem Projekt den Bauer gestartet. Dieser brach nach einiger Zeit ab und gab folgendes in der Logfile aus:

SharpDox.Core.exe Information: 0 : 19.02.2013 21:15:09 Neue Konfiguration erfolgreich erstellt.
SharpDox.Core.exe Error: 0 : 19.02.2013 21:15:52 Bauvorgang konnte nicht abgeschlossen werden ...System.ArgumentNullException: Der Wert darf nicht NULL sein.
Parametername: path1
   bei System.IO.Path.Combine(String path1, String path2)
   bei SharpDox.Core.Builder.DiagramController.CreateDiagrams(SDRepository repository, String outputPath)
   bei SharpDox.Core.Builder.BuildController.BuildDocumentation()

Sind hier Einstellungen erforderlich?

Gruß, telfa

@pinki:
Danke für die Info! Werde das in der nächsten Version standardmäßig einbauen.

@telfa:
Es scheint fast so, als würde ich nicht überprüfen, ob in den Einstellungen ein Ausgabepfad angegeben ist. Kann es sein, dass du dort keinen angegeben hast? Werde die Überprüfung in der kommenden Version einbauen.

Kurzer Zwischenstand:
Die meisten bisher gefunden Bugs habe ich bereits entfernt. Dazu habe ich die GUI etwas verfeinert und die Bauausgabe verbessert und einen Fortschrittsbalken eingebaut. Die GUI wird nun auch nicht mehr langsam bei großen Projekten. Der Updater funktioniert auch soweit. Was noch fehlt ist die abschließende Überarbeitung der Sequenzdiagramme. Sobald dies geschehen ist werde ich die neue Version durchtesten und veröffentlichen.

Gruß,
Geaz

Hallo Geaz,

das mit dem Ausgabepfad war die Lösung.
Das Tool macht einen guten Eindruck.
Muss mich aber noch näher damit beschäftigen.

Gruß, telfa

Hi,

super Tool, aber ich würde noch ein paar Dinge verändern:

Start-Form etwas verändern:

  • Bereits vorhandene Projekte wieder aufrufen
  • Kein Freitext-Feld für Namespace-Ignore, sondern das via Reflection selektieren lassen
    -> Also erst alles einlesen, dann filtern, dann bauen (ähnlich wie SandCastle).

HTML Ansicht:

  • Aus der Liste Links eine Treeview des Namespaces machen. Nodes aufklappbar.
  • Klassendiagramm in die Klassenbeschreibung einbetten; keine neue Seite öffnen. Fehlt irgendwie die Relation zur Doku, wenn nur das Bild kommt
  • Syntax-Anzeige ist fehlerhaft
Public Void CDNController()

Korrekt wäre.

public void CDNController()
  • Internal-Icons werden bei Methoden nicht angezeigt
  • Generische Typen fehlen
    Statt List<ClassName> wird nur List angezeigt
  • Wenn generische Typen (bzw. die Platzhalter) als Eigenschaftet verwendet werden geht dies nicht klar aus der Anzeige hervor
  • Man sieht in der Methodenübersicht den Rückgabetyp nicht
  • Wenn eine Klasse von einer anderen erbt wird dies nicht angezeigt. Auch die base-Aufrufe fehlen genauso wie Klassen-Einschränkungen

Bei den Sequenzdiagrammen fehlt der Typ bei generischen Rückgaben ebenfalls.

Wäre super, wenn man beim HTML auch noch eine vollständig durchklickbare Sequenz erstellen könnte. Sprich, dass man nicht nur Bilder hat, sondern dass man sich so durch die Anwendung klicken kann.

Aber super Basis das Tool!
Gute arbeit soweit.

Danke für dieses ausführliche Feedback! Ich werde schauen, ob ich noch einiges davon für die kommende Version umsetzen kann.

Kurz noch einige Gegenfragen:

Das mit der Namespaceauswahl finde ich eine gute Idee. Da muss ich noch überlegen wie ich das am geschicktesten umsetzen kann.

Zum einbetten der Klassendiagramme: Meinst es wäre besser wenn es eine klappbare Sektion innerhalb der Doku wäre? Weil in voller Form will ich die dort nicht einbauen, da die je nach Größe die Übersicht "kaputt" machen würden.

Das mit den navigierbaren Sequenzdiagrammen hatte ich mir auch einmal überlegt. Jedoch habe ich noch keine Idee wie ich das gut umsetzen kann. Die Diagramme werden ja während des Bauvorgangs erstellt und zum Zeitpunkt der Dokuerstellung hat der Exporter keine Information darüber wass in den Bildern tatsächlich enthalten ist (was zum Beispiel zur Erstellung einer Imagemap nötig wäre). Muss mal schauen, ob ich dafür einfach meine Diagramm-Modelle mit an die Methoden-Modelle dranhänge.

Vielen Dank noch einmal für dein Feedback!

Gruß,
Geaz

Hi,

schau Dir einfach mal das an, was SandCastle produziert oder wie die MSDN aussieht.
Dort ist links auch der Namespace und dessen Inhalt dann aufklapptbar - eben als Treeview: zum Beispiel ActionResult Class

Ich weiß nicht wie fit Du bist und wie groß Du Dir Dein Projekt vorstellen magst; aber man kann das schon mit HTML oder WPF lösen.
Du weißt ja wie die Methoden heißen, in welchem Namespace sie sich befinden und was sie alles aufrufen. Das kannst Du quasi alles klickbar machen.
Du kannst Dich ja mal von http://familyshow.codeplex.com/ inspirieren lassen.

Hi,

ersteinmal danke noch einmal für die Hilfe 😃

Das das mit WPF ala Family.Show machbar ist ist klar. Das Problem hier ist ja, dass .pngs generiert werden, welche nun einmal an sich nicht klickbar sind. Dies könnte natürlich in HTML gelöst werden. Zum Beispiel über Imagemaps oder Javascript. Dazu wäre es jedoch notwendig, dass der HTML-Exporter zum Zeitpunkt der Dokuerstellung Kenntnisse über die Position der einzelnen Elemente des Diagramms hat. Diese Informationen hat er momentan leider nicht.
Deswegen meinte ich, dass ich mal schauen muss, ob und wie ich das am geschicktesten lösen kann.

Gruß,
Geaz

0.8.5 ist veröffentlicht 😃

  • Es wurde eine Auto-Update Funktionalität eingebaut, diese kann ebenfalls von Plugins genutzt werden (siehe dazu auf sharpdox.geaz.de die Tutorials)
  • Es wurde ein Fortschrittsbalken für den Bauvorgang eingebaut
  • Die Sequenzdiagramme wurden etwas überarbeitet
  • Die Beschreibung von Parametern wurde in die Dokumentation eingebaut
  • Logos werden nun von der HTML Dokumentation verwendet
  • Ein Fehler wurde behoben, welcher den erneuten Bau einer Dokumentation verhinderte
  • Probleme mit der GUI Performance wurden behoben
  • Eine Überprüfung, ob notwendige Daten eingeben wurden, wurde eingebaut
  • Namespaces werden nun korrekt ausgeschlossen
  • Einige Bugs in der HTML Dokumentation wurden entfernt

Version 0.9 ist online!

Leider musste ich in der neuen Version das Updatesystem entfernen. Es kam zu ein paar Komplikationen. Deswegen muss die neue Version direkt von der Homepage geladen werden.
Hier die paar Änderungen:

  • Ein paar Bugfixes
  • Die standard Sprache wurde auf Englisch gesetzt
  • Eine deutsche Übersetzung wurde hinzugefügt
  • Update entfernt
  • Neues SDK
  • Die Übersetzungsfunktion kann für alle Plugins genutzt werden

Zudem hat das Wordpress Plugin eine Änderung bekommen: Es kann ausgewählt werden, ob nur öffentliche Elemente in der Dokumentation erscheinen sollen. Diese Funktion wird auch später im HTML Plugin hinzugefügt. Zudem bin ich gerade dabei ein Word Plugin zu schreiben.

Gruß,
Geaz

Hallo Geaz

Ich habe das Tool getestet und habe probiert die Dokumentation für einige von meinen Projekten, unter anderem auch LightCore zu bauen.

Dabei kam eine NullReference Exception, gleich am Anfang beim bauen.
StackTrace:> Fehlermeldung:

at SharpDox.Build.Context.BuildContext.BuildDocumentation()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

Die Meldungen lauten wie folgt:> Fehlermeldung:

Starte Bauvorgang...
Lade Lösung. Dauer variiert mit der Projektgrösse...
Die Dokumentation konnte nicht erstellt werden. Object reference not set to an instance of an object.

Du brichst die Ausführung nicht ab, falls eine Exception aufgetreten ist, darum erscheint die Meldung auch in deinem Statustext.
Würde das noch ändern und einen ErrorScreen samt anschliessendem beenden des Programmes einfügen.

Du kannst gerne den LightCore-Quellcode (Siehe Link in meiner Signatur) zum testen nehmen. (Lief auch nur mit dem LightCore.csproj nicht.

Würde mich freuen, wenn du es zum laufen bringst.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

Hallo,

tolles Projekt !

Beim Start erhalte ich allerdings nach längerer Laufzeit den Fehler

Fehlermeldung:
System.ArgumentException wurde nicht behandelt.
HResult=-2147024809
Message=Die Bildabmessungen befinden sich außerhalb des vom Codec unterstützten Bereichs.
Source=SharpDox.Build
StackTrace:
bei SharpDox.Build.Context.BuildContext.BuildDocumentation()
bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()
InnerException: System.Runtime.InteropServices.COMException
HResult=-2003292335
Message=Die Bitmapgröße liegt außerhalb des gültigen Bereichs. (Ausnahme von HRESULT: 0x88982F51)
ErrorCode=-2003292335

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

Hallo BerndFfm

Ich glaube die Projekte sind einfach zu gross, sodass die Bilder zu gross werden.
Am besten wäre wohl, die Software einmal an einem grösseren OpenSource-Projekt ausprobieren.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

Hallo 😃

Danke für eure Rückmeldungen!

Ich habe das Tool getestet und habe probiert die Dokumentation für einige von meinen Projekten, unter anderem auch LightCore zu bauen.
Dabei kam eine NullReference Exception, gleich am Anfang beim bauen.

Die Ursache für den Fehler konnte ich heute früh direkt finden. Ein Update, dass dieses Problem behebt sollte heute Abend online sein. Danke für den Hinweis!

Am besten wäre wohl, die Software einmal an einem grösseren OpenSource-Projekt ausprobieren.

Habe ich eigentlich schon oft und mit einigen Projekten getestet.

Beim Start erhalte ich allerdings nach längerer Laufzeit den Fehler

Den Fehler hatte ich schon einmal bei Projekten mit großen Klassen oder Methoden. Der Fehler sollte unabhängig von der größe des eigentlichen Projektes sein. Ich werde versuchen im nächsten Update ein Fix dafür zu implementieren.

Danke für die Fehlermeldungen!

Gruß,
Geaz

Und noch einmal Hallo 😃

Ich habe Version 0.9.1 hochgeladen. Dadurch sollten die beiden erwähnten Fehler behoben worden sein! Würde mich freuen wenn ihr es ausprobiert und Bescheid gebt.

Gruß,
Geaz

Hallo Geaz

Der Bauvorgang hat geklappt.
Die Icons rechts unten in der Windows-GUI würde ich noch mit einem Text, beim Drüberfahren mit der Maus bestücken. So ist es zu unverständlich.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

Hallo

es freut mich, dass das Programm noch weiter entwickelt wird, ich finde es echt klasse.
Auch mein Problem von damals (s.o.) scheint nicht mehr zu bestehen, ich konnte mein eines Projekt (~170k Zeilen Code) problemlos bauen.
Aber hier kommt bereits eine rund 27 mb große HTML-Datei raus, welche im Firefox schon leicht träge wirkt.

Dann habe ich noch ein weiteres, aber deutlich größeres Projekt eingelesen (~870k Zeilen Code). Die Speicherauslastung deines Programms liegt aktuell bei rund 3,5GB 😉
Allerdings fällt mir auf, dass das einlesen der Klassen am Anfang seehr flott geht, dann irgendwann aber sehr langsam wird. Ich rede hier nicht von Minuten sondern Stunden! Den Diagrammen kann man zuschauen wie sie erstellt werden 😉

Wie gesagt, braucht das Tool seeehr lange. Ich habe es dann einfach nachts durchlaufen lassen (morgens um 8 gestartet). Nach ca. 10.000 Diagrammen ist das Tool dann abgeschmiert mit einer > Fehlermeldung:

System.IO.PathTooLongException
"The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters."

Stacktrace:
at SharpDox.Build.Context.BuildContext.BuildDocumentation()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

Mein "Root" Ordner, in dem ich die Doku speichern wollte hat 47 Zeichen.

Hoffe das hilft und evtl. kann man es noch etwas beschleunigen, den ich find das Teil einfach geil!

Hallo Björn,

wow, danke für diese Rückmeldung! Kenne nicht viele die das so lange hätten laufen lassen 😃

Was die Geschwindigkeit und Speicherauslastung des Tools angeht habe ich mir bereits etwas überlegt! Wollte mal schauen, ob ich das vielleicht sogar noch über Pfingsten umgesetzt bekomme.
Außerdem werde ich das HTML Plugin überarbeiten damit nicht mehr solch riesige Dateien dabei rauskommen.

Und falls es interessiert: Ich habe bereits angefangen ein Plugin für eine Word-Ausgabe zu schreiben. Dieses werde ich dann, nachdem ich die genannten Fehler behoben habe, weiterentwickeln und hoffentlich bald bereitstellen können.

Beste Grüße und Danke,
Geaz

So, endlich ist die neue Version fertig!

Einfach auf der Seite herunterladen und ausprobieren.
Der Bauprozess sollte insgesamt um einiges flotter sein. Außerdem habe ich das html Plugin rausgenommen und durch ein chm Plugin ersetzt. Das html Plugin werde ich überarbeiten und als optionales Plugin auf der Seite anbieten.

Ansonsten habe ich die GUI etwas überarbeitet und den ein oder anderen Bug entfernt und Idee umgesetzt.

Ich hoffe, dass alles klappt. Viel Spaß 😃

Hallo,

ich habe die neue Version mal getestet und sie läuft nun deutlich schneller. Auch lief mein eines Projekt nun durch, die erstelle chm-Datei ist immerhin 300 MB groß 😃

Bin sehr zufrieden mit dem Ergebnis, allerdings ist das HTML-Plugin unbedingt ein muss!

Gruß
Björn

Wollte das Tool mal über ein kleines Projekt ( Android ) "jagen" und bekomme da leider am Schluss gesagt

Starte Bauvorgang ...
Lade Lösung. Dauer variert mit der Projektgröße ...
216081 Codezeilen (7,8 MB) in 843 Dateien in 26 Projekten geladen ...
Lese Lösung. Dauer variert mit der Projektgröße ...
Erstelle Klassendiagramme ...
Erstelle Sequenzdiagramme ...
Starte Exporter: "chm" ...
Die Dokumentation konnte nicht erstellt werden.

Der letzte satz könnte etwas ausführlicher sein.

Bei mir ist die Kaskadierung der Namespaces noch falsch.

Damit Du weißt was ich mein hab ich mal nen Screenshot angehängt.
Die farbigen Bereiche sind quasi Identisch aber kann ich hier nicht zeigen. Man siehts aber exemplarisch auch an den neutralen Bezeichnungen.

Hallo 😃

Wollte das Tool mal über ein kleines Projekt ( Android ) "jagen" und bekomme da leider am Schluss gesagt

Der letzte satz könnte etwas ausführlicher sein.

In der log.txt sollten mehr Infos drin stehen. Im Baufenster sind absichtlich nicht zu viele. Ich weiß, dass es momentan noch ein Problem geben kann, falls im Titel des Projektes Leerzeichen sind. Kann das der Fall sein? Wird in der nächsten Version behoben.

@Abt: Verstehe ich es richtig, dass du die Namespaces die gleich sind unterhalb des "höheren" Namespaces haben möchtest? Oder, dass sie korrekt sortiert werden? Momentan werden die Namespaces einfach alle auf der höchsten Ebene angezeigt.

Gruß,
Geaz

Du benutzt das %tmp% für die chm Erzeugung.
Das ist bei mir aber ein ramdrive mit 1GB und das reicht nicht.

Solltest Du evtl dabeischreiben.

Oh, bin nicht auf die Idee gekommen, dass es nicht ausreichen könnte.
Dann wäre wahrscheinlich der angegebene Ausgabepfad sinnvoller als das Tmp Verzeichnis.

Danke für den Hinweis! Werde ich mit auf die liste für die nächste Version nehmen.

Neue Version mit neuen Features online! Bitte den Startbeitrag lesen 😃

Gruß,
Geaz

Kompliment.
Ich finde sowohl UI, als auch Dokumentation optisch ansprechend. Bei mir (39868 Codezeilen (1,5 MB) in 280 Dateien in 13 Projekten geladen ...) hat es nirgendwo einen Absturz oder gravierende Fehler gegeben. Soll auch mal erwähnt werden.

Früher hatte ich immer NDoc verwendet, was alle meine Anforderungen perfekt erfüllt hat, aber leider irgendwann nicht mehr weiterentwickelt wurde. Sandcastle fand ich schon immer schlimm langsam, daher super, dass es so eine Neuentwicklung gibt.

Wegen meiner früheren Benutzung von NDoc fände ich persönlich noch ein paar Konfigurationsmöglichkeiten schön. Z.B. würde ich es bevorzugen, wenn ich für eine WPF-View (z.B. Page oder UserControl) nicht alle Member der Basisklasse mit angezeigt bekomme (ich weiß, Microsoft macht das auf seiner MSDN auch so, aber für Anwendungscode finde ich das arg unschön).

Ich werde es in nächster Zeit sicher mal intensiver benutzen!

Danke für die Blumen 😃
Es freut mich, dass dir das Tool zusagt!

Wegen meiner früheren Benutzung von NDoc fände ich persönlich noch ein paar Konfigurationsmöglichkeiten schön. Z.B. würde ich es bevorzugen, wenn ich für eine WPF-View (z.B. Page oder UserControl) nicht alle Member der Basisklasse mit angezeigt bekomme (ich weiß, Microsoft macht das auf seiner MSDN auch so, aber für Anwendungscode finde ich das arg unschön).

Finde ich eine sinnvolle Ergänzung. Habe es mir für die nächste Version notiert! Falls du noch weitere Vorschläge hast, würde ich die auch gerne hören.

Beste Grüße,
Geaz

Und ein kleines Update ist online.
Version 0.9.6.1 behebt einen Bug mit CDATA Tags in Dokumentationen. Diese wurden bisher irgnoriert. Außerdem wurden die Textformatierungen etwas angepasst.

Gruß,
Geaz

Hoi Geaz,

erstmal 👍, Dein Tool gefällt mir echt gut. 🙂

Beim ersten Testen, ist mir sharpdox aber in eine Exception gerannt beim Bauen des CHM-Files. Im chm\tmp Verzeichnis waren schon jede Menge Files, allerdings flog er mit folgender Exception raus:

Fehlermeldung:
2013-08-19 13:44:47,390: ERROR – System.IO.FileNotFoundException: Die Datei "D:\Dokumente und Einstellungen\MeinUser\Desktop\test\chm\tmp\MeinProjektName.chm" konnte nicht gefunden werden.
Dateiname: "D:\Dokumente und Einstellungen\MeinUser\Desktop\test\chm\tmp\MeinProjektName.chm"
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
bei System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
bei ChmExporter.ChmFile.SaveTo(String path)
bei ChmExporter.ChmDocExporter.Export(SDRepository repository, String outputPath)
bei SharpDox.Build.Context.Steps.ExportStep.RunAllExporters(BuildContext buildContext)
bei SharpDox.Build.Context.Steps.ExportStep.ProcessStep(BuildContext buildContext)
bei SharpDox.Build.Context.BuildContext.StartBuild()
bei SharpDox.Build.Context.BuildContext.BuildDocumentation()

Habe dann mal lediglich das Output-Verzeichnis auf D:\Work\Sharpdox abgeändert und es nochmal probiert und schon gings.

Eventuell ein Problem wegen des Leerzeichens im Ordnername?

Aber wiegesagt: nur eine Kleinigkeit 🙂

Gruß
SYK

PS: wie vermutlich bereits am Pfad erratbar, habe ich es auf einem deutschen XP probiert

Hallo SomeoneYouKnow,

danke für dein Feedback! 😃

Ich hab den Bug mit auf meine Liste genommen und werde mir den für die nächste Version vornehmen.

Grüße,
Geaz

Version 0.9.7 ist online! Unter anderem ist der Bug oben von "SomeoneYouKnow" behoben. Für Details siehe den ersten Beitrag.

Hallo Ceaz,

Ich hab jetzt auch mal dein Programm getestet.
Optisch sieht es super aus, jedoch scheint es bei mir nicht zu funktionieren.

Habe alle Konfigurationen eingestellt aber erhielt folgenden Fehler:

Gruss,

Tehral

Kannst du mir mal per PM den Inhalt der Log.txt schicken?

Gruß
Geaz

Hallo zusammen,

diesen Fehler hatte ich gerade, als ich eine Zuvor erstellte .chm offen hatte.
An der Stelle könnte man die chm unter einem anderem Namen abspeichern lassen und darauf hinweise das die datei von einem anderem Prozess verwendet wird.

André