in src/VSSetup.PowerShell/PackageReference.cs [28:51]
internal PackageReference(ISetupPackageReference reference)
{
Validate.NotNull(reference, nameof(reference));
// The package reference ID is required, but then try to set other properties to release the COM object and its resources ASAP.
Id = reference.GetId();
Utilities.TrySet(ref version, nameof(Version), () =>
{
var versionString = reference.GetVersion();
if (Utilities.TryParseVersion(versionString, out Version version))
{
return version;
}
return null;
});
Utilities.TrySet(ref chip, nameof(Chip), reference.GetChip);
Utilities.TrySet(ref branch, nameof(Branch), reference.GetBranch);
Utilities.TrySet(ref type, nameof(Type), reference.GetType);
Utilities.TrySet(ref isExtension, nameof(IsExtension), reference.GetIsExtension);
Utilities.TrySet(ref uniqueId, nameof(UniqueId), reference.GetUniqueId);
}