Beispiel #1
0
        private static LibraryDependency ToPackageLibraryDependency(IVsReferenceItem item, bool cpvmEnabled)
        {
            if (!TryGetVersionRange(item, out VersionRange versionRange))
            {
                versionRange = cpvmEnabled ? null : VersionRange.All;
            }

            var dependency = new LibraryDependency
            {
                LibraryRange = new LibraryRange(
                    name: item.Name,
                    versionRange: versionRange,
                    typeConstraint: LibraryDependencyTarget.Package),

                // Mark packages coming from the SDK as AutoReferenced
                AutoReferenced       = GetPropertyBoolOrFalse(item, "IsImplicitlyDefined"),
                GeneratePathProperty = GetPropertyBoolOrFalse(item, "GeneratePathProperty"),
                Aliases = GetPropertyValueOrNull(item, "Aliases"),
            };

            // Add warning suppressions
            foreach (var code in MSBuildStringUtility.GetNuGetLogCodes(GetPropertyValueOrNull(item, ProjectBuildProperties.NoWarn)))
            {
                dependency.NoWarn.Add(code);
            }

            MSBuildRestoreUtility.ApplyIncludeFlags(
                dependency,
                includeAssets: GetPropertyValueOrNull(item, ProjectBuildProperties.IncludeAssets),
                excludeAssets: GetPropertyValueOrNull(item, ProjectBuildProperties.ExcludeAssets),
                privateAssets: GetPropertyValueOrNull(item, ProjectBuildProperties.PrivateAssets));

            return(dependency);
        }
Beispiel #2
0
        private static LibraryDependency ToPackageLibraryDependency(IVsReferenceItem item)
        {
            var dependency = new LibraryDependency
            {
                LibraryRange = new LibraryRange(
                    name: item.Name,
                    versionRange: GetVersionRange(item),
                    typeConstraint: LibraryDependencyTarget.Package),

                // Mark packages coming from the SDK as AutoReferenced
                AutoReferenced = GetPropertyBoolOrFalse(item, "IsImplicitlyDefined"),
            };

            // Add warning suppressions
            foreach (var code in MSBuildStringUtility.GetNuGetLogCodes(GetPropertyValueOrNull(item, NoWarn)))
            {
                dependency.NoWarn.Add(code);
            }

            MSBuildRestoreUtility.ApplyIncludeFlags(
                dependency,
                includeAssets: GetPropertyValueOrNull(item, IncludeAssets),
                excludeAssets: GetPropertyValueOrNull(item, ExcludeAssets),
                privateAssets: GetPropertyValueOrNull(item, PrivateAssets));

            return(dependency);
        }
 private static void AppendReferenceProperties(IncrementalHasher hasher, IVsReferenceItem reference)
 {
     foreach (IVsReferenceProperty property in reference.Properties)
     {
         AppendProperty(hasher, property.Name, property.Value);
     }
 }
Beispiel #4
0
 private static VersionRange GetVersionRange(IVsReferenceItem item)
 {
     if (TryGetVersionRange(item, out VersionRange versionRange))
     {
         return(versionRange);
     }
     return(VersionRange.All);
 }
Beispiel #5
0
        private static CentralPackageVersion ToCentralPackageVersion(IVsReferenceItem item)
        {
            string       id                    = item.Name;
            VersionRange versionRange          = GetVersionRange(item);
            var          centralPackageVersion = new CentralPackageVersion(id, versionRange);

            return(centralPackageVersion);
        }
Beispiel #6
0
        private static VersionRange GetVersionRange(IVsReferenceItem item)
        {
            var versionRange = GetPropertyValueOrNull(item, "Version");

            if (versionRange != null)
            {
                return(VersionRange.Parse(versionRange));
            }

            return(VersionRange.All);
        }
Beispiel #7
0
        private static bool TryGetVersionRange(IVsReferenceItem item, out VersionRange versionRange)
        {
            versionRange = null;
            string versionRangeItemValue = GetPropertyValueOrNull(item, "Version");

            if (versionRangeItemValue != null)
            {
                versionRange = VersionRange.Parse(versionRangeItemValue);
            }

            return(versionRange != null);
        }
Beispiel #8
0
        private static DownloadDependency ToPackageDownloadDependency(IVsReferenceItem item)
        {
            var id           = item.Name;
            var versionRange = GetVersionRange(item);

            if (!(versionRange.HasLowerAndUpperBounds && versionRange.MinVersion.Equals(versionRange.MaxVersion)))
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.Error_PackageDownload_OnlyExactVersionsAreAllowed, versionRange.OriginalString));
            }

            var downloadDependency = new DownloadDependency(id, versionRange);

            return(downloadDependency);
        }
Beispiel #9
0
        private static string GetPropertyValueOrNull(
            IVsReferenceItem item, string propertyName)
        {
            try
            {
                return(MSBuildStringUtility.TrimAndGetNullForEmpty(item.Properties?.Item(propertyName)?.Value));
            }
            catch (ArgumentException)
            {
            }
            catch (KeyNotFoundException)
            {
            }

            return(null);
        }
