Giter Site home page Giter Site logo

docu's Introduction

Docu: Simple documentation done simply

What's a docu?

A documentation generator for .Net that isn't complicated, awkward, or difficult to use. Given an assembly and the XML that's generated by Visual Studio, docu can produce an entire website of documentation with a single command.

Can I use it yet?

Yep, just don't expect the world. Docu has been tested against Fluent NHibernate and is currently in production use; however, it's only been tested in that one situation so there may be peculiarities of your setup that haven't been catered for.

What's so special about docu?

One command to build your entire documentation

Static html, nothing fancy, no dependencies

Templates built using the Spark view engine

No GAC, no hard-coded paths; completely redistributable

Now what?

Either get the code or download the alpha, then take a look at the getting started guide. If you've got any comments or suggestions feel free to drop by the mailing list.

Getting started

Have you downloaded a binary or built the source? Good, we can continue. For this part of the guide I'm going to assume you're perfectly happy with the default appearance of the documentation (which is similar to the standard rdoc style), so I'm only going to cover how to actually produce the documentation.

Docu is comprised of a small console application with a templates directory; this directory contains all the Spark views that are used to build your documentation. These two need to stick together where-ever you put docu, but apart from that it doesn't care where it lives.

To generate documentation with docu, there are two things it needs: at least one assembly and it's associated XML documentation file that's generated by Visual Studio. You need to supply docu with the locations of the assembly (it can discover the XML file if it's in the same directory as the assembly) from the command-line. When you start it, docu interrogates the XML and the assembly to build up your documentation.

Running Docu is easy. Just run docu your-assembly-name.dll from the command-line and you're away. Currently your documentation will be put in an output folder in where-ever you ran docu; this will be customisable, but isn't just yet. So running the above command will result in the following console output.

----------------------------------------
 docu: simple documentation done simply
----------------------------------------

Starting documentation generation

Generation complete

With that, you'll now have an output folder with several html files and folders. This directory is fully self contained so you can zip it up and ship it out to anywhere without any concerns about external references. That's it, that's all there is to using Docu.

Customising Templates

Docu uses the Spark view engine to produce it's pages, which makes customisation really easy. You can use loops, conditions, include partials, write macros, and even use plain C# in your views if you so desire. It's important to note that docu's support for customisation is unpolished, there's very little you can't do, but what you can might not be the silkiest yet. I'm working on it.

Special names

A very simple feature of docu, but one that's extremely useful, is special names. There are a few (currently only two!) special names that you can call your files and folders that mark them for special treatment by the docu processor. For example, if you call a file !type.spark then when it's used for generating the docs, docu will create a new page for each type in your assembly using that template; so if you have 10 types, then docu will create 10 pages from that template, each with only that specific type in.

The currently available special names are: !namespace and !type.

These names can also be applied to directories, and are scope limiting. If you create a directory called !namespace, you'll get a new directory for each namespace. Any templates inside that directory will be created for each namespace too; so, if you create a !type.spark template inside a !namespace directory, you'll end up with a directory for each namespace, with a page for each type in that namespace. Very simple, but pretty powerful.

It's important to note that namespaces are not considered to be in a tree as you might expect. The .Net CLR flattens all namespaces, so if you have the namespace Example with a sub-namespace called First, what the CLR actually stores is two namespaces: Example and Example.First, not Example with a child of First. Docu sticks to this structure for simplicity; this may, or may not, change in the future.

Template properties and helpers

Each template has access to several properties that it can use to output the documentation; these properties expose the underlying document model that is generated by docu.

Every template has access to: Assemblies, Namespaces, and Types; these each contain all their respective members for the whole of the documented codebase.

Templates that are of or inside the special name !namespace have a Namespace property that represents the current namespace you're "inside"; the namespace exposed has a collection of types that can be iterated over which has only the types that are of that namespace.

Templates that are of or inside the special name !type have a Type property that represents the current type you're "inside"; this property has several properties that can be used to generate the documentation. There's Type.Methods and Type.Properties that contain the public methods and properties of the type, as well as Parent and Interfaces properties that expose the base-class and any directly implemented interfaces.

The document model is under-developed and only contains what was needed to produce the basic documentation used by Fluent NHibernate; it's more than likely that there are features that are missing or not exposed. If there is anything that you need that isn't available, please post a message on the mailing list. An example from the default template (in !namespace/index.spark):

<div class="header">
  <p class="class"><strong>Namespace</strong> ${Namespace.Name}</p>
</div>
<div class="sub-header">
  <h3 class="section">Types</h3>
  <ul>
    <for each="var type in Namespace.Types">
      <li><a href="${type.Name}.htm">${h(type.PrettyName)}</a></li>
    </for>
  </ul>
</div>

You can see this template outputs the namespace name, followed by a list of all the types. You'll note the use of a h call and type.PrettyName. Well h is one of a few methods available to templates, this one in particular replaces < and > characters with their html friendly equivalent (it will eventually be a full html sanitizer, but it isn't there yet); PrettName on the other hand outputs the full generic name with all generic types resolved, if possible.

