private static void SetCentralDependencies(IObjectWriter writer, ICollection <CentralPackageVersion> centralPackageVersions) { if (!centralPackageVersions.Any()) { return; } writer.WriteObjectStart("centralPackageVersions"); foreach (var dependency in centralPackageVersions.OrderBy(dep => dep.Name)) { writer.WriteNameValue(name: dependency.Name, value: dependency.VersionRange.ToNormalizedString()); } writer.WriteObjectEnd(); }
private static void SetDictionaryValue(IObjectWriter writer, string name, IDictionary <string, string> values) { if (values != null && values.Any()) { writer.WriteObjectStart(name); var sortedValues = values.OrderBy(pair => pair.Key, StringComparer.Ordinal); foreach (var pair in sortedValues) { writer.WriteNameValue(pair.Key, pair.Value); } writer.WriteObjectEnd(); } }
private static void WriteCompatibilityProfile(IObjectWriter writer, CompatibilityProfile data) { writer.WriteObjectStart(data.Name); var frameworkGroups = data.RestoreContexts.GroupBy(context => context.Framework); foreach (var frameworkGroup in frameworkGroups) { var name = frameworkGroup.Key.GetShortFolderName(); var runtimes = frameworkGroup.ToList(); if (runtimes.Count == 1) { // Write a string writer.WriteNameValue(name, runtimes[0].RuntimeIdentifier); } else if (runtimes.Count > 0) { writer.WriteNameArray(name, runtimes.Select(rt => rt.RuntimeIdentifier)); } } writer.WriteObjectEnd(); }
/// <summary> /// This method sorts the libraries based on the name /// This method also writes out the normalized versions to avoid cases where original string is set because it was gotten through project system vs being installed from PM UI /// </summary> private static void SetDependencies(IObjectWriter writer, string name, IEnumerable <LibraryDependency> libraryDependencies) { if (!libraryDependencies.Any()) { return; } writer.WriteObjectStart(name); foreach (var dependency in libraryDependencies.OrderBy(e => e.Name, StringComparer.Ordinal)) { var expandedMode = dependency.IncludeType != LibraryIncludeFlags.All || dependency.SuppressParent != LibraryIncludeFlagUtils.DefaultSuppressParent || dependency.Type != LibraryDependencyType.Default || dependency.AutoReferenced || (dependency.LibraryRange.TypeConstraint != LibraryDependencyTarget.Reference && dependency.LibraryRange.TypeConstraint != (LibraryDependencyTarget.All & ~LibraryDependencyTarget.Reference)); var versionRange = dependency.LibraryRange.VersionRange ?? VersionRange.All; var versionString = versionRange.ToNormalizedString(); if (expandedMode) { writer.WriteObjectStart(dependency.Name); if (dependency.IncludeType != LibraryIncludeFlags.All) { SetValue(writer, "include", dependency.IncludeType.ToString()); } if (dependency.SuppressParent != LibraryIncludeFlagUtils.DefaultSuppressParent) { SetValue(writer, "suppressParent", dependency.SuppressParent.ToString()); } if (dependency.Type != LibraryDependencyType.Default) { SetValue(writer, "type", dependency.Type.ToString()); } if (dependency.LibraryRange.TypeConstraint != LibraryDependencyTarget.Reference && dependency.LibraryRange.TypeConstraint != (LibraryDependencyTarget.All & ~LibraryDependencyTarget.Reference)) { SetValue(writer, "target", dependency.LibraryRange.TypeConstraint.ToString()); } if (VersionRange.All.Equals(versionRange) && !dependency.LibraryRange.TypeConstraintAllows(LibraryDependencyTarget.Package) && !dependency.LibraryRange.TypeConstraintAllows(LibraryDependencyTarget.Reference) && !dependency.LibraryRange.TypeConstraintAllows(LibraryDependencyTarget.ExternalProject)) { // Allow this specific case to skip the version property } else { SetValue(writer, "version", versionString); } SetValueIfTrue(writer, "autoReferenced", dependency.AutoReferenced); if (dependency.NoWarn.Count > 0) { SetArrayValue(writer, "noWarn", dependency .NoWarn .OrderBy(c => c) .Distinct() .Select(code => code.GetName()) .Where(s => !string.IsNullOrEmpty(s))); } SetValueIfTrue(writer, "generatePathProperty", dependency.GeneratePathProperty); SetValueIfTrue(writer, "versionCentrallyManaged", dependency.VersionCentrallyManaged); writer.WriteObjectEnd(); } else { writer.WriteNameValue(dependency.Name, versionString); } } writer.WriteObjectEnd(); }
private static void WritePackageDependency(IObjectWriter writer, RuntimePackageDependency data) { writer.WriteNameValue(data.Id, data.VersionRange.ToNormalizedString()); }
public void WriteNameValue(string name, bool value) { innerWriter.WriteNameValue(name, value); }
private static void SetMSBuildMetadata(IObjectWriter writer, PackageSpec packageSpec) { var msbuildMetadata = packageSpec.RestoreMetadata; if (msbuildMetadata == null) { return; } if (msbuildMetadata.ProjectUniqueName == null && msbuildMetadata.ProjectName == null && msbuildMetadata.ProjectPath == null && msbuildMetadata.ProjectJsonPath == null && msbuildMetadata.PackagesPath == null && msbuildMetadata.OutputPath == null) { return; } writer.WriteObjectStart(JsonPackageSpecReader.RestoreOptions); SetValue(writer, "projectUniqueName", msbuildMetadata.ProjectUniqueName); SetValue(writer, "projectName", msbuildMetadata.ProjectName); SetValue(writer, "projectPath", msbuildMetadata.ProjectPath); SetValue(writer, "projectJsonPath", msbuildMetadata.ProjectJsonPath); SetValue(writer, "packagesPath", msbuildMetadata.PackagesPath); SetValue(writer, "outputPath", msbuildMetadata.OutputPath); if (msbuildMetadata.ProjectStyle != ProjectStyle.Unknown) { SetValue(writer, "projectStyle", msbuildMetadata.ProjectStyle.ToString()); } SetValueIfTrue(writer, "crossTargeting", msbuildMetadata.CrossTargeting); SetValueIfTrue( writer, "legacyPackagesDirectory", msbuildMetadata.LegacyPackagesDirectory); SetValueIfTrue( writer, "validateRuntimeAssets", msbuildMetadata.ValidateRuntimeAssets); SetValueIfTrue( writer, "skipContentFileWrite", msbuildMetadata.SkipContentFileWrite); SetArrayValue(writer, "fallbackFolders", msbuildMetadata.FallbackFolders); SetArrayValue(writer, "originalTargetFrameworks", msbuildMetadata.OriginalTargetFrameworks); if (msbuildMetadata.Sources?.Count > 0) { writer.WriteObjectStart("sources"); foreach (var source in msbuildMetadata.Sources) { // "source": {} writer.WriteObjectStart(source.Source); writer.WriteObjectEnd(); } writer.WriteObjectEnd(); } if (msbuildMetadata.Files?.Count > 0) { writer.WriteObjectStart("files"); foreach (var file in msbuildMetadata.Files) { SetValue(writer, file.PackagePath, file.AbsolutePath); } writer.WriteObjectEnd(); } if (msbuildMetadata.TargetFrameworks?.Count > 0) { writer.WriteObjectStart("frameworks"); var frameworkNames = new HashSet <string>(); foreach (var framework in msbuildMetadata.TargetFrameworks) { var frameworkName = framework.FrameworkName.GetShortFolderName(); if (!frameworkNames.Contains(frameworkName)) { frameworkNames.Add(frameworkName); writer.WriteObjectStart(frameworkName); writer.WriteObjectStart("projectReferences"); foreach (var project in framework.ProjectReferences) { writer.WriteObjectStart(project.ProjectUniqueName); writer.WriteNameValue("projectPath", project.ProjectPath); if (project.IncludeAssets != LibraryIncludeFlags.All) { writer.WriteNameValue("includeAssets", LibraryIncludeFlagUtils.GetFlagString(project.IncludeAssets)); } if (project.ExcludeAssets != LibraryIncludeFlags.None) { writer.WriteNameValue("excludeAssets", LibraryIncludeFlagUtils.GetFlagString(project.ExcludeAssets)); } if (project.PrivateAssets != LibraryIncludeFlagUtils.DefaultSuppressParent) { writer.WriteNameValue("privateAssets", LibraryIncludeFlagUtils.GetFlagString(project.PrivateAssets)); } writer.WriteObjectEnd(); } writer.WriteObjectEnd(); writer.WriteObjectEnd(); } } writer.WriteObjectEnd(); } writer.WriteObjectEnd(); }
private static void SetDependencies(IObjectWriter writer, string name, IEnumerable <LibraryDependency> libraryDependencies) { if (!libraryDependencies.Any()) { return; } writer.WriteObjectStart(name); foreach (var dependency in libraryDependencies) { var expandedMode = dependency.IncludeType != LibraryIncludeFlags.All || dependency.SuppressParent != LibraryIncludeFlagUtils.DefaultSuppressParent || dependency.Type != LibraryDependencyType.Default || dependency.AutoReferenced || (dependency.LibraryRange.TypeConstraint != LibraryDependencyTarget.Reference && dependency.LibraryRange.TypeConstraint != (LibraryDependencyTarget.All & ~LibraryDependencyTarget.Reference)); var versionRange = dependency.LibraryRange.VersionRange ?? VersionRange.All; var versionString = versionRange.OriginalString; if (string.IsNullOrEmpty(versionString)) { versionString = versionRange.ToNormalizedString(); } if (expandedMode) { writer.WriteObjectStart(dependency.Name); if (dependency.IncludeType != LibraryIncludeFlags.All) { SetValue(writer, "include", dependency.IncludeType.ToString()); } if (dependency.SuppressParent != LibraryIncludeFlagUtils.DefaultSuppressParent) { SetValue(writer, "suppressParent", dependency.SuppressParent.ToString()); } if (dependency.Type != LibraryDependencyType.Default) { SetValue(writer, "type", dependency.Type.ToString()); } if (dependency.LibraryRange.TypeConstraint != LibraryDependencyTarget.Reference && dependency.LibraryRange.TypeConstraint != (LibraryDependencyTarget.All & ~LibraryDependencyTarget.Reference)) { SetValue(writer, "target", dependency.LibraryRange.TypeConstraint.ToString()); } if (VersionRange.All.Equals(versionRange) && !dependency.LibraryRange.TypeConstraintAllows(LibraryDependencyTarget.Package) && !dependency.LibraryRange.TypeConstraintAllows(LibraryDependencyTarget.Reference) && !dependency.LibraryRange.TypeConstraintAllows(LibraryDependencyTarget.ExternalProject)) { // Allow this specific case to skip the version property } else { SetValue(writer, "version", versionString); } SetValueIfTrue(writer, "autoReferenced", dependency.AutoReferenced); writer.WriteObjectEnd(); } else { writer.WriteNameValue(dependency.Name, versionString); } } writer.WriteObjectEnd(); }