Paket.Core 12.0.0-alpha005

This is a prerelease version of Paket.Core.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Paket.Core --version 12.0.0-alpha005
                    
NuGet\Install-Package Paket.Core -Version 12.0.0-alpha005
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Paket.Core" Version="12.0.0-alpha005" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Paket.Core" Version="12.0.0-alpha005" />
                    
Directory.Packages.props
<PackageReference Include="Paket.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Paket.Core --version 12.0.0-alpha005
                    
#r "nuget: Paket.Core, 12.0.0-alpha005"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Paket.Core@12.0.0-alpha005
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Paket.Core&version=12.0.0-alpha005&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Paket.Core&version=12.0.0-alpha005&prerelease
                    
Install as a Cake Tool

CI Build status NuGet Status Join the chat at https://gitter.im/fsprojects/Paket Twitter

Paket

A dependency manager for .NET with support for NuGet packages and git repositories.

Why Paket?

NuGet did not separate out the concept of transitive dependencies. If you install a package into your project and that package has further dependencies then all transitive packages are included in the packages.config. There is no way to tell which packages are only transitive dependencies.

Even more importantly: If two packages reference conflicting versions of a package, NuGet will silently take the latest version (read more). You have no control over this process.

Paket on the other hand maintains this information on a consistent and stable basis within the paket.lock file in the solution root. This file, together with the paket.dependencies file enables you to determine exactly what's happening with your dependencies.

Paket also enables you to reference files directly from git repositories or any http-resource.

For more reasons see the FAQ.

Online resources

Troubleshooting and support

Quick contributing guide

  • Fork and clone locally.
  • Build the solution with Visual Studio, build.cmd or build.sh.
  • Create a topic specific branch in git. Add a nice feature in the code. Do not forget to add tests and/or docs.
  • Run build.cmd (build.sh on Linux/macOS) to make sure all tests are still passing.
  • When built, you'll find the binaries in ./bin which you can then test with locally, to ensure the bug or feature has been successfully implemented.
  • Send a Pull Request.

If you want to contribute to the docs then please modify the markdown files in /docs/content and send a pull request. Note, that short description and syntax for each command is generated automatically from the Paket.Commands module.

License

The MIT license

Maintainer(s)

The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on Paket.Core:

Package Downloads
Fake.Runtime

FAKE - F# Make - is a build automation tool for .NET. Tasks and dependencies are specified in a DSL which is integrated in F#.

dotnet-fake

FAKE - F# Make - is a build automation tool for .NET. Tasks and dependencies are specified in a DSL which is integrated in F#.

Tfs.Build.Paket

A set of TFS build tasks around getting and using paket

Queil.FSharp.DependencyManager.Paket

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
12.0.0-alpha006 0 11/8/2026
12.0.0-alpha005 44 11/7/2026
12.0.0-alpha004 236 11/1/2026
12.0.0-alpha003 123 10/26/2026
12.0.0-alpha002 174 10/17/2026
12.0.0-alpha001 219 10/11/2026
11.0.1 1,465 10/11/2026
11.0.0 1,089 10/5/2026
11.0.0-alpha004 106 10/5/2026
11.0.0-alpha003 116 9/27/2026
10.3.1 6,151 1/20/2026
10.2.1 2,543 1/19/2026
10.2.0 173 1/19/2026
10.1.1 207 1/19/2026
10.0.1 209 1/19/2026
10.0.0-alpha011 8,591 11/11/2025
10.0.0-alpha009 387 11/11/2025
10.0.0-alpha007 358 11/11/2025
10.0.0-alpha006 352 11/11/2025
10.0.0-alpha005 356 11/11/2025
Loading failed

Git dependencies restore again when the git cache doesn't have their repository yet, as on a fresh CI agent: since 11.0.0, Paket ran `git remote set-url` in the empty cache folder that its lock had created - https://github.com/fsprojects/Paket/issues/4461
The paket-files of a git dependency are checked out when the HEAD of its git cache names a branch that is gone, as after the repository renamed its default branch, instead of failing with "bad revision 'HEAD'"
A git dependency whose checkout failed, as for a file name too long for the file system, is cloned again at the next restore, instead of being taken for one with local changes or for an up-to-date one
A local git dependency without a branch, whose repository has no master, gets an error that suggests giving its branch, as in `git file:///path/to/repository main`
A process that Paket starts and that exits right away, such as a git command, the `build:` command of a git dependency or a credential provider, no longer fails with "Start of process ... failed". For a local git repository, the error showed as "Could not find hash for ..."
Local git dependencies with a Windows path, like `git file:///C:/code/repo`, resolve again: since 11.0.0 and https://github.com/fsprojects/Paket/pull/4377, their path kept the `/` before the drive letter
A broken git cache in `~/.paket/git/db` is set up again instead of making git change the repository of a parent folder, such as a dotfiles repository in the home folder, and the git cache works with `safe.bareRepository=explicit`
The path of a local git repository can escape characters, like `git file:///home/me/my repo`, and its folder name is read from a Windows path that ends with `\` or doesn't exist yet, and from a path to the `.git` folder of the repository, like `git file:///home/me/repo/.git`. Such a path used to give an empty or a whole path as the name of the git cache and paket-files folders. A repository at the root of a file system, which has no folder name, or whose path ends with `.` or `..`, fails with an error. A folder name that holds a `%`, like `git file:///home/me/100%`, is checked out too
A paket-files folder of a git dependency that isn't a clone, as one committed with the project, is cloned again. Paket used to run its git commands on the repository of the project instead, and could check the dependency out over the project
A git dependency on an annotated tag is locked at the commit of the tag, not at the tag object, which made each restore download it again. A lock file that holds the tag object still restores, and gets the commit at the next update
Only the `.git` that ends the name of a git repository, in any case as in `Repo.GIT`, is left out of its folder name, so `git https://github.com/me/me.github.io.git` goes to `paket-files/github.com/me/me.github.io` instead of `mehub.io`. The paket-files folder of a repository with `.git` inside its name, or another case of `.git` at its end, moves. A remote URL to the `.git` folder of a repository, like `git ssh://host/home/me/repo/.git`, is named after the folder of the repository, as a local one is, instead of taking the paket-files folder of its owner
The git cache of a repository is `~/.paket/git/db/<owner>/<project>`, so that remote repositories of the same name from two owners no longer share one, and swap its branches on each fetch. Local repositories of the same folder name still share one. Each repository is cloned again once, and `paket clear-cache` removes the old caches
`paket install` no longer rewrites the framework restrictions of unchanged packages in paket.lock when it saves it for another reason, such as a removed `github` file, in groups with a `framework:` line: these restrictions are written in a single, shorter form, without empty clauses like `(&& (== net10.0) (== net461))`. The restrictions of the dependencies are rewritten once at the next `paket install`, and those of the packages when their group is resolved again; they hold the same frameworks
The restore no longer rewrites `.paket/Paket.Restore.targets` when only its line endings differ from the ones of Paket, as after a checkout with other line endings, which showed it as changed in git after each restore. The same goes for `.paket/paket.targets` and the other files that the restore writes
When the restore updates `.paket/Paket.Restore.targets`, as for a new version of Paket, the file keeps its line endings instead of taking the ones of the machine that built Paket. The same goes for `.paket/paket.targets` and the other files that the restore writes