DocFX
docnet
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
DocFX
-
TSDocs.dev: type docs for any JavaScript library
This is a better looking version of what Java and C# have had for a long time (kudos to the author for that!), is that the inspiration for this tool?
https://docs.oracle.com/javase/8/docs/technotes/tools/window...
https://dotnet.github.io/docfx/
I saw the author mentioned in another comment that they found themselves peeping inside type declaration files "too often". While I do often use sites generated by the above tools to discover new API's that suit my needs, diving into the actual code using a good decompiler is still my first move, as it is often cheaper than seeking out the documentation online, and it will show me the actual implementation as well. So in my opinion there is no shame in looking inside the declaration files!
-
Use Case Driven Development with Low-Code
Tools like DocFx provide the ability to display the programmable functions in HTML pages. They are used with the following commands in the docfx folder:
-
Anybody know if there's a library for the doc engine that MS Docs/Learn uses?
AFAIK they use https://github.com/dotnet/docfx which can be too heavy for your case. We use mdBook for internal documentation (plain .md with mermaid plugin) and then serve it at docs.yourdevenv.com.
- Is there a simple way to auto-generate a wiki / documentation for project code that pulls from comments or <summary> tags?
-
What the latest tool to generate website docs from /// summary comments?
DocFX is a nice solution.
-
How to build a solution like docs.microsoft.com
It uses DocFX
-
Comments in Javascript
Some of the standard and well-maintained Tools for Comments are JSDoc for Javascript, DocFx for .NET, and JavaDoc for Java.
-
Library / Codebase Documentation - Multiple aggregated libraries - How to create? DocFx does not support this?
We would really prefer to use a somewhat generic pre-made tool for this (such as DocFX) compared to rolling our own solution. We can roll our own solution... But would prefer not to so that we can minimize development and maintenance overhead.
-
dotnet-ci-pipelines
name: .NET Core # use https://marketplace.visualstudio.com/items?itemName=me-dutour-mathieu.vscode-github-actions to validate yml in vscode env: NUGET_PACKAGES_DIRECTORY: '.nupkg' RESHARPER_CLI_NAME: 'JetBrains.ReSharper.CommandLineTools.Unix' RESHARPER_CLI_VERSION: "2019.2.3" DOCKER_DRIVER: overlay CONTAINER_IMAGE: codeclimate/codeclimate CONTAINER_TAG: '0.85.2' rIds: ${{ secrets.rIds }} dotnetVersion: 3.1.102 on: pull_request: branches: - master push: branches: - master jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.dotnetVersion}} - name: Build with dotnet run: | export DOTNET_CLI_TELEMETRY_OPTOUT=1 dotnet publish -c Release - name: Tests run: | cp MyProject.Repository.Test/Data/appSettings.gitlab.json MyProject.Repository.Test/Data/AppSettings.json dotnet test --logger "junit" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput='./TestResults/' - name: Coverage Report run: | dotnet --version dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools ./tools/reportgenerator "-reports:**/TestResults/coverage.opencover.xml;" "-targetdir:Reports" -reportTypes:TextSummary; ./tools/reportgenerator "-reports:**/TestResults/coverage.opencover.xml;" "-targetdir:Reports" -reportTypes:Html; ./tools/reportgenerator "-reports:**/TestResults/coverage.opencover.xml;" "-targetdir:Reports" -reportTypes:Badges; cat ./Reports/Summary.txt - uses: actions/upload-artifact@v1 with: name: CodeCoverage path: Reports - name: Resharper Code Quality run: | # apt update && apt install -y curl zip unzip curl -LO "https://download.jetbrains.com/resharper/ReSharperUltimate.$RESHARPER_CLI_VERSION/$RESHARPER_CLI_NAME.$RESHARPER_CLI_VERSION.zip" unzip -q $RESHARPER_CLI_NAME.$RESHARPER_CLI_VERSION.zip -d "resharper" mkdir -p CodeQuality files=(*.sln) sh ./resharper/dupfinder.sh "${files[0]}" --output=CodeQuality/dupfinderReport.html --format=Html sh ./resharper/inspectcode.sh "${files[0]}" --output=CodeQuality/inspectcodeReport.html --format=Html - uses: actions/upload-artifact@v1 with: name: CodeQuality path: CodeQuality - name: prerelease if: ${{ env.rIds }} != '' run: | echo 'build, obfuscate, and release' dotnet tool install Obfuscar.GlobalTool --tool-path tools --version 2.2.28 bash scripts/extractRelease.sh export rIds=${{ env.rIds }} bash ./scripts/pipeline.sh bash ./scripts/finalRelease.sh - name: upload release uses: actions/upload-artifact@v2 if: ${{ env.rIds }} != '' with: name: Release_unix path: Release/post build-win: runs-on: windows-latest steps: - uses: actions/checkout@v1 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.dotnetVersion}} - name: Build with dotnet run: | set DOTNET_CLI_TELEMETRY_OPTOUT=1 dotnet publish -c Release - name: Tests run: | copy MyProject.Repository.Test/Data/appSettings.gitlab.json MyProject.Repository.Test/Data/AppSettings.json dotnet test --logger "junit" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput='.\TestResults\' - name: prerelease if: ${{ env.rIds }} != '' run: | echo "build, obfuscate, and release" dotnet tool install Obfuscar.GlobalTool --tool-path tools --version 2.2.28 .\scripts\extractRelease.cmd set rIds=$env:rIds .\scripts\pipeline.cmd .\scripts\finalRelease.cmd - name: upload release uses: actions/upload-artifact@v2 if: ${{ env.rIds }} != '' with: name: Release_win path: Release\post unit_test_db_mssql: runs-on: ubuntu-latest # Service containers to run with `runner-job` services: # Label used to access the service container localhost_mysql: # Docker Hub image image: mcr.microsoft.com/mssql/server:2019-latest # ports: # Opens tcp port 6379 on the host and service container - 1433:1433 env: GIT_SUBMODULE_STRATEGY: recursive ACCEPT_EULA: Y SA_PASSWORD: yourStrong(!)Password steps: - uses: actions/checkout@v1 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.dotnetVersion}} - name: enabledb run: cp ./MyProject.Repository.Test/Data/appSettings.bitbucket.mssql.json ./MyProject.Repository.Test/Data/AppSettings.json - name: Tests run: | cd MyProject.Repository.Test dotnet test --logger "junit" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput='./TestResults/' unit_test_db_postgres: runs-on: ubuntu-latest # Service containers to run with `runner-job` services: # Label used to access the service container redis: # Docker Hub image image: postgres:11 # ports: - 5432:5432 # Provide the password for postgres env: POSTGRES_DB: mockDb POSTGRES_USER: postgres POSTGRES_PASSWORD: "mysecretpassword" POSTGRES_HOST_AUTH_METHOD: trust # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v1 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.dotnetVersion}} - name: enabledb run: cp ./MyProject.Repository.Test/Data/appSettings.devops.postgres.json ./MyProject.Repository.Test/Data/AppSettings.json - name: Tests run: | cd MyProject.Repository.Test dotnet test --logger "junit" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput='./TestResults/' unit_test_db_mysql: runs-on: ubuntu-latest # Service containers to run with `runner-job` services: # Label used to access the service container redis: # Docker Hub image image: mysql:5.7.29 # ports: - 3306:3306 env: MYSQL_DATABASE: "mockDb" MYSQL_ROOT_PASSWORD: "mysecretpw" steps: - uses: actions/checkout@v1 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.dotnetVersion}} - name: enabledb run: cp ./MyProject.Repository.Test/Data/appSettings.devops.mysql.json ./MyProject.Repository.Test/Data/AppSettings.json - name: Tests run: | cd MyProject.Repository.Test dotnet test --logger "junit" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput='./TestResults/' code_docs: runs-on: windows-latest name: code documentation steps: - uses: actions/checkout@v1 - name: docfx run: | curl -LO "https://github.com/dotnet/docfx/releases/download/v2.48/docfx.zip" powershell.exe -NoP -NonI -Command "Expand-Archive '.\docfx.zip' '.\docfx\'" ./docfx/docfx.exe - uses: actions/upload-artifact@v1 with: name: CodeDocs path: _site security: runs-on: ubuntu-latest name: Snyk Security Scan steps: - uses: actions/checkout@v1 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.dotnetVersion}} - name: Build with dotnet run: | export DOTNET_CLI_TELEMETRY_OPTOUT=1 dotnet build - name: Run Snyk to check for vulnerabilities uses: snyk/actions/dotnet@master with: args: --file=MyProject.sln env: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
-
Serving DocFX static site from .NET & adding Authentication
For those of you who are new to DocFX, DocFX is static site generator from source code files and markdown. it is mainly used for documentation, however it is important to mention that it is flexible to be used for many different purposes. some use it for blogging, profile site,... really its up to you to define what to use it for. for more information on DocFX you can visit their official website.
docnet
We haven't tracked posts mentioning docnet yet.
Tracking mentions began in Dec 2020.
What are some alternatives?
Sandcastle - Sandcastle Help File Builder (SHFB). A standalone GUI, Visual Studio integration package, and MSBuild tasks providing full configuration and extensibility for building help files with the Sandcastle tools.
MkDocs - Project documentation with Markdown.
Pdfium.Net SDK
Swashbuckle - Seamlessly adds a swagger to WebApi projects!
ITextSharp - [DEPRECATED] .NET port of the iText library, only security fixes will be added — please use iText for .NET
DocNet - Your friendly static documentation generator, using markdown files to build the content.
library - QuestPDF is an open-source, modern and battle-tested library that can help you with generating PDF documents by offering friendly, discoverable and predictable C# fluent API.
PdfPig - Read and extract text and other content from PDFs in C# (port of PDFBox)
SharpDox
PdfiumViewer
iTextSharp (LGPL / MPL) 4.1.6 for .NET Core - Unofficial .NET Core port of iTextSharp 4.1.6. Last version to be released under the Mozilla Public License and the LGPL.
F# Formatting - F# tools for generating documentation (Markdown processor and F# code formatter)