in src/NuGet.Core/NuGet.ProjectModel/JsonPackageSpecReader.Utf8JsonStreamReader.cs [1302:1393]
private static List<ProjectRestoreMetadataFrameworkInfo> ReadTargetFrameworks(ref Utf8JsonStreamReader jsonReader)
{
List<ProjectRestoreMetadataFrameworkInfo> targetFrameworks = null;
if (jsonReader.Read() && jsonReader.TokenType == JsonTokenType.StartObject)
{
while (jsonReader.Read() && jsonReader.TokenType == JsonTokenType.PropertyName)
{
var frameworkPropertyName = jsonReader.GetString();
NuGetFramework framework = NuGetFramework.Parse(frameworkPropertyName);
var frameworkGroup = new ProjectRestoreMetadataFrameworkInfo(framework);
if (jsonReader.Read() && jsonReader.TokenType == JsonTokenType.StartObject)
{
while (jsonReader.Read() && jsonReader.TokenType == JsonTokenType.PropertyName)
{
if (jsonReader.ValueTextEquals(ProjectReferencesPropertyName))
{
if (jsonReader.Read() && jsonReader.TokenType == JsonTokenType.StartObject)
{
while (jsonReader.Read() && jsonReader.TokenType == JsonTokenType.PropertyName)
{
var projectReferencePropertyName = jsonReader.GetString();
string excludeAssets = null;
string includeAssets = null;
string privateAssets = null;
string projectReferenceProjectPath = null;
if (jsonReader.Read() && jsonReader.TokenType == JsonTokenType.StartObject)
{
while (jsonReader.Read() && jsonReader.TokenType == JsonTokenType.PropertyName)
{
if (jsonReader.ValueTextEquals(ExcludeAssetsPropertyName))
{
excludeAssets = jsonReader.ReadNextTokenAsString();
}
else if (jsonReader.ValueTextEquals(IncludeAssetsPropertyName))
{
includeAssets = jsonReader.ReadNextTokenAsString();
}
else if (jsonReader.ValueTextEquals(PrivateAssetsPropertyName))
{
privateAssets = jsonReader.ReadNextTokenAsString();
}
else if (jsonReader.ValueTextEquals(ProjectPathPropertyName))
{
projectReferenceProjectPath = jsonReader.ReadNextTokenAsString();
}
else
{
jsonReader.Skip();
}
}
}
frameworkGroup.ProjectReferences.Add(new ProjectRestoreReference()
{
ProjectUniqueName = projectReferencePropertyName,
ProjectPath = projectReferenceProjectPath,
IncludeAssets = LibraryIncludeFlagUtils.GetFlags(
flags: includeAssets,
defaultFlags: LibraryIncludeFlags.All),
ExcludeAssets = LibraryIncludeFlagUtils.GetFlags(
flags: excludeAssets,
defaultFlags: LibraryIncludeFlags.None),
PrivateAssets = LibraryIncludeFlagUtils.GetFlags(
flags: privateAssets,
defaultFlags: LibraryIncludeFlagUtils.DefaultSuppressParent),
});
}
}
}
else if (jsonReader.ValueTextEquals(TargetAliasPropertyName))
{
frameworkGroup.TargetAlias = jsonReader.ReadNextTokenAsString();
}
else
{
jsonReader.Skip();
}
}
targetFrameworks ??= [];
targetFrameworks.Add(frameworkGroup);
}
}
}
return targetFrameworks;
}