public static PackageReferenceContextInfo Create(PackageReference packageReference) { Assumes.NotNull(packageReference); var packageReferenceContextInfo = new PackageReferenceContextInfo(packageReference.PackageIdentity, packageReference.TargetFramework) { IsAutoReferenced = (packageReference as BuildIntegratedPackageReference)?.Dependency?.AutoReferenced == true, AllowedVersions = packageReference.AllowedVersions, IsUserInstalled = packageReference.IsUserInstalled, IsDevelopmentDependency = packageReference.IsDevelopmentDependency }; return(packageReferenceContextInfo); }
public static TransitivePackageReferenceContextInfo Create(TransitivePackageReference transitivePackageReference) { if (transitivePackageReference == null) { throw new ArgumentNullException(nameof(transitivePackageReference)); } var prCtxInfo = PackageReferenceContextInfo.Create(transitivePackageReference); var tranPkgRefCtxInfo = Create(prCtxInfo); tranPkgRefCtxInfo.TransitiveOrigins = transitivePackageReference.TransitiveOrigins.Select(pr => PackageReferenceContextInfo.Create(pr)).ToList(); return(tranPkgRefCtxInfo); }
protected override IPackageReferenceContextInfo?DeserializeCore(ref MessagePackReader reader, MessagePackSerializerOptions options) { PackageIdentity?identity = null; NuGetFramework? framework = null; bool isUserInstalled = false; bool isAutoReferenced = false; bool isDevelopmentDependency = false; string? allowedVersions = null; int propertyCount = reader.ReadMapHeader(); for (int propertyIndex = 0; propertyIndex < propertyCount; propertyIndex++) { switch (reader.ReadString()) { case IdentityPropertyName: identity = PackageIdentityFormatter.Instance.Deserialize(ref reader, options); break; case FrameworkPropertyName: framework = NuGetFrameworkFormatter.Instance.Deserialize(ref reader, options); break; case IsUserInstalledPropertyName: isUserInstalled = reader.ReadBoolean(); break; case IsAutoReferencedPropertyName: isAutoReferenced = reader.ReadBoolean(); break; case IsDevelopmentDependencyPropertyName: isDevelopmentDependency = reader.ReadBoolean(); break; case AllowedVersionsPropertyName: if (!reader.TryReadNil()) // Advances beyond the current value if the current value is nil and returns true; otherwise leaves the reader's position unchanged and returns false. { allowedVersions = reader.ReadString(); } break; default: reader.Skip(); break; } } Assumes.NotNull(identity); Assumes.NotNull(framework); var packageReferenceContextInfo = new PackageReferenceContextInfo(identity, framework) { IsUserInstalled = isUserInstalled, IsAutoReferenced = isAutoReferenced, IsDevelopmentDependency = isDevelopmentDependency }; if (!string.IsNullOrWhiteSpace(allowedVersions) && VersionRange.TryParse(allowedVersions, out VersionRange versionRange)) { packageReferenceContextInfo.AllowedVersions = versionRange; } return(packageReferenceContextInfo); }
public IPackageReferenceContextInfo?Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) { if (reader.TryReadNil()) { return(null); } // stack overflow mitigation - see https://github.com/neuecc/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf options.Security.DepthStep(ref reader); try { PackageIdentity?identity = null; NuGetFramework? framework = null; bool isUserInstalled = false; bool isAutoReferenced = false; bool isDevelopmentDependency = false; string? allowedVersions = null; int propertyCount = reader.ReadMapHeader(); for (int propertyIndex = 0; propertyIndex < propertyCount; propertyIndex++) { switch (reader.ReadString()) { case IdentityPropertyName: identity = PackageIdentityFormatter.Instance.Deserialize(ref reader, options); break; case FrameworkPropertyName: framework = NuGetFrameworkFormatter.Instance.Deserialize(ref reader, options); break; case IsUserInstalledPropertyName: isUserInstalled = reader.ReadBoolean(); break; case IsAutoReferencedPropertyName: isAutoReferenced = reader.ReadBoolean(); break; case IsDevelopmentDependencyPropertyName: isDevelopmentDependency = reader.ReadBoolean(); break; case AllowedVersionsPropertyName: if (!reader.TryReadNil()) // Advances beyond the current value if the current value is nil and returns true; otherwise leaves the reader's position unchanged and returns false. { allowedVersions = reader.ReadString(); } break; default: reader.Skip(); break; } } Assumes.NotNull(identity); Assumes.NotNull(framework); var packageReferenceContextInfo = new PackageReferenceContextInfo(identity, framework) { IsUserInstalled = isUserInstalled, IsAutoReferenced = isAutoReferenced, IsDevelopmentDependency = isDevelopmentDependency }; if (!string.IsNullOrWhiteSpace(allowedVersions) && VersionRange.TryParse(allowedVersions, out VersionRange versionRange)) { packageReferenceContextInfo.AllowedVersions = versionRange; } return(packageReferenceContextInfo); } finally { // stack overflow mitigation - see https://github.com/neuecc/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf reader.Depth--; } }