Some other methods that are available are:

  • OutputMethodParams(Method), this outputs a comma-delimted list of the parameters of a given method, handy to not have to do the comma processing
  • WriteInterfaces(IList) does a similar thing but for the interfaces of a type
  • WriteSummary(Summary) writes out the summary comment of a method/type with all types fully expanded and internally referenced if possible
  • WriteReference(Reference), resolves a documentation reference (which could be a method parameter, a return type, or just a block from a comment) and either outputs a simple text representation if it's an external reference, or a link if it's part of the assembly being documented.

A note on comment blocks: XML comments can be simple text, or a complex hierarchy of XML tags. Due to this, there is no flat representation of a comment; comments are always a list of IComment instances. Each instance can be output in a different way, hence why it's a good idea to use WriteSummary.

These methods are not exhaustive and are pretty underdeveloped and overly specific. They will be changing in the future to a more managable structure, but for the time being most things can be catered for.

Transforming templates

A template is discerned by it's extension, .spark; any files that have that extension are transformed into a .htm file at generation-time, with the exception of any files beginning with an underscore (these are deemed to be partials and are left alone).

Any directories are recursively evaluated for templates, if they contain any the they will be copied to the output directory; similarly any untransformed files that aren't spark templates will also be copied (such as css files).

As already explained, any templates or directories that have a special name get transformed into multiple html files and folders depending on their name.

So given the following directory structure:

templates/
  !namespaces/
    !type.spark
    index.spark
  css/
    main.css
  index.spark

Combine that with an assembly that has two namespaces (First and Second respectively) each with several types, you will see the following output:

output/
  First/
    TypeOne.htm
    TypeTwo.htm
    TypeThree.htm
    index.htm
  Second/
    TypeFour.htm
    TypeFive.htm
    index.htm
  css/
    main.css
  index.htm

That's it, that's all I can think of right now. Watch out for badly formed templates because exceptions are mostly unhandled currently. Big bang. Drop by on the mailing list if you need any help.

FAQs

What is a docu? A documentation generator for .Net that isn't complicated, awkward, or difficult to use.

How mature is docu? Not very, it's only a few days old; however, it is capable of producing the docs for Fluent NHibernate, so you might be ok with it.

Can you produce such-and-such format? Most likely not, unless the format you want is html. Docu is meant to be simple, and it's designed to do one thing and one thing well. If you want a CHM generator, or a Word doc generator, then you need a different tool.

What styles do you have available? Only the default rdoc inspired style currently, but there is a customisable template system that you can use to produce your own templates, and there are plans to extend the default set of templates in the future.

Can I output private/protected members? Not yet, docu was designed for use with a public API and thus didn't need to expose private members. It will be a customisation option in the future, but it isn't implemented yet.

What's wrong with Sandcastle? Nothing, if you like pain. I don't.

docu's People

Contributors

beppler avatar cdrnet avatar chrismissal avatar dnauck avatar dylanbeattie avatar forki avatar jagregory avatar joshuaflanagan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docu's Issues

optional parameters

Hello, docu works fine (in VB.NET), but it doesn't mention Optional arguments in functions as Optional. Has anyone the same issue? Thanks!

NPE generating docs....

Not sure what i'm doing wrong. Just checked out docu, built it ok via visual studio and attempted to run it. Got this:

