public IEnumerable<PackageReference> GetPackageReferences()
{
XDocument document = GetDocument();
if (document == null)
{
yield break;
}
foreach (var e in document.Root.Elements("package"))
{
string id = e.GetOptionalAttributeValue("id");
string versionString = e.GetOptionalAttributeValue("version");
string versionConstraintString = e.GetOptionalAttributeValue("allowedVersions");
string targetFrameworkString = e.GetOptionalAttributeValue("targetFramework");
SemanticVersion version;
if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(versionString))
{
// If the id or version is empty, ignore the record.
continue;
}
if (!SemanticVersion.TryParse(versionString, out version))
{
throw new InvalidDataException(String.Format(CultureInfo.CurrentCulture, NuGetResources.ReferenceFile_InvalidVersion, versionString, _path));
}
IVersionSpec versionConstaint = null;
if (!String.IsNullOrEmpty(versionConstraintString))
{
if (!VersionUtility.TryParseVersionSpec(versionConstraintString, out versionConstaint))
{
throw new InvalidDataException(String.Format(CultureInfo.CurrentCulture, NuGetResources.ReferenceFile_InvalidVersion, versionConstraintString, _path));
}
_constraints[id] = versionConstraintString;
}
FrameworkName targetFramework = null;
if (!String.IsNullOrEmpty(targetFrameworkString))
{
targetFramework = VersionUtility.ParseFrameworkName(targetFrameworkString);
if (targetFramework == VersionUtility.UnsupportedFrameworkName)
{
targetFramework = null;
}
}
yield return new PackageReference(id, version, versionConstaint, targetFramework);
}
}