ProjectScaffold


Project Structure

The following table gives an overview over the generated project structure:

Folder Description
.paket

These files are used to obtain NuGet dependencies during a clean build, and for other Paket-related tasks including Visual Studio Package Restore.

Do not put anything else in this directory.

bin

The primary output directory for libraries and NuGet packages generated by the build scripts (i.e. build.cmd and build.sh).

This is also the target directory when building in Visual Studio or Xamarin Studio (Note: this has to be manually configured on a per-project basis, as has been done with the example project).

Do not put anything else in this directory.

Do not commit the contents of this directory to source control.

docs/content

Use this directory for all your literate documentation source files. These should be either F# scripts (ending in .fsx) or Markdown files (ending in .md). This project includes two sample documentation scripts. Feel free to extend and/or replace these files. For more information on generating documentation, please see FSharp.Formatting.

docs/files

Contains supporting assets needed for documentation generation. For instance, image files that are to be linked/embedded in the final documentation.

docs/output

Contains the final artifacts for both narrative and API documentation. This folder will be automatically created by the documentation generation process.

Do not put anything else in this directory.

Do not commit this directory to source control.

docs/tools

Contains tools used in the generation of both narrative documentation and API documentation. Edit generate.fsx to include the appropriate repository information (see the following table for more details).

docs/tools/templates

Contains the (default) Razor template used as part of generating documentation. You are encouraged to edit this template. You may also wish to create additional templates; that will involve making edits to generate.fsx.

lib

Any libraries on which your project depends that are NOT managed via NuGet should be kept in this directory. This typically includes custom builds of third-party software, private (i.e. to a company) codebases, and native libraries.

nuget

Stores the NuGet package specifications for your project, typically a .nuspec file.

packages

Contains any NuGet packages on which your project depends will be downloaded to this directory.

Do not put anything else in this directory.

Do not commit the contents of this directory to source control.

src

The actual codebase (e.g. one, or more, F# projects) in your solution. The project files are automatically renamed from (FSharp.ProjectTemplate) when initializing the project.

NOTE: When you add projects to this directory, you will need to edit build.fsx and/or generate.fsx. You will also need to update your .sln file(s).

NOTE: Do not place test projects in this path; such files belong in the tests directory.

temp

This directory is used by the build process as a "scratch", or working, area.

Do not put anything else in this directory.

Do not commit the contents of this directory to source control.

tests

Contains your test projects (i.e. libraries leveraging NUnit, xUnit, MBUnit, etc.). The sample project included in this directory is configured to use NUnit. Further, build.fsx is coded to execute these tests as part of the build process.

NOTE: If you add aditional projects to this directory, you may need to edit build.fsx and/or generate.fsx. You will, likely, also need to update your .sln file(s).

Fork me on GitHub