Unhandled Exception: System.NullReferenceException: There was no namespace found for schema, juddi-dotnet-client, Version=3.2.1.0, Culture=neutral, PublicKeyToken=null
   at Docu.Documentation.Generators.NamespaceGenerator.Add(List`1 namespaces, IDocumentationMember association) in C:\projects\docu\src\Docu.Console\Documentation\Generators\NamespaceGenerator.cs:line 23
   at Docu.Documentation.Generators.GenerationStep`1.<Docu.Documentation.Generators.IGenerationStep.get_Action>b__8_0(List`1 x, IDocumentationMember y) in C:\projects\docu\src\Docu.Console\Documentation\Generators\GenerationStep.cs:line 23
   at Docu.Documentation.DocumentModel.Create(IEnumerable`1 members) in C:\projects\docu\src\Docu.Console\Documentation\DocumentModel.cs:line 58
   at Docu.Parsing.AssemblyXmlParser.CreateDocumentModel(IEnumerable`1 assemblies, IEnumerable`1 xmlDocumentContents) in C:\projects\docu\src\Docu.Console\Parsing\AssemblyXmlParser.cs:line 28
   at Docu.DocumentationGenerator.Generate() in C:\projects\docu\src\Docu.Console\DocumentationGenerator.cs:line 87
   at Docu.Console.ConsoleApplication.Run() in C:\projects\docu\src\Docu.Console\Console\ConsoleApplication.cs:line 97
   at Docu.Console.ConsoleApplication.Run(IEnumerable`1 args) in C:\projects\docu\src\Docu.Console\Console\ConsoleApplication.cs:line 266
   at Docu.Program.Main(String[] args) in C:\projects\docu\src\Docu.Console\Program.cs:line 9

9 tests failing

------ Test started: Assembly: Docu.Tests.dll ------

when the HtmlGenerator is told to convert a template that uses the assemblies collection to html
» should output the assembly value

when the HtmlGenerator is told to convert a template that uses the namespaces collection to html
» should output the namespace value

when the HtmlGenerator is told to convert a template that uses the namespace accessor to html
» should output the namespace value

when the HtmlGenerator is told to convert a template that uses the namespaces collection with linq to html
» should output the namespace value

when the HtmlGenerator is told to convert a template that uses the summary of the type accessor to html
» should output the summary content (FAIL)

when the HtmlGenerator is told to convert a template that uses method overloads to html
» should output the summary content (FAIL)

when the HtmlGenerator is told to convert a template that uses a method return type to html
» should output the summary content

when the HtmlGenerator is told to convert a template that uses a property to html
» should output the summary content

when a top level view is asked to resolve a path relative to the current level
» should use the original path

when a top level view is asked to resolve a path relative to the output root
» should use the original path without the prefix

when a one level deep view is asked to resolve a path relative to the current level
» should use the relative path without the prefix

when a one level deep view is asked to resolve a path relative to the output root
» should use the relative path without the prefix

when a two level deep view is asked to resolve a path relative to the output root
» should use the relative path without the prefix

when a two level deep view is asked to resolve a two level deep path relative to the output root with the same sub directory
» should use the relative path without the prefix

when a two level deep view is asked to resolve a two level deep path relative to the output root with a different sub directory
» should use the relative path without the prefix

when the HtmlOutputFormatter is told to format a parameter reference
» should output the parameter reference in a var tag

when the HtmlOutputFormatter is told to format a definition list
» should wrap the definition list in a dl tag
» should wrap each item term in a dt tag (FAIL)
» should wrap each item definition in a dd tag (FAIL)

when the HtmlOutputFormatter is told to format a numbered list
» should wrap the number list in a ol tag
» should wrap each item in a li tag (FAIL)

when the HtmlOutputFormatter is told to format a bullet list
» should wrap the number list in a ul tag
» should wrap each item in a li tag (FAIL)

when the HtmlOutputFormatter is told to format a table
» should wrap the number list in a table tag
» should wrap each item term in a td tag (FAIL)
» should wrap each item definition in a td tag (FAIL)
» should wrap each item in a tr tag (FAIL)

when the HtmlOutputFormatter is told to format a referencable that's a type
» should output the type name in an anchor tag
» should generate the url for the type

when the HtmlOutputFormatter is told to format a referencable that's a method
» should output the method name in an anchor tag
» should generate the url for the method

when the HtmlOutputFormatter is told to format a referencable that's a property
» should output the method name in an anchor tag
» should generate the url for the property

when the HtmlOutputFormatter is told to format a referencable that's a field
» should output the method name in an anchor tag
» should generate the url for the property

when the HtmlOutputFormatter is told to format a referencable that's an event
» should output the method name in an anchor tag
» should generate the url for the property

TestCase 'should output the summary content' failed: 
    NUnit.Framework.AssertionException:   Expected string length 7 but was 8. Strings differ at index 7.
      Expected: "summary"
      But was:  "summary "
      ------------------^

    at NUnit.Framework.Assert.That(Object actual, IResolveConstraint expression, String message, Object[] args)
    at NUnit.Framework.Assert.That(Object actual, IResolveConstraint expression)
    W:\docu\src\Docu.Tests\Extensions.cs(70,0): at Docu.Tests.Extensions.ShouldEqual[T](T actual, T expected)
    Output\HtmlGenerationTests.cs(72,0): at Docu.Tests.Output.when_the_HtmlGenerator_is_told_to_convert_a_template_that_uses_the_summary_of_the_type_accessor_to_html.<.ctor>b__3()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()

TestCase 'should output the summary content' failed: 
    NUnit.Framework.AssertionException:   Expected string length 26 but was 58. Strings differ at index 15.
      Expected: "Method()Method(String one)"
      But was:  "Method()Method(<a href="System/String.htm">String</a> one)"
      --------------------------^

    at NUnit.Framework.Assert.That(Object actual, IResolveConstraint expression, String message, Object[] args)
    at NUnit.Framework.Assert.That(Object actual, IResolveConstraint expression)
    W:\docu\src\Docu.Tests\Extensions.cs(70,0): at Docu.Tests.Extensions.ShouldEqual[T](T actual, T expected)
    Output\HtmlGenerationTests.cs(96,0): at Docu.Tests.Output.when_the_HtmlGenerator_is_told_to_convert_a_template_that_uses_method_overloads_to_html.<.ctor>b__4()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()

TestCase 'should wrap each item term in a dt tag' failed: 
    Machine.Specifications.SpecificationException: Should contain "<dt>a</dt>" but is "<dl><dt>a </dt><dd>first </dd><dt>b </dt><dd>second </dd></dl>"
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\ExtensionMethods.cs(368,0): at Machine.Specifications.ShouldExtensionMethods.ShouldContain(String actual, String expected)
    Output\Rendering\HtmlOutputFormatterSpecs.cs(41,0): at Docu.Tests.Output.Rendering.when_the_HtmlOutputFormatter_is_told_to_format_a_definition_list.<.ctor>b__2()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()

TestCase 'should wrap each item definition in a dd tag' failed: 
    Machine.Specifications.SpecificationException: Should contain "<dd>first</dd>" but is "<dl><dt>a </dt><dd>first </dd><dt>b </dt><dd>second </dd></dl>"
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\ExtensionMethods.cs(368,0): at Machine.Specifications.ShouldExtensionMethods.ShouldContain(String actual, String expected)
    Output\Rendering\HtmlOutputFormatterSpecs.cs(47,0): at Docu.Tests.Output.Rendering.when_the_HtmlOutputFormatter_is_told_to_format_a_definition_list.<.ctor>b__3()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()

TestCase 'should wrap each item in a li tag' failed: 
    Machine.Specifications.SpecificationException: Should contain "<li>a</li>" but is "<ol><li>a </li><li>b </li></ol>"
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\ExtensionMethods.cs(368,0): at Machine.Specifications.ShouldExtensionMethods.ShouldContain(String actual, String expected)
    Output\Rendering\HtmlOutputFormatterSpecs.cs(72,0): at Docu.Tests.Output.Rendering.when_the_HtmlOutputFormatter_is_told_to_format_a_numbered_list.<.ctor>b__2()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()

TestCase 'should wrap each item in a li tag' failed: 
    Machine.Specifications.SpecificationException: Should contain "<li>a</li>" but is "<ul><li>a </li><li>b </li></ul>"
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\ExtensionMethods.cs(368,0): at Machine.Specifications.ShouldExtensionMethods.ShouldContain(String actual, String expected)
    Output\Rendering\HtmlOutputFormatterSpecs.cs(97,0): at Docu.Tests.Output.Rendering.when_the_HtmlOutputFormatter_is_told_to_format_a_bullet_list.<.ctor>b__2()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()

TestCase 'should wrap each item term in a td tag' failed: 
    Machine.Specifications.SpecificationException: Should contain "<td>a</td>" but is "<table><tr><td>a </td><td>first </td></tr><tr><td>b </td><td>second </td></tr></table>"
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\ExtensionMethods.cs(368,0): at Machine.Specifications.ShouldExtensionMethods.ShouldContain(String actual, String expected)
    Output\Rendering\HtmlOutputFormatterSpecs.cs(122,0): at Docu.Tests.Output.Rendering.when_the_HtmlOutputFormatter_is_told_to_format_a_table.<.ctor>b__2()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()

TestCase 'should wrap each item definition in a td tag' failed: 
    Machine.Specifications.SpecificationException: Should contain "<td>first</td>" but is "<table><tr><td>a </td><td>first </td></tr><tr><td>b </td><td>second </td></tr></table>"
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\ExtensionMethods.cs(368,0): at Machine.Specifications.ShouldExtensionMethods.ShouldContain(String actual, String expected)
    Output\Rendering\HtmlOutputFormatterSpecs.cs(128,0): at Docu.Tests.Output.Rendering.when_the_HtmlOutputFormatter_is_told_to_format_a_table.<.ctor>b__3()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()

TestCase 'should wrap each item in a tr tag' failed: 
    Machine.Specifications.SpecificationException: Should contain "<tr><td>a</td><td>first</td></tr>" but is "<table><tr><td>a </td><td>first </td></tr><tr><td>b </td><td>second </td></tr></table>"
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\ExtensionMethods.cs(368,0): at Machine.Specifications.ShouldExtensionMethods.ShouldContain(String actual, String expected)
    Output\Rendering\HtmlOutputFormatterSpecs.cs(134,0): at Docu.Tests.Output.Rendering.when_the_HtmlOutputFormatter_is_told_to_format_a_table.<.ctor>b__4()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(75,0): at Machine.Specifications.Model.Specification.InvokeSpecificationField()
    c:\Users\Administrator\dev\machine.specifications\Source\Machine.Specifications\Model\Specification.cs(53,0): at Machine.Specifications.Model.Specification.Verify()


28 passed, 9 failed, 0 skipped, took 6.70 seconds (Machine.Specifications 0.3.0).

mono support?

Hi! docu looks like a nice project, I was just giving it a try to see if it would work for my mono-based project. I'm getting the following exception, when building docu from latest github sources with mono 2.10.2, and I've tried both .NET 3.5 and 4.0 with the same result:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
  at View27cbb8f340f74456ae98202eb7b446f7.RenderViewLevel0 () [0x00000] in <filename unknown>:0 
  at View27cbb8f340f74456ae98202eb7b446f7.Render () [0x00000] in <filename unknown>:0 
  at Spark.SparkViewBase.RenderView (System.IO.TextWriter writer) [0x00000] in <filename unknown>:0 
  at Spark.SparkViewDecorator.RenderView (System.IO.TextWriter writer) [0x00000] in <filename unknown>:0 
  at Docu.Output.HtmlGenerator.Convert (System.String templateName, Docu.Output.ViewData data, System.String relativeOutputPath) [0x00000] in <filename unknown>:0 
  at Docu.Output.PageWriter.CreatePages (System.String templateDirectory, System.String destination, IList`1 namespaces) [0x00000] in <filename unknown>:0 
  at Docu.Output.BulkPageWriter.CreatePagesFromDirectory (System.String templatePath, System.String destination, IList`1 namespaces) [0x00000] in <filename unknown>:0 
  at Docu.DocumentationGenerator.Generate () [0x00000] in <filename unknown>:0 
  at Docu.Console.ConsoleApplication.Run () [0x00000] in <filename unknown>:0 
  at Docu.Console.ConsoleApplication.Run (IEnumerable`1 args) [0x00000] in <filename unknown>:0 
  at Docu.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0

Not sure if this is likely to be mono related or not, but this is currently preventing me from getting much further. Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.