published on
tags: csharp dotnet OctoAwesome SHFB

Sandcastle Help File Builder Zeichensatz Fehler

Sandcastle ist eine Software, die in VisualStudio integriert die Dokumentationstags aus dem Programmcode in z.B. eine Online-Dokumentation oder eine Windows-Hilfe-Datei umwandelt. Ein Beispiel für eine solche Online-Dokumentation findet man zum Beispiel beim Projekt OctoAwesome: doc.octoawesome.net. Um diese Dokumentation ging es auch, als ein komischer Fehler zum ersten mal auftrat.

Als Zeilformat wurde „Website“ mit dem Style VS2013 ausgewählt, als Sprache Deutsch. Keine abenteuerliche Konfiguration. Der erste Build wirft aber schon Fehler (output_path ist der Zielordner des Projekts):

BuildAssembler : error : SharedContentComponent: The shared content file &#39;<output_path>\Working\SHFBContent.xml&#39; is not well-formed. The error message is: Ungltiges Zeichen in der angegebenen Codierung. Zeile 15, Position 36. (Line Number: 15; Line Position: 36; Source URI: &#39;file:///<output_path>/Working/SHFBContent.xml&#39;)[<output_path>\Working\BuildReferenceTopics.proj]

Nur warum bloß? Meine erste Idee war es, dass die Umlaute aus dem Projektcode Probleme machen. Aber nein, die liegen nicht in der angegebenen Datei. Der Inhalt stammt aus dem Template. Aus irgendeinem Grund wird diese Datei in der Kodierung ANSI geschrieben, enthält aber UTF-8 Zeichen (Alle anderen Dateien aus dem Template mit Umlauten funktionieren, btw). Um das Problem zu beheben, muss nur die Kodierung der Datei geändert werden. Wie man das mit Notepad++ macht, zeige ich hier.

  1. Notepad++ als Administrator starten (Wichtig, sonst hat man keine Schreibrechte auf die Datei)
  2. Datei C:\Program Files (x86)\EWSoftware\Sandcastle Help FileBuilder\PresentationStyles\VS2013\SHFBContent\de-DE.xml öffnen (auf einem 64bit Windows, bei 32bit muss der Pfad angepasst werden).
  3. Im Menü Kodierung “UTF-8” auswählen.
  4. Die Datei abspeichern.

Der Rebuild des Dokumentationsprojekts sollte jetzt problemlos funktionieren.