.NET#
What licenseal reads in a .NET project. The rules that hold for every ecosystem are under How a scan works.
- Registry: NuGet.org (the
.nuspecof a package) and deps.dev; Paket dependencies are looked up onapi.nuget.orgtoo - Manifests:
.csproj/.fsproj/.vbproj,packages.config,Directory.Packages.props,Directory.Build.props/.targets,paket.dependencies - Lockfiles:
packages.lock.json,project.assets.json,paket.lock
What is read#
- A
<PackageVersion>of Central Package Management is read as the version of a versionless<PackageReference>, and$(Property)version tokens are expanded from the project file and theDirectory.Buildfiles above it. - References in every branch of a
<Choose>block are included, and the graphs of all target frameworks are merged, so a dependency of one framework only is still reported. <Import>chains inDirectory.Buildfiles are followed for relative paths only.- A package whose ID is that of a project in the scanned tree is not reported.
Dev dependencies#
These count as dev dependencies:
- a reference with
PrivateAssets="all"; - a reference with a
Condition, on itself or on its<ItemGroup>, that is a Debug / Test configuration orIsTestProjectcomparison; - a
<GlobalPackageReference>; - a package of a Paket group named
Test,Build, orTools, or whose name ends intest.
Off-registry dependencies#
A <ProjectReference> to a project the scan does not read is reported as an off-registry dependency (one it reads is the project's own code).
Not evaluated#
<Choose>conditions.- A
.nuspeclicense given as a file (<license type="file">), which is not read. nuget.config<packageSources>: no NuGet source other thanapi.nuget.orgis queried.- A project file's own
<Import>. - A
<ProjectReference>declared in aDirectory.Buildfile. - Paket
git,github,gist, andhttpsources. - Without a lockfile, the walk of each package's
.nuspecdependencies reports every version it reaches and does not unify them as a restore would.
See also#
- Dependency resolution and Versions and estimates, which apply to every ecosystem
- Network egress, for the hosts contacted and what each is asked