in src/NuGet.Core/NuGet.Versioning/FloatRange.cs [112:191]
public bool Satisfies(NuGetVersion version)
{
if (version == null)
{
throw new ArgumentNullException(nameof(version));
}
if (_floatBehavior == NuGetVersionFloatBehavior.AbsoluteLatest)
{
return true;
}
if (_floatBehavior == NuGetVersionFloatBehavior.Major
&& !version.IsPrerelease)
{
return true;
}
if (IncludePrerelease)
{
// everything beyond this point requires a version
if (_floatBehavior == NuGetVersionFloatBehavior.PrereleaseRevision)
{
// allow the stable version to match
return _minVersion.Major == version.Major
&& _minVersion.Minor == version.Minor
&& _minVersion.Patch == version.Patch
&& ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease);
}
else if (_floatBehavior == NuGetVersionFloatBehavior.PrereleasePatch)
{
// allow the stable version to match
return _minVersion.Major == version.Major
&& _minVersion.Minor == version.Minor
&& ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease);
}
else if (FloatBehavior == NuGetVersionFloatBehavior.PrereleaseMinor)
{
// allow the stable version to match
return _minVersion.Major == version.Major
&& ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease);
}
else if (FloatBehavior == NuGetVersionFloatBehavior.PrereleaseMajor)
{
// allow the stable version to match
return (version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease;
}
else if (_floatBehavior == NuGetVersionFloatBehavior.Prerelease)
{
// allow the stable version to match
return VersionComparer.Version.Equals(_minVersion, version)
&& ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease);
}
}
else if (_floatBehavior == NuGetVersionFloatBehavior.Revision)
{
return _minVersion.Major == version.Major
&& _minVersion.Minor == version.Minor
&& _minVersion.Patch == version.Patch
&& !version.IsPrerelease;
}
else if (_floatBehavior == NuGetVersionFloatBehavior.Patch)
{
return _minVersion.Major == version.Major
&& _minVersion.Minor == version.Minor
&& !version.IsPrerelease;
}
else if (_floatBehavior == NuGetVersionFloatBehavior.Minor)
{
return _minVersion.Major == version.Major
&& !version.IsPrerelease;
}
return false;
}