/// <summary> /// Uses XSLT to transform the current document into LaTeX source. /// </summary> private void WriteTeXDocument( Workspace workspace, XmlDocument document) { XmlWriter writer; XsltArgumentList args; XslTransform transform; OnDocBuildingStep(0, "Loading XSLT files..."); transform = new XslTransform(); transform.Load(Path.Combine(workspace.ResourceDirectory, "document.xslt")); args = new XsltArgumentList(); writer = new XmlTextWriter(LatexConfig.TexFileFullPath, new UTF8Encoding( false ) ); OnDocBuildingStep(20, "Building TeX file..."); #if(NET_1_0) //Use overload that is obsolete in v1.1 transform.Transform(document, args, writer); #else //Use new overload so we don't get obsolete warnings - clean compile :) transform.Transform(document, args, writer, null); #endif writer.Close(); }
/// <summary>See <see cref="IDocumenter"/>.</summary> public override void Build(Project project) { try { OnDocBuildingStep(0, "Initializing..."); //Get an Encoding for the current LangID CultureInfo ci = new CultureInfo(MyConfig.LangID); currentFileEncoding = Encoding.GetEncoding(ci.TextInfo.ANSICodePage); // the workspace class is responsible for maintaining the outputdirectory // and compile intermediate locations workspace = new MsdnWorkspace( Path.GetFullPath( MyConfig.OutputDirectory ) ); workspace.Clean(); workspace.Prepare(); // Write the embedded css files to the html output directory EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.Msdn.css", workspace.WorkingDirectory); // Write the embedded icons to the html output directory EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.Msdn.images", workspace.WorkingDirectory); // Write the embedded scripts to the html output directory EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.Msdn.scripts", workspace.WorkingDirectory); if ( ((string)MyConfig.AdditionalContentResourceDirectory).Length > 0 ) workspace.ImportContentDirectory( MyConfig.AdditionalContentResourceDirectory ); // Write the external files (FilesToInclude) to the html output directory foreach( string srcFilePattern in MyConfig.FilesToInclude.Split( '|' ) ) { if ((srcFilePattern == null) || (srcFilePattern.Length == 0)) continue; string path = Path.GetDirectoryName(srcFilePattern); string pattern = Path.GetFileName(srcFilePattern); // Path.GetDirectoryName can return null in some cases. // Treat this as an empty string. if (path == null) path = string.Empty; // Make sure we have a fully-qualified path name if (!Path.IsPathRooted(path)) path = Path.Combine(Environment.CurrentDirectory, path); // Directory.GetFiles does not accept null or empty string // for the searchPattern parameter. When no pattern was // specified, assume all files (*) are wanted. if ((pattern == null) || (pattern.Length == 0)) pattern = "*"; foreach(string srcFile in Directory.GetFiles(path, pattern)) { string dstFile = Path.Combine(workspace.WorkingDirectory, Path.GetFileName(srcFile)); File.Copy(srcFile, dstFile, true); File.SetAttributes(dstFile, FileAttributes.Archive); } } OnDocBuildingStep(10, "Merging XML documentation..."); // Will hold the name of the file name containing the XML doc string tempFileName = null; try { // determine temp file name tempFileName = Path.GetTempFileName(); // Let the Documenter base class do it's thing. MakeXmlFile(project, tempFileName); // Load the XML documentation into DOM and XPATH doc. using (FileStream tempFile = File.Open(tempFileName, FileMode.Open, FileAccess.Read)) { FilteringXmlTextReader fxtr = new FilteringXmlTextReader(tempFile); xmlDocumentation = new XmlDocument(); xmlDocumentation.Load(fxtr); tempFile.Seek(0,SeekOrigin.Begin); XmlTextReader reader = new XmlTextReader(tempFile); xpathDocument = new XPathDocument(reader, XmlSpace.Preserve); } } finally { if (tempFileName != null && File.Exists(tempFileName)) { File.Delete(tempFileName); } } XmlNodeList typeNodes = xmlDocumentation.SelectNodes("/ndoc/assembly/module/namespace/*[name()!='documentation']"); if (typeNodes.Count == 0) { throw new DocumenterException("There are no documentable types in this project.\n\nAny types that exist in the assemblies you are documenting have been excluded by the current visibility settings.\nFor example, you are attempting to document an internal class, but the 'DocumentInternals' visibility setting is set to False.\n\nNote: C# defaults to 'internal' if no accessibilty is specified, which is often the case for Console apps created in VS.NET..."); } XmlNodeList namespaceNodes = xmlDocumentation.SelectNodes("/ndoc/assembly/module/namespace"); int[] indexes = SortNodesByAttribute(namespaceNodes, "name"); XmlNode defaultNamespace = namespaceNodes[indexes[0]];; string defaultNamespaceName = (string)defaultNamespace.Attributes["name"].Value; string defaultTopic = defaultNamespaceName + ".html"; // setup for root page string rootPageFileName = null; string rootPageTOCName = "Overview"; if ((MyConfig.RootPageFileName != null) && (MyConfig.RootPageFileName != string.Empty)) { rootPageFileName = MyConfig.RootPageFileName; defaultTopic = "default.html"; // what to call the top page in the table of contents? if ((MyConfig.RootPageTOCName != null) && (MyConfig.RootPageTOCName != string.Empty)) { rootPageTOCName = MyConfig.RootPageTOCName; } } htmlHelp = new HtmlHelp( workspace.WorkingDirectory, MyConfig.HtmlHelpName, defaultTopic, ((MyConfig.OutputTarget & OutputType.HtmlHelp) == 0)); htmlHelp.IncludeFavorites = MyConfig.IncludeFavorites; htmlHelp.BinaryTOC = MyConfig.BinaryTOC; htmlHelp.LangID=MyConfig.LangID; OnDocBuildingStep(25, "Building file mapping..."); MakeFilenames(); string DocLangCode = Enum.GetName(typeof(SdkLanguage),MyConfig.SdkDocLanguage).Replace("_","-"); utilities = new MsdnXsltUtilities(fileNames, elemNames, MyConfig.SdkDocVersion, DocLangCode, MyConfig.SdkLinksOnWeb, currentFileEncoding); OnDocBuildingStep(30, "Loading XSLT files..."); stylesheets = StyleSheetCollection.LoadStyleSheets(MyConfig.ExtensibilityStylesheet); OnDocBuildingStep(40, "Generating HTML pages..."); htmlHelp.OpenProjectFile(); htmlHelp.OpenContentsFile(string.Empty, true); try { if (MyConfig.CopyrightHref != null && MyConfig.CopyrightHref != String.Empty) { if (!MyConfig.CopyrightHref.StartsWith("http:")) { string copyrightFile = Path.Combine(workspace.WorkingDirectory, Path.GetFileName(MyConfig.CopyrightHref)); File.Copy(MyConfig.CopyrightHref, copyrightFile, true); File.SetAttributes(copyrightFile, FileAttributes.Archive); htmlHelp.AddFileToProject(Path.GetFileName(MyConfig.CopyrightHref)); } } // add root page if requested if (rootPageFileName != null) { if (!File.Exists(rootPageFileName)) { throw new DocumenterException("Cannot find the documentation's root page file:\n" + rootPageFileName); } // add the file string rootPageOutputName = Path.Combine(workspace.WorkingDirectory, "default.html"); if (Path.GetFullPath(rootPageFileName) != Path.GetFullPath(rootPageOutputName)) { File.Copy(rootPageFileName, rootPageOutputName, true); File.SetAttributes(rootPageOutputName, FileAttributes.Archive); } htmlHelp.AddFileToProject(Path.GetFileName(rootPageOutputName)); htmlHelp.AddFileToContents(rootPageTOCName, Path.GetFileName(rootPageOutputName)); // depending on peer setting, make root page the container if (MyConfig.RootPageContainsNamespaces) htmlHelp.OpenBookInContents(); } documentedNamespaces = new ArrayList(); MakeHtmlForAssemblies(); // close root book if applicable if (rootPageFileName != null) { if (MyConfig.RootPageContainsNamespaces) htmlHelp.CloseBookInContents(); } } finally { htmlHelp.CloseContentsFile(); htmlHelp.CloseProjectFile(); } htmlHelp.WriteEmptyIndexFile(); if ((MyConfig.OutputTarget & OutputType.Web) > 0) { OnDocBuildingStep(75, "Generating HTML content file..."); // Write the embedded online templates to the html output directory EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.Msdn.onlinefiles", workspace.WorkingDirectory); using (TemplateWriter indexWriter = new TemplateWriter( Path.Combine(workspace.WorkingDirectory, "index.html"), new StreamReader(this.GetType().Module.Assembly.GetManifestResourceStream( "NDoc.Documenter.Msdn.onlinetemplates.index.html")))) { indexWriter.CopyToLine("\t\t<title><%TITLE%></title>"); indexWriter.WriteLine("\t\t<title>" + MyConfig.HtmlHelpName + "</title>"); indexWriter.CopyToLine("\t\t<frame name=\"main\" src=\"<%HOME_PAGE%>\" frameborder=\"1\">"); indexWriter.WriteLine("\t\t<frame name=\"main\" src=\"" + defaultTopic + "\" frameborder=\"1\">"); indexWriter.CopyToEnd(); indexWriter.Close(); } Trace.WriteLine("transform the HHC contents file into html"); #if DEBUG int start = Environment.TickCount; #endif //transform the HHC contents file into html using(StreamReader contentsFile = new StreamReader(htmlHelp.GetPathToContentsFile(),Encoding.Default)) { xpathDocument=new XPathDocument(contentsFile); } using ( StreamWriter streamWriter = new StreamWriter( File.Open(Path.Combine(workspace.WorkingDirectory, "contents.html"), FileMode.CreateNew, FileAccess.Write, FileShare.None ), Encoding.Default ) ) { #if(NET_1_0) //Use overload that is obsolete in v1.1 stylesheets["htmlcontents"].Transform(xpathDocument, null, streamWriter); #else //Use new overload so we don't get obsolete warnings - clean compile :) stylesheets["htmlcontents"].Transform(xpathDocument, null, streamWriter, null); #endif } #if DEBUG Trace.WriteLine((Environment.TickCount - start).ToString() + " msec."); #endif } if ((MyConfig.OutputTarget & OutputType.HtmlHelp) > 0) { OnDocBuildingStep(85, "Compiling HTML Help file..."); htmlHelp.CompileProject(); } else { #if !DEBUG //remove .hhc file File.Delete(htmlHelp.GetPathToContentsFile()); #endif } // if we're only building a CHM, copy that to the Outpur dir if ((MyConfig.OutputTarget & OutputType.HtmlHelp) > 0 && (MyConfig.OutputTarget & OutputType.Web) == 0) { workspace.SaveOutputs( "*.chm" ); } else { // otherwise copy everything to the output dir (cause the help file is all the html, not just one chm) workspace.SaveOutputs( "*.*" ); } if ( MyConfig.CleanIntermediates ) workspace.CleanIntermediates(); OnDocBuildingStep(100, "Done."); } catch(Exception ex) { throw new DocumenterException(ex.Message, ex); } finally { xmlDocumentation = null; xpathDocument = null; stylesheets = null; workspace.RemoveResourceDirectory(); } }
private void CompileHxCFile( Workspace workspace ) { try { #if DEBUG int start = Environment.TickCount; #endif HxCompiler compiler = new HxCompiler(); compiler.Compile( new DirectoryInfo( workspace.WorkingDirectory ), MyConfig.HtmlHelpName, MyConfig.LangID ); #if DEBUG Trace.WriteLine( string.Format( "It took {0} seconds to compile the html", ( Environment.TickCount - start ) / 1000 ) ); #endif } catch ( Exception e ) { throw new DocumenterException( "HtmlHelp2 compilation error", e ); } }
/// <summary>See <see cref="IDocumenter"/>.</summary> public override void Build(Project project) { this.workspace = new JavaDocWorkspace( this.WorkingPath ); workspace.Clean(); workspace.Prepare(); workspace.AddResourceDirectory( "xslt" ); workspace.AddResourceDirectory( "css" ); // Define this when you want to edit the stylesheets // without having to shutdown the application to rebuild. #if NO_RESOURCES // copy all of the xslt source files into the workspace DirectoryInfo xsltSource = new DirectoryInfo( Path.GetFullPath(Path.Combine( System.Windows.Forms.Application.StartupPath, @"..\..\..\Documenter\JavaDoc\xslt") ) ); foreach ( FileInfo f in xsltSource.GetFiles( "*.xslt" ) ) { string fname = Path.Combine( Path.Combine( workspace.ResourceDirectory, "xslt" ), f.Name ); f.CopyTo( fname, true ); File.SetAttributes( fname, FileAttributes.Normal ); } DirectoryInfo cssSource = new DirectoryInfo( Path.GetFullPath(Path.Combine( System.Windows.Forms.Application.StartupPath, @"..\..\..\Documenter\JavaDoc\css") ) ); foreach ( FileInfo f in cssSource.GetFiles( "*.css" ) ) { string cssname = Path.Combine( Path.Combine( workspace.ResourceDirectory, "css" ), f.Name ); f.CopyTo( cssname, true ); File.SetAttributes( cssname, FileAttributes.Normal ); } #else EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.JavaDoc.css", Path.Combine( this.workspace.ResourceDirectory, "css" ) ); EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.JavaDoc.xslt", Path.Combine( this.workspace.ResourceDirectory, "xslt") ); #endif string outcss = Path.Combine(MyConfig.OutputDirectory, "JavaDoc.css"); File.Copy(Path.Combine(workspace.ResourceDirectory, @"css\JavaDoc.css"), outcss, true); File.SetAttributes(outcss, FileAttributes.Archive); try { // determine temp file name tempFileName = Path.GetTempFileName(); // Let the Documenter base class do it's thing. MakeXmlFile(project, tempFileName); WriteOverviewSummary(); WriteNamespaceSummaries(); } finally { if (tempFileName != null && File.Exists(tempFileName)) { File.Delete(tempFileName); } workspace.RemoveResourceDirectory(); } }
private void AddIndexToCollection( Workspace workspace, CollectionFile collection, string templateName, string fileName ) { IndexFile index = IndexFile.CreateFrom( Path.Combine( workspace.ResourceDirectory, templateName ), fileName ); index.LangId = collection.LangId; collection.AddKeywordIndex( index.FileName ); index.Save( workspace.RootDirectory ); }
private void RegisterTitleWithCollection( Workspace workspace ) { string ns = MyConfig.CollectionNamespace; if ( ns.Length > 0 ) { HxReg reg = new HxReg(); reg.RegisterTitle( ns, MyConfig.HtmlHelpName, new FileInfo( Path.Combine( workspace.RootDirectory, MyConfig.HtmlHelpName + ".Hxs" ) ) ); } }
private void UnPackResources( Workspace workspace ) { EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.NativeHtmlHelp2.includes", workspace.WorkingDirectory ); EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.NativeHtmlHelp2.graphics", workspace.ContentDirectory ); EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.NativeHtmlHelp2.HxProject.HelpTitle", workspace.ResourceDirectory ); EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.NativeHtmlHelp2.HxProject.HelpCollection", workspace.ResourceDirectory ); EmbeddedResources.WriteEmbeddedResources( this.GetType().Module.Assembly, "NDoc.Documenter.NativeHtmlHelp2.Engine.NamespaceMapping", workspace.WorkingDirectory ); }
private void CreateCollectionFiles( Workspace workspace ) { string collectionName = MyConfig.HtmlHelpName + "Collection"; // add the collection table of contents CollectionTOCFile toc = CollectionTOCFile.CreateFrom( Path.Combine( workspace.ResourceDirectory, "Collection.HxT" ), collectionName ); toc.LangId = MyConfig.LangID; toc.Flat = MyConfig.CollectionTOCStyle == TOCStyle.Flat; toc.Title = MyConfig.Title; toc.BaseUrl = MyConfig.HtmlHelpName; toc.Save( workspace.RootDirectory ); // add the collection file CollectionFile collection = CollectionFile.CreateFrom( Path.Combine( workspace.ResourceDirectory, "Collection.HxC" ), collectionName ); collection.LangId = MyConfig.LangID; collection.Copyright = MyConfig.CopyrightText; collection.FileVersion = MyConfig.Version; collection.Title = MyConfig.Title; collection.TOCFile = toc.FileName; AddIndexToCollection( workspace, collection, "Collection_A.HxK", collectionName + "_A" ); AddIndexToCollection( workspace, collection, "Collection_F.HxK", collectionName + "_F" ); AddIndexToCollection( workspace, collection, "Collection_K.HxK", collectionName + "_K" ); collection.Save( workspace.RootDirectory ); // create and save the H2reg ini file H2RegFile h2reg = new H2RegFile( collectionName ); h2reg.LangId = MyConfig.LangID; h2reg.CollectionFileName = collection.FileName; h2reg.Description = MyConfig.Title; h2reg.PluginNamespace = MyConfig.PlugInNamespace; h2reg.SetDocSetFilter( MyConfig.Title, MyConfig.HtmlHelpName ); if ( MyConfig.BuildSeparateIndexFile ) h2reg.AddTitle( MyConfig.HtmlHelpName, MyConfig.LangID, MyConfig.HtmlHelpName + ".HxS", MyConfig.HtmlHelpName + ".HxI" ); else h2reg.AddTitle( MyConfig.HtmlHelpName, MyConfig.LangID, MyConfig.HtmlHelpName + ".HxS" ); h2reg.Save( workspace.RootDirectory ); }
private void MakeHtml( Workspace workspace, HtmlFactory factory ) { // load the stylesheets OnDocBuildingStep( 20, "Loading StyleSheets..." ); factory.LoadStylesheets(MyConfig.ExtensibilityStylesheet); OnDocBuildingStep( 30, "Generating HTML..." ); if ( ((string)MyConfig.UseHelpNamespaceMappingFile).Length != 0 ) factory.SetNamespaceMap( MyConfig.UseHelpNamespaceMappingFile ); #if DEBUG int start = Environment.TickCount; #endif // make the html factory.MakeHtml(); #if DEBUG Trace.WriteLine( string.Format( "It took {0} seconds to make the html", ( Environment.TickCount - start ) / 1000 ) ); #endif }
private ProjectFile CreateProjectFile( Workspace workspace ) { // create a project file from the resource template ProjectFile project = ProjectFile.CreateFrom( Path.Combine( workspace.ResourceDirectory, "project.HxC" ), MyConfig.HtmlHelpName ); // set it up project.BuildSeparateIndexFile = MyConfig.BuildSeparateIndexFile; project.Copyright = MyConfig.CopyrightText; project.CreateFullTextIndex = MyConfig.CreateFullTextIndex; project.FileVersion = MyConfig.Version; project.LangId = MyConfig.LangID; project.Title = MyConfig.Title; if ( MyConfig.IncludeDefaultStopWordList ) project.StopWordFile = "FTSstop_UTF8.stp"; return project; }
private static string ImportContentFileToWorkspace( string path, Workspace workspace ) { string fileName = Path.GetFileName( path ); workspace.ImportContent( Path.GetDirectoryName( path ), fileName ); return Path.Combine( workspace.ContentDirectoryName, fileName ); }
private void CreateNamedUrlIndex( Workspace workspace ) { NamedUrlFile namedUrlIndex = NamedUrlFile.CreateFrom( Path.Combine( workspace.ResourceDirectory, "NamedURL.HxK" ), "NamedURL" ); namedUrlIndex.LangId = MyConfig.LangID; if ( ((string) MyConfig.IntroductionPage).Length > 0 ) namedUrlIndex.IntroductionPage = ImportContentFileToWorkspace( MyConfig.IntroductionPage, workspace ); if ( ((string) MyConfig.AboutPageIconPage).Length > 0 ) namedUrlIndex.AboutPageIcon = ImportContentFileToWorkspace( MyConfig.AboutPageIconPage, workspace ); if ( ((string) MyConfig.AboutPageInfo).Length > 0 ) namedUrlIndex.AboutPageInfo = ImportContentFileToWorkspace( MyConfig.AboutPageInfo, workspace ); if ( ((string) MyConfig.EmptyIndexTermPage).Length > 0 ) namedUrlIndex.EmptyIndexTerm = ImportContentFileToWorkspace( MyConfig.EmptyIndexTermPage, workspace ); if ( ((string) MyConfig.NavFailPage).Length > 0 ) namedUrlIndex.NavFailPage = ImportContentFileToWorkspace( MyConfig.NavFailPage, workspace ); if ( ((string) MyConfig.AdditionalContentResourceDirectory).Length > 0 ) workspace.ImportContentDirectory( MyConfig.AdditionalContentResourceDirectory ); namedUrlIndex.Save( workspace.WorkingDirectory ); }
/// <summary>See <see cref="IDocumenter"/>.</summary> public override void Build(Project project) { try { OnDocBuildingStep(0, "Initializing..."); this.workspace = new LinearHtmlWorkspace( this.WorkingPath ); workspace.Clean(); workspace.Prepare(); workspace.AddResourceDirectory( "xslt" ); // Define this when you want to edit the stylesheets // without having to shutdown the application to rebuild. #if NO_RESOURCES // copy all of the xslt source files into the workspace DirectoryInfo xsltSource = new DirectoryInfo( Path.GetFullPath(Path.Combine( System.Windows.Forms.Application.StartupPath, @"..\..\..\Documenter\LinearHtml\xslt") ) ); foreach ( FileInfo f in xsltSource.GetFiles( "*.xslt" ) ) { string destPath = Path.Combine( Path.Combine( workspace.ResourceDirectory, "xslt" ), f.Name ); // change to allow overwrite if clean-up failed last time if (File.Exists(destPath)) File.SetAttributes( destPath, FileAttributes.Normal ); f.CopyTo( destPath, true ); // set attributes to allow delete later File.SetAttributes( destPath, FileAttributes.Normal ); } #else EmbeddedResources.WriteEmbeddedResources(this.GetType().Module.Assembly, "NDoc.Documenter.LinearHtml.xslt", Path.Combine(workspace.ResourceDirectory, "xslt")); #endif // Create the html output directory if it doesn't exist. if (!Directory.Exists(MyConfig.OutputDirectory)) { Directory.CreateDirectory(MyConfig.OutputDirectory); } // Write the embedded css files to the html output directory EmbeddedResources.WriteEmbeddedResources(this.GetType().Module.Assembly, "NDoc.Documenter.LinearHtml.css", MyConfig.OutputDirectory); // Write the external files (FilesToInclude) to the html output directory foreach( string srcFile in MyConfig.FilesToInclude.Split( '|' ) ) { if ((srcFile == null) || (srcFile.Length == 0)) continue; string dstFile = Path.Combine(MyConfig.OutputDirectory, Path.GetFileName(srcFile)); File.Copy(srcFile, dstFile, true); File.SetAttributes(dstFile, FileAttributes.Archive); } OnDocBuildingStep(10, "Merging XML documentation..."); // Will hold the name of the file name containing the XML doc string tempFileName = null; // Will hold the DOM representation of the XML doc XmlDocument xmlDocumentation = null; try { // determine temp file name tempFileName = Path.GetTempFileName(); // Let the Documenter base class do it's thing. MakeXmlFile(project, tempFileName); // Load the XML into DOM xmlDocumentation = new XmlDocument(); xmlDocumentation.Load(tempFileName); } finally { if (tempFileName != null && File.Exists(tempFileName)) { File.Delete(tempFileName); } } #if USE_XML_DOCUMENT xPathNavigator = xmlDocumentation.CreateNavigator(); #else XmlTextWriter tmpWriter = new XmlTextWriter(new MemoryStream(), Encoding.UTF8); xmlDocumentation.WriteTo(tmpWriter); tmpWriter.Flush(); tmpWriter.BaseStream.Position = 0; this.Load(tmpWriter.BaseStream); #endif // check for documentable types XmlNodeList typeNodes = xmlDocumentation.SelectNodes("/ndoc/assembly/module/namespace/*[name()!='documentation']"); if (typeNodes.Count == 0) { throw new DocumenterException("There are no documentable types in this project.\n\nAny types that exist in the assemblies you are documenting have been excluded by the current visibility settings.\nFor example, you are attempting to document an internal class, but the 'DocumentInternals' visibility setting is set to False.\n\nNote: C# defaults to 'internal' if no accessibilty is specified, which is often the case for Console apps created in VS.NET..."); } // create and write the html OnDocBuildingStep(50, "Generating HTML page..."); MakeHtml(this.MainOutputFile); OnDocBuildingStep(100, "Done."); workspace.Clean(); } catch(Exception ex) { throw new DocumenterException(ex.Message, ex); } }