This is an F# Template for:
- creating and publishing libraries targeting .NET Full
net461
and Corenetstandard2.1
- creating and publishing applications targeting .NET Core
netcoreapp3.1
This takes away the ambiguity that developers face when creating an OSS project. Such as:
- How do I structure my project?
- How do I create repeatable builds?
- Which test framework should I use?
- How do I create releases easily?
- What Issue/Pull Request templates should I use?
- How should I go about creating documentation?
- How do I get CI setup easily?
- What's the standard .gitignore file?
- What other things would make it easier for me when starting off creating a project I might not even know about?
- Standard project structure for your dotnet application
- Build Automation tool via FAKE
- Package management tool via Paket
- Unit Testing via Expecto
- Code Coverage via Altcover
- Also builds an html report with ReportGenerator
- Code formatting style via Fantomas
Release
build step commits latest CHANGELOG.md in the body and creates a git tag.- If you reference a Pull Request in the
CHANGELOG.md
it will update that Pull Request with the version it was released in.
- If you reference a Pull Request in the
Release
build step publishes a GitHub Release via the CHANGELOG.md and adds any artifacts (nuget/zip/targz/etc).- Continuous integration via AppVeyor (Windows) and TravisCI (Linux) or GitHub Actions
For Libraries
- Builds for both
net461
andnetstandard2.1
- Target Frameworks- To build for
net461
- On windows: Have at least .NET Framework 4.6.1 installed
- On macOS/linux: Have mono installed
- To build for
netstandard2.1
- Have .NET core 3.1 installed
- To build for
- Sourcelink which enables a great source debugging experience for your users, by adding source control metadata to your built assets
- Documentation Generation - Generates Documentation from markdown files, fsx files, and the XML Documentation Comments from your library.
- Release build step pushes NuGet packages to NuGet
- Generates Package Version from
CHANGELOG.md
- Adds Package Release Notes metadata from
CHANGELOG.md
- Generates Package Version from
For Applications
- Basic argument parsing example via Argu
- Builds a
netcoreapp3.1
application - Target Frameworks- To build for
netcoreapp3.1
- Have .NET core 3.1 installed
- To build for
- Builds for
win-x64
,osx-x64
andlinux-x64
- Runtime Identifiers. Bundles the application via dotnet-packaging- Bundles the
win-x64
application in a .zip file. - Bundles the
osx-x64
application in a .tar.gz file. - Bundles the
linux-x64
application in a .tar.gz file.
- Bundles the
Install the dotnet template from NuGet:
dotnet new -i "MiniScaffold::*"
Then choose:
dotnet new mini-scaffold -n MyCoolNewLib --githubUsername MyGithubUsername
dotnet new mini-scaffold -n MyCoolNewApp --githubUsername MyGithubUsername -ou console
macOS/Linux | Windows |
---|---|
Stable | Prerelease |
---|---|
This is used to automatically configure author information in the NuGet package, as well as configure push urls for repo locations.
Defaults to Library
When set to either Console or Library project and the supporting infrastructure around their respective types.
-bash: ./build.sh: Permission denied
This is because dotnet template loses permissions of files. (TheAngryByrd#37) added a post hook to address this but this only fixes it for dotnet sdk 2.x users. dotnet sdk 1.x will need to run chmod +x ./build.sh
Appveyor's conventions around generating URLs based on the project name has some nuances. See this issue for details.