Ich schreib Dir das mit Absicht nicht per PN Sebastian; aber zZt sind Deine Reaktionen oft ziemlich niveaulos oder zumindest sehr herablassend wenn eine Anforderung Deinerseits durch einen Entwickler nicht 100% die gleiche Auffassung hat. Ich denke das muss nicht sein, oder?
Die Anforderung JS aktiviert zu haben finde ich nicht schlimm und wird der Sache keinen Abbruch tun.
highlightJS verwende ich bei der QuickIO.NET auch; das passt schon.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Die Verwendung von JavaScript für elementare Funktionen ist wohl mittlerweile nicht mehr eine Frage der persönlichen Vorliebe, sondern - egal wie man selber dazu steht und obwohl es sicher auch gute Gründe gibt, die für deaktiviertes JavaScript sprechen - ganz offensichtlich ein genereller Trend. Das sieht man schon daran, dass Mozilla in einer der letzten Firefox-Versionen die Option, JavaScript zu deaktivieren, aus dem normalen Einstellungsdialog entfernt hat, mit der Begründung, dass mit deaktivierter Einstellung mittlerweile zu viele Webseiten nicht korrekt funktionieren bzw. nicht korrekt dargestellt werden. Insofern scheint es also weitgehend akzeptierter Standard geworden zu sein, dass Webseiten JavaScript zwingend voraussetzen.
Das Thema JavaScript sollten wir in diesem Thread bitte nicht weiter vertiefen, siehe dazu auch Lizenzbedingungen für die Projekte / Spezielle Regeln für Projekte-Threads.
Hi
Also ich habe deine neuste version 0.9.8.4 mal ausprobiert und bin schon positiv überzeugt.
Aber ich bin mir nicht 100% sicher ob ichs falsch bediene oder da ein Fehler drin ist.
Denn zum Beispiel das Schlüsselwort static wird komplett ignoriert. (In Klassendiagrammen wird nichts unterstrichen und in den Funktionsköpfen die du anzeigst wenn man die Methoden einer Klasse anklickt wird static einfach weggelassen). Ist das gewollt?
Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!
Hallo an Alle!
Danke für euer Feedback. Habe auf Grund der Rückmeldungen direkt ein Update hinterhergeschoben.
Siehe ersten Beitrag für Details.
Denn zum Beispiel das Schlüsselwort static wird komplett ignoriert.
Da war in der Tat ein Fehler. Habe es in der neuen Version korrigiert. Wird jetzt in der Syntax angezeigt. Methoden die statisch sind werden zur Zeit nicht im Klassendiagramm markiert. WIrd in der nächsten Version erledigt.
Jedenfalls würde ich dort verdeutlichen, welche Dateien man verwenden kann - z. B. mit einem Filter im OpenFileDialog.
Drin
Ich hab dann noch ein paar kleine Sachen:
- "Void" ist groß geschrieben (siehe Anhang).
- Enums, Structs, Interfaces usw. haben die gleichen Icons im TreeView wie Klassen
- Der SVG-Output scheint einen kleinen Bug zu haben (siehe Anhang). Die Funktion ist diese hier.
- Wenn <exception>-Dokumentationen angegeben sind, wäre es ziemlich gut, wenn sharpDox diese auch bei der Methode anzeigt (siehe ebenfalls verlinkter Code/Anhang)
- Wie wäre es mit Syntax-Highlighting für die Metoden-Signaturen?
Alles behoben bzw. umgesetzt 😃
Grüße Geaz
CustomColor (HTML) ist in der Auswahl komplett leer (weiß) und stürzt beim Klick kommentarlos ab.
Und ich weiß nicht wie ich eine eigene Summary einfüge, um zB die ChangeList der Versionen, wie es SandCastle macht, zu erstellen.
Aber ansonsten finde ich das jetzt so gut, dass ich die Doku von QuickIO.NET darauf umgestellt habe: http://quickIO.NET/help
Ein paar Sachen vergisst er aber. zB der private/internal Inhalt interner Klassen: http://quickio.net/help/#type/NETCompatibility
Besser wäre, wenn interne Klasse absolut nicht auftauchen. Kann man ja eh nicht nutzen.
Und welche Build-Methode nimmt er? Kann das sein, dass er das nicht beachtet?
Meine Projekte haben mehrere Build-Stränge zwischen 2.0 und .NET 4.0.
Weiteres:
* die Reihenfolge im TreeView scheint nicht alphabetisch zu sein.
* be größeren Klassen springt das SVG ganz unten ziemlich hin und her. http://quickio.net/help/#type/QuickIODirectory
Würde ich größer machen bzw. resizable.
* zudem bei Mouse Zoom verändern zoomen alle SVGs einer Seite
* kann man das SVG der Methoden deaktivieren, also die Sequenzdiagramme? Ich will nicht unbedingt, dass jeder in der Doku genau sieht was ich (für ein Sch*) mache, wenn er kein Zugriff auf den Source hat (bei Open Source egal)
* Die Parameter einer Methode sind von deren Beschreibung nicht deutlich genug hervorgehoben finde ich
* Kann man mehrere Sprachen zeitgleich bauen?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Abt,
bitte lad die Version ncoh einmal runter. Dann ist das Problem mit den CustomColors behoben.
Wenn du mit eigener Summary eine eigene "Startseite" meinst, dann reicht es wenn du im Solutionpfad eine readme.md erstellst und mit Inhalt füllst. Kannst dafür die Markdown-Syntax nutzen.
Ein paar Sachen vergisst er aber. zB der private/internal Inhalt interner Klassen
Das dürfte eigentlich nicht passieren. Werde ich zur nächsten Version fixen. Wenn du internal Member nicht mit drin haben möchtest, kannst du diese auch einfach rausfiltern.
Kann man mehrere Sprachen zeitgleich bauen?
Wenn du in mehrere Sprachen dokumentiert hast, wird für jede Sprache eine Dokumentation erstellt.
Build-Methoden werden bisher nicht beachtet.
Aber ansonsten finde ich das jetzt so gut, dass ich die Doku von QuickIO.NET darauf umgestellt habe
Das freut mich zu hören! 😃
Deine weiteren Punkte habe ich mit auf die Liste für die nächste Version genommen. Danke für dieses fixe Feedback!
Gruß
Geaz
Interne Klassen / Methoden kannst direkt ausfiltern. Kann niemand nutzen 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Interne Klassen / Methoden kannst direkt ausfiltern. Kann niemand nutzen 😉 Wenn die Doku für zum Beispiel für (firmen)interne Arbeiten verwendet wird, ist das doch durchaus sinnvoll, denke ich. Man kann es doch in der jetzigen Version einstellen, vielleicht sollte man einfach nur die Standardeinstellung anpassen. Für manche open source-Projekte wäre das u. U. auch sinnvoll, dann man ja eventuell nicht alleine an einem Projekt arbeitet. Und sich eine schöne Doku anzuschauen ist (IMO) besser, als sich die Code-
Annotations anschauen zu müssen. Zumindest um in das Projekt "reinzukommen".
Ich bin sicherlich nicht der einzige, der für mehrere Framework-Versionen kompiliert. Ich mache das, indem ich mehrere Projektdateien habe, die alle auf die selben Dateien referenzierten und jeweils nur mit verschiedenen Präprozessor-Konstanten kompilieren. Ich weiß nicht, wie sharpDox das macht, bzw. ich vermute, dass du einfach die Standard-Release-Builds kompilierst, welche ja (bei mir zumindest) die richtigen Konstanten definiert haben. Leider ist mir nicht ganz klar, welches Projekt letztendlich für die gerenderte Doku verwendet wird. Ziemlich schön wäre es, wenn man die Projekte mit "Aliasen" versehen könnte, sodass man später zwischen den einzelnen Projekten der Solution in der Doku umschalten könnte. Die Aliase dienen dann dazu, um wie bei der MSDN-Doku die entsprechende Framework-Version (= einzelnes Projekt) auswählen zu können.
Ist aber nur eine Idee, die sicherlich verbesserungswürdig ist. Erstmal sollten denke ich die Kernkomponenten fertig werden. Ich wollte sowas nur mal erwähnt haben.
Edit:
Wenn ich diese URL sehe:
http://www.sharpdox.de/doc/index.html#type/Templater
Was ist denn, wenn ich zwei Typen habe, die "Templater" heißen und einfach nur in verschiedenen Namespaces sind?
Vielleicht sollte man lieber den vollqualifizierten Namen haben, wie es auch die neue, Roslyn-Gestütze Reference-Source macht?
http://referencesource.microsoft.com
Das würde ich auch semantisch angebrachter finden.
Die Doku von Sharpdox selbst ist auf meinem Handy (Lumia 925 mit WP8.1, IE11) leider unbenutzbar. Nicht jeder surft mobil auf eine Doku (vermutlich bin ich der einzige), aber solltest du zu viel Zeit haben, könntest du das UI ja ein bisschen mehr responsive machen.
Das sind aber alles nur meine 2 Cent.
Ein paar Sachen vergisst er aber. zB der private/internal Inhalt interner Klassen
Liegt wohl nicht an den internal/private sondern an den "nested classes". Muss mal sehen wie ich die am besten darstelle.
Was ist denn, wenn ich zwei Typen habe, die "Templater" heißen und einfach nur in verschiedenen Namespaces sind?
Der volle Name ist leider keine Option. Hatte ich vorher mal so. Das Problem ist, dass bei Typen oder Mitgliedern dieser sehr lang werden kann. Deswegen erstelle ich jetzt einen kurzen Namen der, über das ganze Projekt hinweg, eindeutig ist. Sollte noch ein Typ "Templater" vorhanden sein würde die Url z.b. bla.de/index.html#type/Templater2 heißen.
Zu den verschiedenen Builds:
Ich finde, dass ist ein super Punkt der jedoch noch eruiert werden müsste. Denn wie man hier sieht sind alleine schon bei zwei Personen zwei verschiedene Herangehensweisen zu finden. Leider ist es mir nicht möglich mit dem Tool alle möglichen Verfahren abzudecken die sich jemand dafür ausdenkt.
Momentan ist es so, dass wenn eine Solution Dokumentation gebaut wird einfach alle Projekte einer Solution berücksichtigt werden.
Bei mir sieht das so aus mit den verschiedenen .NET Frameworks:
http://quickio.codeplex.com/SourceControl/latest#rel/v1.0.1.0/source/QuickIO/QuickIO.csproj
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Framework Condition="'$(Framework)' == ''">NET45</Framework>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45;NET45_OR_GREATER</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>\Debug\QuickIO.xml</DocumentationFile>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Framework Condition="'$(Framework)' == ''">NET45</Framework>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45;NET45_OR_GREATER</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>_Output\Debug\NET45\SchwabenCode.QuickIO.xml</DocumentationFile>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<!--SEVERAL FRAMEWORK SUPPORT -->
<PropertyGroup Condition="'$(Framework)' == 'NET20'">
<DebugType>pdbonly</DebugType>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<Optimize>true</Optimize>
<DefineConstants>NET20;NET20_OR_GREATER</DefineConstants>
<OutputPath>_Output\$(Configuration)\$(Framework)</OutputPath>
<DocumentationFile>_Output\$(Configuration)\$(Framework)\SchwabenCode.QuickIO.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Framework)' == 'NET20'">
<DebugType>pdbonly</DebugType>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<Optimize>true</Optimize>
<DefineConstants>NET20_OR_GREATER;NET30;NET30_OR_GREATER</DefineConstants>
<OutputPath>_Output\$(Configuration)\$(Framework)</OutputPath>
<DocumentationFile>_Output\$(Configuration)\$(Framework)\SchwabenCode.QuickIO.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Framework)' == 'NET35'">
<DebugType>pdbonly</DebugType>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<Optimize>true</Optimize>
<DefineConstants>NET20_OR_GREATER;NET30_OR_GREATER;NET35;NET35_OR_GREATER</DefineConstants>
<OutputPath>_Output\$(Configuration)\$(Framework)</OutputPath>
<DocumentationFile>_Output\$(Configuration)\$(Framework)\SchwabenCode.QuickIO.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Framework)' == 'NET40'">
<DebugType>pdbonly</DebugType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<Optimize>true</Optimize>
<DefineConstants>NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40;NET40_OR_GREATER</DefineConstants>
<OutputPath>_Output\$(Configuration)\$(Framework)</OutputPath>
<DocumentationFile>_Output\$(Configuration)\$(Framework)\SchwabenCode.QuickIO.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Framework)' == 'NET45'">
<DebugType>pdbonly</DebugType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<Optimize>true</Optimize>
<DefineConstants>NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45;NET45_OR_GREATER</DefineConstants>
<OutputPath>_Output\$(Configuration)\$(Framework)</OutputPath>
<DocumentationFile>_Output\$(Configuration)\$(Framework)\SchwabenCode.QuickIO.xml</DocumentationFile>
</PropertyGroup>
<!--<PropertyGroup Condition="'$(Framework)' == 'NET451'">
<DebugType>pdbonly</DebugType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<Optimize>true</Optimize>
<DefineConstants>NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451;NET451_OR_GREATER</DefineConstants>
<OutputPath>_Output\$(Configuration)\$(Framework)</OutputPath>
<DocumentationFile>_Output\$(Configuration)\$(Framework)\$(MSBuildProjectName).xml</DocumentationFile>
</PropertyGroup>-->
Und weiter unten dann
<!-- BUILD LOGIC TO SUPPORT SEVERAL .NET VERSIONS -->
<Target Name="AfterBuild">
<MSBuild Condition="'$(Framework)' == 'NET30'" Projects="$(MSBuildProjectFile)" Properties="Framework=NET20" RunEachTargetSeparately="true" />
<MSBuild Condition="'$(Framework)' == 'NET35'" Projects="$(MSBuildProjectFile)" Properties="Framework=NET30" RunEachTargetSeparately="true" />
<MSBuild Condition="'$(Framework)' == 'NET40'" Projects="$(MSBuildProjectFile)" Properties="Framework=NET35" RunEachTargetSeparately="true" />
<MSBuild Condition="'$(Framework)' == 'NET45'" Projects="$(MSBuildProjectFile)" Properties="Framework=NET40" RunEachTargetSeparately="true" />
<!--<MSBuild Condition="'$(Framework)' == 'NET451'" Projects="$(MSBuildProjectFile)" Properties="Framework=NET45" RunEachTargetSeparately="true" />-->
</Target>
Hat den Vorteil, dass ich nicht mehrere Solutions pflegen muss und alles mit einem Knopfdruck erstellt wird.
Ich würde auch nicht alle Verfahren abdecken; aber mein Vorgehen ist zB das "Standardverhalten von MSBuild" 😛: es fängt mit dem niedrigsten an und baut dann alles nach und nach.
Da aber sharpDox mir Async-Dokumentationen erstellt gehe ich davon aus, dass die .NET Version für die Doku verwendet wird, die aktuell im Projekt eingestellt ist.
Wenn jemand das mit mehreren Solutions abdeckt, dann soll er halt mehrmals eine Config für jede Solution haben.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Deswegen erstelle ich jetzt einen kurzen Namen der, über das ganze Projekt hinweg, eindeutig ist. Sollte noch ein Typ "Templater" vorhanden sein würde die Url z.b. bla.de/index.html#type/Templater2 heißen. Hat das dann den folgenden Nebeneffekt?
Klasse: A.Templater --> type/Templater
Klasse: B.Templater --> type/Templater2
Klasse A.Templater wird in einen Namespace "C" verschoben und die Doku wird neu erstellt.
Klasse: B.Templater --> type/Templater (vorher type/Templater2)
Klasse: C.Templater --> type/Templater2 (vorher type/Templater)
Oder machst du was, damit ein bereits in einem vorherigen Build benutzter Name nicht noch einmal an einen andern Typen vergeben wird?
(Externe?) Verlinkungen, die ursprünglich auf A.Templater zeigten, zeigen nun auf B.Templater, obwohl sie in einem 404 enden sollten.
Ich weiß natürlich nicht, in welcher Reihenfolge du die Typen abarbeitest, ich gehe aber davon aus, dass sich diese beeinflussen lässt. Ob das nun mit dem Namespace-Namen oder irgendeiner Buid-Reihenfolge ist, spielt für das Problem ja keine Rolle.
Das Problem ist, dass bei Typen oder Mitgliedern dieser sehr lang werden kann. Ich sehe hier kein Problem. Beim Reference-Source könenna uch sehr lange URLs zustande kommen.
ht****tp://referencesource.microsoft.com/#PresentationFramework.Aero/src/Themes/Aero/Microsoft/Windows/Themes/ProgressBarHighlightConverter.cs#31
nicht mehrere Solutions pflegen muss und alles mit einem Knopfdruck erstellt wird. Bei meiner Herangehensweise habe ich auch nur eine Solution mit mehreren Projekten, die ebenfalls alle gleich (nacheinander) erstellt werden. Der Vorteil dabei ist, dass ich nicht nur für das Desktop-.NET, sondern auch für Silverlight, WP bzw. PCL und anderen Framework-Derivaten kompilieren kann, die auch teilweise leicht unterschiedliche Verweise haben. Das geht mit reinen Build-Konfigurationen/Compilerkonstanten in einem Projekt leider nicht so ohne Weiteres.
Ich glaub der erste Quote war nicht ich sondern Gaez.
Bzgl. dem Build redest Du nun aber von Plattformen, nicht von Framework-Versionen.
Du musst das evtl. deutlicher ausdrücken. Willst Du gegen verschiedene .NET Versionen arbeiten, oder gegen verschiedene Projekttypen.
Im Endeffekt ist aber auch das nur - wie bei mir - ein Unterschied der Precompiler Directives. Musst das using eben auch noch in ein #if packen; Projektverweise spielen hier eh keine Rolle.
In SandCastle kannst Du hier auf die wirkliche DLL verweisen; das geht hier eben nicht.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Bzgl. dem Build redest Du nun aber von Plattformen, nicht von Framework-Versionen. Die Plattformen verwenden fast alle verschiedene Framework-Derivate, wie z. B. Silverlight oder WP8.
Projektverweise spielen hier eh keine Rolle. Wie will ich dann Code eines Projektes nur mit Hilfe von Präprozessordirektiven für z. B. Silverlight compilen? Das geht nur mit Setup separatem Projekt - oder habe ich da was übersehen?
Aber ja - ich hab mich dort vermutlich nicht ganz korrekt ausgedrückt. Ich meine sowohl Framework-Versionen als auch Plattformen.
Diese Fachsimpelei ist zwar interessant, aber leider in diesem Thread OT. Wir können die Unterhaltung aber gerne wo anders weiterführen.
Eine Möglichkeit, um diese in der Doku gesondert zu behandeln (siehe Anhang) wäre außerordentlich schön - so wie es in der MSDN geht. Man müsste aber schauen, wie man die verschiedenen Herangehensweise für die Cross-Compilation unter einen Hut bekommt.
Hallo zusammen,
habe ein kleines Update veröffentlich, dass ein paar Bugs fixed und die HTML Doku etwas verbessert (Darstellung von Klassendiagrammen verbessert und Informationen zu Mitgliedern wenn diese ausgeklappt werden sollten übersichtlicher sein). Hoffentlich 😃
Gruß
Geaz
Danke.
mir ist grad aufgefallen, dass die Reihenfolge des Menus immer noch nicht passt.
Der "Unternamespace" "Transfer.Events" ist vor dem Mutter-Namespace "Transfer" zu finden.
http://quickio.net/help
Kann man in den Footer noch irgendwie was eigenes rein setzen?
Bla bla "latest release on ... xx", eigenes Impressung, Haftung etc...
Grüße
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Jep, habe ich noch auf der Liste. Wird im nächsten Release behoben.
Zudem habe ich den Wunsch für den benutzerdefinierten Footer aufgenommen.
Zudem ist mir gerade aufgefallen, dass es ein Problem gibt mit dem Klassendiagramm auf der rechten Seite. Falls ein Element "zulang" ist, dann wird das Diagramm zu klein.
Gruß
Geaz
P.S.: @Abt: Kann es sein das dein Server die css Dateien lange cached oder hast du vergessen eine neue hochzuladen? Die Seite wird zwar mit den neuen Elementen aus Version 0.9.8.6 gerendert, aber mit dem css von Version 0.9.8.5
Ja kann gut sein.
Beitreibe meine Seiten auf Azure und hab nen CDN (CloudFlare, spart mir 80-90% an Last bei statischen Seiten) vorgeschalten.
Die CSS-Datei aufm Server ist 58071 Bytes groß; eine andere zuverlässigere Angabe hab ich nicht.
Du kannst das aber mit Parametern steuern.
zB in Deinem HTML style.css?version=0986
Dann wird das Style immer noch gecached; aber durch den Parameter bei Bedarf aktualisiert.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Neue Version online! Diesmal mit erweiterten SVG Klassendiagrammen für die HTML Ausgabe.
Siehe Anhang für eine kleine Vorschau.
Changelog:
Danke. Klappt super.
Wie bildet sich bei mir die Style Version
<link rel="stylesheet" type="text/css" href="../assets/css/style.css?version=0931"/>
Weil die Version von sDox ist ja 0987.
PS: mir fällt auf: dem Autor kann man keinen Link hinterlegen in der Fußzeile 8) 😁
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi,
Die überarbeiteten Klassendiagramme sind Klasse
Mir ist aber etwas aufgefallen. Ich kann kein genaues Muster erkennen aber wenn ich im Klassendiagramm Methoden anklicke kommt sehr oft "Seite nicht gefunden" als Fehler.
Das passiert sowohl im Chrome als auch im Opera oder Firefox.
Jedoch im Opera immer. Bei den anderen Browsern nur manchmal.
Nehmen wir an eine Klasse hat ein Member _solution. da Klicke ich drauf
da kommt dann
file:///C:/Users/Don/Desktop/Dokum/Calc09114/Html/default/index.html#type/Calculate?_solution
da steht dann die "Seite nicht gefunden" Fehlermeldung und wenn ich aber die Seite neu lade wird die Seite mit ausgeklapptem Text von _solution plötzlich angezeigt.
Das habe ich jetzt mit meinen 3 Browsern auf meinen 3 PCs ausprobiert und immer das gleiche.
Edit:
Im Opera steht offenbar nach dem "?" in der URL kein Parameter dahinter also in diesem Beispiel fehlt das _solution nach dem ?
Edit2: Hab glaube die Ursache aber trotzdem eigenartig
Im Firefox kommt auch kein Parameter und das Fragezeichen wird auch nicht geschrieben.> Fehlermeldung:
Die Dateien unter /C:/Users/Don/Desktop/Dokum/Calc09114/Html/default/method/RechnerOperatorBaum.TermParser.TryParse(System.String, RechnerOperatorBaum.NodeCollection&).html konnten nicht gefunden werden.
die Dazugehörige URL
file:///C:/Users/Don/Desktop/Dokum/Calc09114/Html/default/index.html#type/NodeMapper2[Hierfehlt der Parameter]
Das Problem steckt hier:
Ich bin mir auch nicht sicher wie da in den Funktionskopf der angeklickten Methode das "&" Zeichen hineingeraten sein kann denn in meinem Projekt habe ich das nicht in der Quelldatei:
public Boolean TryGetNode(String s, Node& nodeToken)
Da wird natürlich jetzt der übergebene Parameter unterbrochen und die Seite nicht gefunden
Ich bin mir jetzt nicht sicher ob die beiden Fälle mit _solution und TryGetNode() ähnliche Ursachen haben
Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!
Ich hab mir die vorherigen Beiträge nicht durch gelesen, daher entschuldigt bitte, wenn sich manche Hinweise wiederholen.
SharpDox habe ich mir nochmal neu herunter geladen und ausprobiert.
Seit der letzten Version, die ich vor Monaten mal gesehen habe, bin ich positiv überrascht.
Ich finde, die GUI sieht klasse aus, die Textboxen mit den farblich verschiedenen Waterproof-Schriften, die Icons dahinter, etc. finde ich toll. ^^
Auch die Web-Ausgabe sieht toll aus.
Ein paar kleine Punkte habe ich aber trotzdem:
Hauptfenster:
HTML-Ausgabe:
Ist an sich nur Kleinkram, Verbesserungsideen.
Mehr Zeit zum Testen finde ich leider nicht, aber ich werde es in Zukunft aktiv nutzen, gerade für OpenSource-Projekte ^^
Gruß
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Und noch eine Kleinigkeit habe ich:
In der HTML Ansicht einer Klasse hast du ja oben
[Felder] [Ereignisse] [Methoden] [Eigenschaften]
Wenn ich jetzt z.B. 30-40 Felder oder Methoden oder so habe dann stoßen wir auf das Problem, dass wenn ich da drauf klicke und die Dropdownliste anzeige, dass hier natürlich nicht alle auf den Bildschirm Passen.
Scrolle ich nun nach unten so scrollt aber die Liste nicht mit. Also sehe ich niemals die unteren Einträge.
Ideal wäre es wenn die Dropdownliste hier scrollbar wäre. Das ist aber nicht sooo tragisch weil die Methoden ja auch so nochmal aufgelistet sind.
Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!
Ok, ich hab ne Exception:
Dem Log entnommen:
Fehlermeldung:
System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.
bei SharpDox.Model.Repository.SDType.get_NameWithTypeArguments()
bei System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() bei System.Collections.Generic.List
1..ctor(IEnumerable1 collection) bei System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source)
bei SharpDox.Model.Repository.SDType.GetTypeArgumentText()
bei SharpDox.Model.Repository.SDType.get_NameWithTypeArguments()
bei SharpDox.Model.Repository.SDType.get_Fullname()
bei SharpDox.Build.Parser.TypeParser.AddParsedInterfaces(SDType sdType, IEnumerable1 implementedInterfaces) bei SharpDox.Build.Parser.TypeParser.GetParsedType(IType type, Boolean isProjectStranger) bei SharpDox.Build.Parser.TypeParser.AddParsedNestedTypes(SDType sdType, IEnumerable
1 nestedTypes)
bei SharpDox.Build.Parser.TypeParser.ParseTypeToModel(SDType sdType, IType type)
bei SharpDox.Build.Parser.TypeParser.GetParsedType(IType type, Boolean isProjectStranger)
bei SharpDox.Build.Parser.TypeParser.ParseProjectTypes(CSharpProject project)
bei SharpDox.Build.Context.Step.ParseStep.ParseTypes()
bei SharpDox.Build.Context.Step.ParseStep.ParseSolution(CSharpSolution solution, List`1 excludedIdentifiers)
bei SharpDox.Build.Context.BuildContext.BuildDocumentation()
Ich habe dein Programm auf System.Windows.Forms los gelassen.
Wenn ich mich nicht irre, dann habe ich das von http://referencesource.microsoft.com/#System.Windows.Forms.
Es hat anfangs ziemlich langsam gearbeitet und brach dann ab.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Erst einmal vielen Dank für die Rückmeldungen! Es freut mich, dass ich Feedback bekomme und, dass das Tool immer mehr Anklang findet 😃
@Abt: Die Version des CSS ist die Versionsnummer des HTML-Plugins. Diese ist eine andere als die des Tools selber. Wegen der Verlinkung des Autors werde ich mir was einfallen lassen 😉
@thetruedon: Ich glaube, dass du da direkt zwei Bugs gefunden hast 😃 Einmal scheint es im Opera tatsächlich ein Problem mit dem JS zu geben. Werde ich für die nächste Version fixen. Das was du da gefunden hast (das mit dem "&") ist noch etwas anderes. Das werde ich mir mal genauer ansehen. Danke für die Analyse!
Die Listen in dem Header werde ich so anpassen, dass diese unabhängig von der Seite selber scrollbar sind.
@Palladin007: Danke auch für dein Feedback und die Verbesserungsvorschläge! Werde schauen was ich davon für die nächste Version schaffe 😃
Zu dem Bug: Das scheint ein Problem mit der eingebundenen NRefactory Version zu sein. Wenn ich eine neuere einbinde wird die Dokumentation bei mir korrekt gebaut. Werde die neue Version von sharpDox mit einem NRefactory Update ausliefern.
So, dass war es von meiner Seite. Falls ihr noch weitere Dinge findet oder euch noch etwas auffällt, immer her damit. 😃
Beste Grüße
Die Icons der HTML-Doku beginnen mit Großbuchstaben. Im Quelltext werden sie allerdings komplett kleingeschrieben referenziert, was dazu führt, dass es z. B. bei den github-Pages (oder jedem anderen Linux-Webserver?) ein 404 gibt.
Bei Enums fände ich es schön, wenn man irgendwo den tatsächlichen Wert eines Enum-Members stehen hätte. Ich bin wahrscheinlich der einzige Mensch auf dem Planeten, der das brauchen würde, deshalb würde ich es - wenn du es überhaupt machst - abschaltbar machen.
Bei Enums fände ich es schön, wenn man irgendwo den tatsächlichen Wert eines Enum-Members stehen hätte. Ich bin wahrscheinlich der einzige Mensch auf dem Planeten, der das brauchen würde, deshalb würde ich es - wenn du es überhaupt machst - abschaltbar machen.
nö das wäre auch für mich interessant bzw. für alles Win32 nahes, da hier doch viel mit Hex-Enums gearbeitet wird.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Die Icons der HTML-Doku beginnen mit Großbuchstaben. Im Quelltext werden sie allerdings komplett kleingeschrieben referenziert, was dazu führt, dass es z. B. bei den github-Pages (oder jedem anderen Linux-Webserver?) ein 404 gibt.
Hast du deine Doku mit der neusten Version gebaut? Hatte genau das Problem nämlich in der neusten Version behoben (bei Git musst du die alten Icons erst einmal löschen und dann neu hinzufügen, da er sonst die Änderung bei der Namensgebung der Icons nicht erkennt).
Das andere werde ich mir auch auf die Liste schreiben.
Gruß
Ich bekomme eine neue Exception:
Fehlermeldung:
2014-05-02 09:23:41,360: ERROR – System.InvalidOperationException: Fehler beim Vergleichen von zwei Elementen im Array. ---> System.ArgumentException: Mindestens ein Objekt muss IComparable implementieren.
bei System.Collections.Comparer.Compare(Object a, Object b)
bei System.Collections.Generic.ArraySortHelper1.InternalBinarySearch(T[] array, Int32 index, Int32 length, T value, IComparer
1 comparer)
bei System.Collections.Generic.ArraySortHelper1.BinarySearch(T[] array, Int32 index, Int32 length, T value, IComparer
1 comparer)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Collections.Generic.ArraySortHelper1.BinarySearch(T[] array, Int32 index, Int32 length, T value, IComparer
1 comparer)
bei System.Collections.Generic.List1.BinarySearch(Int32 index, Int32 count, T item, IComparer
1 comparer)
bei SharpDox.Build.Parser.TypeParser.AddParsedTypeParameters(SDType sdType, IEnumerable1 typeParameters) bei SharpDox.Build.Parser.TypeParser.ParseTypeToModel(SDType sdType, IType type) bei SharpDox.Build.Parser.TypeParser.GetParsedType(IType type, Boolean isProjectStranger) bei SharpDox.Build.Parser.TypeParser.ParseProjectTypes(CSharpProject project) bei SharpDox.Build.Context.Step.ParseStep.ParseTypes() bei SharpDox.Build.Context.Step.ParseStep.ParseSolution(CSharpSolution solution, List
1 excludedIdentifiers)
bei SharpDox.Build.Context.BuildContext.BuildDocumentation()
Diesmal habe ich ein eigenes Projekt genommen, das noch recht klein ist.
Hauptsächlich Interfaces, die ich mir in eine Doku legen wollte um den Überblick leichter halten zu können.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Ist es eigentlich gewollt, dass ich wenn ich ein Klassen- oder Sequenzdiagramm per Mausrad "zoome" gleichzeitig auch alle anderen Diagramme mitzoome?
Ich meine es ist jetzt grundsätzlich nicht störend aufgefallen aber sieht irgendwie wie ein ungewollter Seiteneffekt aus.
Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!
Der Fehler von Palladin007 wird in der nächsten Version behoben sein.
@thetruedon: Der Fehler sollte, wie das mit den Icons, in der letzten Version behoben worden sein. Bitte tausch mal deine komplette Doku aus, damit sowas nicht passiert. Scheint als wäre da noch irgendwo altes JS mit drin.
Gruß
Wie kommt man denn bei der neuen Version an die Klassendiagramme?
Die sind immer nur in der HTML mit dabei, aber nicht einzelnd
Ich glaube, das geht nicht.
Aber vielleicht kann der Entwickler das noch einbauen, oder über ein Plugin lässt sich das bestimmt auch machen.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Das sind SVG-Informationen, keine Bilder alá JPEG....
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Aktuell sind die Diagramme nur in der HTML Doku als SVG enthalten. In der kommenden Version
werde ich versuchen eine Funktion zum speichern einzelner Diagramme einzubauen.
Sollte man nicht warten können oder dies nicht ausreichen, ist es in der Tat möglich ein eigenes Plugin zu schreiben, dass z.B. lediglich alle Diagramme in ein Ausgabeverzeichnis speichert.
Grüße
Ja das wäre schön, wenn das funktionieren würde. Was vielleicht auch sinnvoll ist, wäre die Größenverstellung der einzelnen Bereiche, sodass man die Klassendiagramme größer machen kann und mehr sieht.
btw. super Arbeit und spitzen Programm, danke dafür!
Ich bekomme eine neue Exception:
Fehlermeldung:
2014-05-02 09:23:41,360: ERROR – System.InvalidOperationException: Fehler beim Vergleichen von zwei Elementen im Array. ---> System.ArgumentException: Mindestens ein Objekt muss IComparable implementieren.
bei System.Collections.Comparer.Compare(Object a, Object b)
bei System.Collections.Generic.ArraySortHelper1.InternalBinarySearch(T[] array, Int32 index, Int32 length, T value, IComparer
1 comparer)
bei System.Collections.Generic.ArraySortHelper1.BinarySearch(T[] array, Int32 index, Int32 length, T value, IComparer
1 comparer)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Collections.Generic.ArraySortHelper1.BinarySearch(T[] array, Int32 index, Int32 length, T value, IComparer
1 comparer)
bei System.Collections.Generic.List1.BinarySearch(Int32 index, Int32 count, T item, IComparer
1 comparer)
bei SharpDox.Build.Parser.TypeParser.AddParsedTypeParameters(SDType sdType, IEnumerable1 typeParameters) bei SharpDox.Build.Parser.TypeParser.ParseTypeToModel(SDType sdType, IType type) bei SharpDox.Build.Parser.TypeParser.GetParsedType(IType type, Boolean isProjectStranger) bei SharpDox.Build.Parser.TypeParser.ParseProjectTypes(CSharpProject project) bei SharpDox.Build.Context.Step.ParseStep.ParseTypes() bei SharpDox.Build.Context.Step.ParseStep.ParseSolution(CSharpSolution solution, List
1 excludedIdentifiers)
bei SharpDox.Build.Context.BuildContext.BuildDocumentation()
Diesmal habe ich ein eigenes Projekt genommen, das noch recht klein ist.
Hauptsächlich Interfaces, die ich mir in eine Doku legen wollte um den Überblick leichter halten zu können.
Genau das passiert mir auch bei allen meinen Projekten : (
Danke für die Information. Der Fehler wurde bereits für die kommende Version behoben.
Diese wird wahrscheinlich noch diese Woche erscheinen.
Version 0.9.8.8 online!
Sollten einige Verbesserungen dabei sein 😃
Hi,
irgendwas stimmt jetzt am Logo nicht mehr. Ist riesig.
Mit der Version davor gings: http://quickio.net/help
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ui, in der Tat. Das ist ein Fehler der durch eine CSS-Änderung enstanden ist.
Falls du möchtest, kannst du einfach die folgende Änderung in die style.css eintragen. Dann sollte es behoben sein:
#sitetitle img {
height: 50px;
}
EDIT:
Kannst dir jetzt auch einfach noch einmal das neue Release runterladen. Habe dort schnell die Änderung eingebaut.
Lokal funktionierts, danke.
Online muss ich den nächsten Cache-Zyklus abwarten 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Geaz,
ich hab noch das Problem mit der readme.md.
Was muss ich machen, damit diese in die Doku kommt? Ich habe sie im Solutionordner aber sie taucht nach dem Build nirgends auf.
Kann ich auch mehrere MDs hinzufügen?
Home.md
VersionHistory.md
License.md
....?
Wenn du mit eigener Summary eine eigene "Startseite" meinst, dann reicht es wenn du im Solutionpfad eine readme.md erstellst und mit Inhalt füllst. Kannst dafür die Markdown-Syntax nutzen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Abt,
in der letzten Version hat sich ein wenig verändert. Deshalb wird dies nun anders bewerkstelligt. Schau einfach mal hier rein:
http://doc.sharpdox.de/#article/de.advanced-tutorial
Kurz:
Wenn du deine Solution-Datei als Input zum Bau der Doku nutzt, muss die Datei nicht mehr "readme.md" heißen, sondern "default.sdpd".
Du kannst auch weitere Seiten hinzufügen (Version History usw.). Damit diese im Menü angezeigt und genutzt werden, musst du eine eigene Navigationsdatei erstellen und diese dann zum Bauen deiner Doku nutzen. (Siehe Punkt "Navigation" im oberen Link).
Falls das deine Fragen nicht beantworten sollte, sag einfach bescheid.
Problem doch gelöst.
Die SDA-Verweise sind offensichtlich Case-Sensitive.
Danke für die Info.
Ich tu mich ehrlich gesagt etwas schwer, da die Beschreibung - für mich - nicht 100% nachvollziehbar ist.
Ich hab mir jedoch mit Hilfe von Deinem Source auf https://github.com/Geaz/sharpDox/tree/master/Documentation angeschaut, wie Du das gemacht hast und das auch nachgebildet.
Ich bekomme jedoch beim Bauen wahrscheinlich einen Fehler.
Jedenfalls wird die Leiste, die unter dem "Bauen"-Button ist, Rot. Ich sehe aber keine Fehlermeldung.
Die Navigation habe ich als Startprojekt gewählt (default.sdnav):
-Home#home -Version History#versionhistory -FAQ#faq -License#license -Examples -QuickIO.NET API#QuickIONET.sln
Ein Teil wird offensichtlich doch gebaut, denn ich bekomme den "Home"-Button in der HTML auch mit korrektem Text angezeigt. Aber wie gesagt schlägt das offensichtlich alles fehl.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Probier einmal:
-Home#home
-Version History#VersionHistory
-FAQ#faq
-License#license
-Examples
-QuickIO.NET API#QuickIONET.sln
Kann gut sein, dass ich hier dummerweise case sensitive arbeite.
EDIT: War ich wohl zu spät 😃
Hab den Beitrag bereits editiert gehabt; war das Case-Sensitive-Verhalten. Danke 😃
Aber: der Markdown scheint nicht korrekt implementiert zu sein.
* Single Linebreak
XXXXXXXXX.
YYYYYYYYY. ZZZZZZZZZZZ.
wird
XXXXXXXXX.YYYYYYYYY. ZZZZZZZZZZZ.
* Header-Varianten ab ### (h3) sind alle gleich
Und wie kann ich im Markdown auf SDA-Dateien verweisen?
Nur "#license" geht jedenfalls nicht 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Abt,
In Markdown wird ein Zeilenumbruch durch zwei oder mehr Leerzeichen in der vorangegangenen Zeile erstellt. Willst du einen Absatz musst du zwei Zeilenumbrüche machen. Ist bei Wikipedia gut erklärt. Schau mal dort.
Bei den Überschriften gehen ich davon aus, dass es ein CSS Problem ist. Werde ich mir später mal anschauen.
Einen Artikel verlinken kannst du z.B. so:
License
Siehe dazu auch den Punkt "Links": http://doc.sharpdox.de/#article/de.advanced-tutorial
Grüsse
ok, dann scheint das in dem Trackingtool, mit dem ich sonst "Markdown" betrieben hab, einfach anders zu ticken 😉
Danke für die Hinweise.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi,
ist Dir schon aufgefallen, dass das erzeugte HTML des Markdown nicht kompatibel mit dem IE 10 ist?
Wenn man die Methoden auflistet, dann kann man ja eine anklicken. Evtl wäre es schön, dass man sieht, dass sich da was aufklappen kann (die Beschreibung der Parameter)
Im Titel, wo Fields() Methods() Properties() steht, sind rechts zwei Buttons.
Da im IE keine Icons angezeigt werden, sehe ich nicht, was die Buttons tun. Das eine wird "Drucken" sein, weil sich der Druckdialog öffnet. Trotzdem wärs schön, wenn die Icons tun und/oder wenigstens ein Tooltip integriert ist.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Abt,
danke für die Meldung. Ich habe im dev Branch bereits einige Anpassungen für den IE vorgenommen. Diese sollten hoffentlich auch die Probleme im IE10 beheben. Werde das vor dem nächsten Release noch einmal testen.
Grüße