private PackageRestoreUnconfiguredInput MergeRestoreInputs(IReadOnlyCollection <PackageRestoreConfiguredInput> inputs) { // If there are no updates, we have no active configurations ProjectRestoreInfo?restoreInfo = null; if (inputs.Count != 0) { // We need to combine the snapshots from each implicitly active configuration (ie per TFM), // resolving any conflicts, which we'll report to the user. string msbuildProjectExtensionsPath = ResolveMSBuildProjectExtensionsPathConflicts(inputs); string originalTargetFrameworks = ResolveOriginalTargetFrameworksConflicts(inputs); string projectAssetsFilePath = ResolveProjectAssetsFilePathConflicts(inputs); IVsReferenceItems toolReferences = ResolveToolReferenceConflicts(inputs); IVsTargetFrameworks2 targetFrameworks = GetAllTargetFrameworks(inputs); restoreInfo = new ProjectRestoreInfo( msbuildProjectExtensionsPath, projectAssetsFilePath, originalTargetFrameworks, targetFrameworks, toolReferences); } return(new PackageRestoreUnconfiguredInput(restoreInfo, inputs)); }
public ProjectRestoreInfo(string msbuildProjectExtensionsPath, string originalTargetFrameworks, IVsTargetFrameworks2 targetFrameworks, IVsReferenceItems toolReferences) { MSBuildProjectExtensionsPath = msbuildProjectExtensionsPath; OriginalTargetFrameworks = originalTargetFrameworks; TargetFrameworks = targetFrameworks; ToolReferences = toolReferences; }
private static void AppendReferences(IncrementalHasher hasher, IVsReferenceItems references) { foreach (IVsReferenceItem reference in references) { AppendProperty(hasher, nameof(reference.Name), reference.Name); AppendReferenceProperties(hasher, reference); } }
public TargetFrameworkInfo(string targetFrameworkMoniker, IVsReferenceItems frameworkReferences, IVsReferenceItems packageDownloads, IVsReferenceItems projectReferences, IVsReferenceItems packageReferences, IVsProjectProperties properties) { TargetFrameworkMoniker = targetFrameworkMoniker; FrameworkReferences = frameworkReferences; PackageDownloads = packageDownloads; ProjectReferences = projectReferences; PackageReferences = packageReferences; Properties = properties; }
public ProjectRestoreInfo(string msbuildProjectExtensionsPath, string originalTargetFrameworks, IVsTargetFrameworks2 targetFrameworks, IVsReferenceItems toolReferences) { Requires.NotNull(msbuildProjectExtensionsPath, nameof(msbuildProjectExtensionsPath)); Requires.NotNull(originalTargetFrameworks, nameof(originalTargetFrameworks)); Requires.NotNull(targetFrameworks, nameof(targetFrameworks)); Requires.NotNull(toolReferences, nameof(toolReferences)); MSBuildProjectExtensionsPath = msbuildProjectExtensionsPath; OriginalTargetFrameworks = originalTargetFrameworks; TargetFrameworks = targetFrameworks; ToolReferences = toolReferences; }
public ProjectRestoreInfo(string baseIntermediatePath, string originalTargetFrameworks, IVsTargetFrameworks targetFrameworks, IVsReferenceItems toolReferences) { Requires.NotNullOrEmpty(baseIntermediatePath, nameof(baseIntermediatePath)); Requires.NotNull(originalTargetFrameworks, nameof(originalTargetFrameworks)); Requires.NotNull(targetFrameworks, nameof(targetFrameworks)); Requires.NotNull(toolReferences, nameof(toolReferences)); BaseIntermediatePath = baseIntermediatePath; OriginalTargetFrameworks = originalTargetFrameworks; TargetFrameworks = targetFrameworks; ToolReferences = toolReferences; }
public TargetFrameworkInfo(string targetFrameworkMoniker, IVsReferenceItems projectReferences, IVsReferenceItems packageReferences, IVsProjectProperties properties) { Requires.NotNullOrEmpty(targetFrameworkMoniker, nameof(targetFrameworkMoniker)); Requires.NotNull(projectReferences, nameof(projectReferences)); Requires.NotNull(packageReferences, nameof(packageReferences)); Requires.NotNull(properties, nameof(properties)); TargetFrameworkMoniker = targetFrameworkMoniker; ProjectReferences = projectReferences; PackageReferences = packageReferences; Properties = properties; }
public VsTargetFrameworkInfo3( string targetFrameworkMoniker, IEnumerable <IVsReferenceItem> packageReferences, IEnumerable <IVsReferenceItem> projectReferences, IEnumerable <IVsReferenceItem> packageDownloads, IEnumerable <IVsReferenceItem> frameworkReferences, IEnumerable <IVsProjectProperty> projectProperties, IEnumerable <IVsReferenceItem> centralPackageVersions) { if (string.IsNullOrEmpty(targetFrameworkMoniker)) { throw new ArgumentException("Argument cannot be null or empty", nameof(targetFrameworkMoniker)); } if (packageReferences == null) { throw new ArgumentNullException(nameof(packageReferences)); } if (projectReferences == null) { throw new ArgumentNullException(nameof(projectReferences)); } if (packageDownloads == null) { throw new ArgumentNullException(nameof(packageDownloads)); } if (frameworkReferences == null) { throw new ArgumentNullException(nameof(frameworkReferences)); } if (projectProperties == null) { throw new ArgumentNullException(nameof(projectProperties)); } if (centralPackageVersions == null) { throw new ArgumentNullException(nameof(centralPackageVersions)); } TargetFrameworkMoniker = targetFrameworkMoniker; PackageReferences = new VsReferenceItems(packageReferences); ProjectReferences = new VsReferenceItems(projectReferences); PackageDownloads = new VsReferenceItems(packageDownloads); FrameworkReferences = new VsReferenceItems(frameworkReferences); Properties = new VsProjectProperties(projectProperties); CentralPackageVersions = new VsReferenceItems(centralPackageVersions); }
public VsTargetFrameworkInfo2( string targetFrameworkMoniker, IEnumerable <IVsReferenceItem> packageReferences, IEnumerable <IVsReferenceItem> projectReferences, IEnumerable <IVsReferenceItem> packageDownloads, IEnumerable <IVsReferenceItem> frameworkReferences, IEnumerable <IVsProjectProperty> projectProperties, string originalTargetFramework = null, bool addTargetFrameworkProperties = true) { if (string.IsNullOrEmpty(targetFrameworkMoniker)) { throw new ArgumentException("Argument cannot be null or empty", nameof(targetFrameworkMoniker)); } if (packageReferences == null) { throw new ArgumentNullException(nameof(packageReferences)); } if (projectReferences == null) { throw new ArgumentNullException(nameof(projectReferences)); } if (packageDownloads == null) { throw new ArgumentNullException(nameof(packageDownloads)); } if (frameworkReferences == null) { throw new ArgumentNullException(nameof(frameworkReferences)); } if (projectProperties == null) { throw new ArgumentNullException(nameof(projectProperties)); } TargetFrameworkMoniker = targetFrameworkMoniker; PackageReferences = new VsReferenceItems(packageReferences); ProjectReferences = new VsReferenceItems(projectReferences); PackageDownloads = new VsReferenceItems(packageDownloads); FrameworkReferences = new VsReferenceItems(frameworkReferences); Properties = addTargetFrameworkProperties ? new VsProjectProperties(ProjectRestoreInfoBuilder.GetTargetFrameworkProperties(targetFrameworkMoniker, originalTargetFramework).Concat(projectProperties)) : new VsProjectProperties(projectProperties); }
private static void LogReferenceItems(BatchLogger logger, string heading, IVsReferenceItems references) { logger.WriteLine(heading); logger.IndentLevel++; foreach (IVsReferenceItem reference in references) { IEnumerable <string> properties = reference.Properties.Cast <IVsReferenceProperty>() .Select(prop => $"{prop.Name}:{prop.Value}"); logger.WriteLine($"{reference.Name} -- ({string.Join(" | ", properties)})"); } logger.IndentLevel--; }
private static IVsReferenceItems GetProjectReferences(IImmutableDictionary <string, IImmutableDictionary <string, string> > projectReferenceItems) { IVsReferenceItems referenceItems = GetReferences(projectReferenceItems); // compute project file full path property for each reference foreach (ReferenceItem item in referenceItems) { IVsReferenceProperty fullPathProperty = item.Properties.Item(ProjectReference.FullPathProperty); ((ReferenceProperties)item.Properties).Add(new ReferenceProperty { Name = ProjectFileFullPathProperty, Value = fullPathProperty?.Value }); } return(referenceItems); }
private IVsProjectRestoreInfo2 MergeRestoreData(IReadOnlyCollection <ProjectRestoreUpdate> updates) { // We have no active configuration if (updates.Count == 0) { return(null); } // We need to combine the snapshots from each implicitly active configuration (ie per TFM), // resolving any conflicts, which we'll report to the user. string msbuildProjectExtensionsPath = ResolveMSBuildProjectExtensionsPathConflicts(updates); string originalTargetFrameworks = ResolveOriginalTargetFrameworksConflicts(updates); IVsReferenceItems toolReferences = ResolveToolReferenceConflicts(updates); IVsTargetFrameworks2 targetFrameworks = GetAllTargetFrameworks(updates); return(new ProjectRestoreInfo( msbuildProjectExtensionsPath, originalTargetFrameworks, targetFrameworks, toolReferences)); }
private static IVsReferenceItems GetProjectReferences( IImmutableDictionary <string, IImmutableDictionary <string, string> > projectReferenceItems, UnconfiguredProject project) { IVsReferenceItems referenceItems = GetReferences(projectReferenceItems); // compute project file full path property for each reference foreach (ReferenceItem item in referenceItems) { IVsReferenceProperty definingProjectDirectory = item.Properties.Item(DefiningProjectDirectoryProperty); string projectFileFullPath = definingProjectDirectory != null ? MakeRooted(definingProjectDirectory.Value, item.Name) : project.MakeRooted(item.Name); ((ReferenceProperties)item.Properties).Add(new ReferenceProperty { Name = ProjectFileFullPathProperty, Value = projectFileFullPath }); } return(referenceItems); }
/****************** * ToolReferences * ******************/ internal static void ProcessToolReferences(ProjectNames projectNames, IEnumerable targetFrameworks, IVsReferenceItems toolReferences, DependencyGraphSpec dgSpec) { var toolFramework = GetToolFramework(targetFrameworks); var packagesPath = GetRestoreProjectPath(targetFrameworks); var fallbackFolders = GetRestoreFallbackFolders(targetFrameworks).AsList(); var sources = GetRestoreSources(targetFrameworks) .Select(e => new PackageSource(e)) .ToList(); toolReferences .Cast <IVsReferenceItem>() .Select(r => ToolRestoreUtility.GetSpec( projectNames.FullName, r.Name, GetVersionRange(r), toolFramework, packagesPath, fallbackFolders, sources, projectWideWarningProperties: null)) .ForEach(ts => { dgSpec.AddRestore(ts.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(ts); }); }