Just getting into F#, finally figured out how to add .NET packages to projects, but the way I managed to get it to work doesn't make sense. Once the package is installed (either with nuget
or paket
), I have to manually add a reference to the project file (either by editing it directly or with dotnet add package
). This extra step is usually automated with other languages, so I presume that I'm doing something wrong.
These are the steps I did on a Mac M1:
"Install" F#
nix-shell -p dotnet-sdk_7
Follow all the steps in Get started with F# with command-line tools - .NET | Microsoft Learn. (No errors.)
Install
paket
following the install guide.Follow the walkthrough on adding dependencies.
Specifically:
- added
nuget FSharpPlus
topaket.dependencies
- created the
src/App/paket.references
with the the lineFSharpPlus
- ran
dotnet paket install
Once done, simply added
open FSharpPlus
tosrc/App/Program.fs
, and randotnet restore
followed bydotnet build
, which blew up witherror FS0039: The namespace or module 'FSharpPlus' is not defined.
- added
The fix was simple enough,
dotnet add src/App/App.fsproj package "FSharpPlus" --version "1.5.0"
but it's hard for me to believe that one has to add these references manually for each package.
update: Alright, I'm officially clueless. Just out of curiosity, I added open Giraffe.Htmx
to src/App/Program.fs
, then ran
dotnet add src/App/App.fsproj package "Giraffe.Htmx" --version "1.9.6"
dotnet build
and everything worked... So what is the point of using paket
or nuget
then?
When using Paket with F#, you shouldn't typically need to manually edit your project files to add references if you follow the correct steps. The process with Paket should automatically handle the dependencies. Here's a general workflow that should work:
paket.dependencies
file.paket.references
file in your project's directory.dotnet paket install
which should download the package and automatically update your project (.fsproj
) file to include the correct references.dotnet restore
anddotnet build
to restore any additional packages and build the project.If you're encountering issues, it's possible that there could be a problem with the Paket integration or a mismatch between the Paket version and the .NET SDK version. Checking the Paket documentation for compatibility notes or seeking help from the F# community might provide more insights. It could also be a platform-specific issue with the M1 Mac. Always ensure you are using the latest version of the tools compatible with your system.