Beispiel #10
0
        private static bool GetPropertyBoolOrFalse(
            IVsReferenceItem item, string propertyName)
        {
            try
            {
                return(MSBuildStringUtility.IsTrue(item.Properties?.Item(propertyName)?.Value));
            }
            catch (ArgumentException)
            {
            }
            catch (KeyNotFoundException)
            {
            }

            return(false);
        }
        private static IEnumerable <VersionRange> GetVersionRangeList(IVsReferenceItem item)
        {
            char[] splitChars    = new[] { ';' };
            string versionString = GetPropertyValueOrNull(item, "Version");

            if (versionString != null)
            {
                var versions = versionString.Split(splitChars, StringSplitOptions.RemoveEmptyEntries);
                foreach (var version in versions)
                {
                    yield return(VersionRange.Parse(version));
                }
            }
            else
            {
                yield return(VersionRange.All);
            }
        }
        private static LibraryDependency ToPackageLibraryDependency(IVsReferenceItem item)
        {
            var dependency = new LibraryDependency
            {
                LibraryRange = new LibraryRange(
                    name: item.Name,
                    versionRange: GetVersionRange(item),
                    typeConstraint: LibraryDependencyTarget.Package),

                // Mark packages coming from the SDK as AutoReferenced
                AutoReferenced = GetPropertyBoolOrFalse(item, "IsImplicitlyDefined")
            };

            MSBuildRestoreUtility.ApplyIncludeFlags(
                dependency,
                includeAssets: GetPropertyValueOrNull(item, IncludeAssets),
                excludeAssets: GetPropertyValueOrNull(item, ExcludeAssets),
                privateAssets: GetPropertyValueOrNull(item, PrivateAssets));

            return(dependency);
        }
Beispiel #13
0
        private static ProjectRestoreReference ToProjectRestoreReference(IVsReferenceItem item, string projectDirectory)
        {
            // The path may be a relative path, to match the project unique name as a
            // string this should be the full path to the project
            // Remove ../../ and any other relative parts of the path that were used in the project file
            var referencePath = Path.GetFullPath(Path.Combine(projectDirectory, item.Name));

            var dependency = new ProjectRestoreReference
            {
                ProjectPath       = referencePath,
                ProjectUniqueName = referencePath,
            };

            MSBuildRestoreUtility.ApplyIncludeFlags(
                dependency,
                includeAssets: GetPropertyValueOrNull(item, ProjectBuildProperties.IncludeAssets),
                excludeAssets: GetPropertyValueOrNull(item, ProjectBuildProperties.ExcludeAssets),
                privateAssets: GetPropertyValueOrNull(item, ProjectBuildProperties.PrivateAssets));

            return(dependency);
        }
 private static PackageSpec ToToolPackageSpec(ProjectNames projectNames, IVsReferenceItem item)
 {
     return(ToolRestoreUtility.GetSpec(projectNames.FullName, item.Name, GetVersionRange(item), LockFile.ToolFramework));
 }
        private bool ValidateToolReference(Dictionary <string, IVsReferenceItem> existingReferences, IVsReferenceItem reference)
        {
            if (existingReferences.TryGetValue(reference.Name, out IVsReferenceItem existingReference))
            {
                // CLI tool references are project-wide, so if they have conflicts in names,
                // they must have the same metadata, which avoids from having to condition
                // them so that they only appear in one TFM.
                if (!RestoreComparer.ReferenceItems.Equals(existingReference, reference))
                {
                    ReportDataSourceUserFault(
                        new Exception(string.Format(CultureInfo.CurrentCulture, VSResources.Restore_DuplicateToolReferenceItems, existingReference.Name)),
                        ProjectFaultSeverity.LimitedFunctionality,
                        ContainingProject);
                }

                return(false);
            }

            return(true);
        }
Beispiel #16
0
        /// <summary>
        /// Get the frameworkdependencyflag based on the name.
        /// </summary>
        private static FrameworkDependencyFlags GetFrameworkDependencyFlags(IVsReferenceItem item, string name)
        {
            var flags = GetPropertyValueOrNull(item, name);

            return(FrameworkDependencyFlagsUtils.GetFlags(flags));
        }
Beispiel #17
0
        private static FrameworkDependency ToFrameworkDependency(IVsReferenceItem item)
        {
            var privateAssets = GetFrameworkDependencyFlags(item, ProjectBuildProperties.PrivateAssets);

            return(new FrameworkDependency(item.Name, privateAssets));
        }
Beispiel #18
0
        /// <summary>
        /// True if ReferenceOutputAssembly is true or empty.
        /// All other values will be false.
        /// </summary>
        private static bool IsReferenceOutputAssemblyTrueOrEmpty(IVsReferenceItem item)
        {
            var value = GetPropertyValueOrNull(item, ProjectBuildProperties.ReferenceOutputAssembly);

            return(MSBuildStringUtility.IsTrueOrEmpty(value));
        }