A prototypical F# library (file system layout and tooling), recommended by the F# Foundation.
This sample demonstrates the suggested structure of a typical F# solution. (NOTE: this layout should NOT be used when authoring a Type Provider. For more details about doing so, please read this.) It also showcase a few popular F#-centric libraries (e.g. F# Make), as well as using some more general libraries (e.g. NUnit) from within F#.
| Folder | Descritpion |
|---|---|
| .nuget |
This directory, and the files it contains, are used to bootstrap the build process. Specifically, it enables the acquistion of NuGet dependencies on a clean build. It is further used by the build process when performing other NuGet-related tasks. These tools also facilitate the Package Restore functionality inside of Visual Studio. It is strongly recommended that nothing be put into this directory. It is strongly advised that the contents of this directory be committed to source control. |
| bin |
This directory is the primary output directory for libraries and NuGet packages when using the build system
(i.e. It is strongly recommended that nothing be put into this directory. It is strongly advised that the contents of this directory NOT be committed to source control. |
| docs/content |
Use this directory for all your narratvie documentation source files.
Said files should be either F# scripts (ending in |
| docs/files |
Use this directory to house any supporting assets needed for documentation generation. For instance, this directory might be where you place image files which are to be linked/embedded in the final documentation. |
| docs/output |
This directory will contain the final artifacts for both narrative and API documentation. This folder will be automatically created by the documenation generation process. It is strongly recommended that nothing be put into this directory. It is strongly advised that the contents of this directory NOT be committed to source control. |
| docs/tools |
This directory contains tools used in the generation of both narrative documentation and API documentation.
The main interaction with the content of this directory consists of editing |
| docs/tools/templates |
This directory contains the (default) Razor template used as part of generating documentation.
You are encouraged to edit this template. You may also create additional templates,
but that will require making edits to |
| lib |
Any libraries on which your project depends and which 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 |
You should use this directory to store any artifacts required to produce a NuGet package for your project.
This typically includes a |
| packages |
Any NuGet packages on which your project depends will be downloaded to this directory. Additionally, packages required by the build process will be stored here. It is strongly advised that the contents of this directory NOT be committed to source control. |
| src |
Use this directory to house the actual codebase (e.g. one, or more, Visual Studio F# projects) in your solution. A good way to get started is to rename the project included in this sample (FSharp.ProjectTemplate). Alternately, delete the sample project and create your own. NOTE: When you rename the sample project, or add aditional projects to this directory, you may need to edit NOTE: you should NOT place testing porjects in this path. Testing files belong in the |
| temp |
This directory is used by the build process as a "scratch", or working, area. It is strongly recommended that nothing be put into this directory. It is strongly advised that the contents of this directory NOT be committed to source control. |
| tests |
Use this directory to house any testing projects you might develop (i.e. libraries leveraging NUnit, xUnit, MBUnit, et cetera).
The sample project included in this directory is configured to use NUnit. Further, NOTE: When you rename the sample project, or add aditional projects to this directory, you may need to edit |
