diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Handlers/AbstractEvaluationCommandLineHandler.cs b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Handlers/AbstractEvaluationCommandLineHandler.cs index a07e149de2c..5bc608f03a2 100644 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Handlers/AbstractEvaluationCommandLineHandler.cs +++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Handlers/AbstractEvaluationCommandLineHandler.cs @@ -77,7 +77,7 @@ public void ApplyProjectEvaluation(IWorkspaceProjectContext context, IComparable if (!difference.AnyChanges) return; - difference = HandlerServices.NormalizeRenames(difference); + difference = difference.NormalizeRenames(); EnqueueProjectEvaluation(); @@ -100,7 +100,7 @@ public void ApplyProjectBuild(IWorkspaceProjectContext context, IComparable vers if (!difference.AnyChanges) return; - difference = HandlerServices.NormalizeRenames(difference); + difference = difference.NormalizeRenames(); difference = ResolveProjectBuildConflicts(version, difference); ApplyChangesToContext(context, difference, ImmutableStringDictionary>.EmptyOrdinal, ImmutableStringDictionary>.EmptyOrdinal, isActiveContext, logger, evaluation: false); diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Handlers/DynamicItemHandler.cs b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Handlers/DynamicItemHandler.cs index 8e597815d9b..cc780de5790 100644 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Handlers/DynamicItemHandler.cs +++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Handlers/DynamicItemHandler.cs @@ -25,7 +25,7 @@ public void Handle(IWorkspaceProjectContext context, IImmutableDictionary CollectDefaultOutputs() foreach (string path in items) { - string absolutePath = _configuredProject.UnconfiguredProject.MakeRooted(path); - log.VerboseLiteral(absolutePath); - yield return absolutePath; + yield return _configuredProject.UnconfiguredProject.MakeRooted(path); } } } @@ -440,9 +439,7 @@ IEnumerable CollectDefaultOutputs() foreach (string path in items) { - string absolutePath = _configuredProject.UnconfiguredProject.MakeRooted(path); - log.VerboseLiteral(absolutePath); - yield return absolutePath; + yield return _configuredProject.UnconfiguredProject.MakeRooted(path); } } } @@ -469,7 +466,6 @@ IEnumerable CollectDefaultOutputs() foreach (string path in items) { string absolutePath = _configuredProject.UnconfiguredProject.MakeRooted(path); - log.VerboseLiteral(absolutePath); yield return (Path: absolutePath, ItemType: UpToDateCheckInput.SchemaName, IsRequired: true); } } @@ -496,9 +492,7 @@ IEnumerable CollectSetOutputs(string setName) foreach (string path in items) { - string absolutePath = _configuredProject.UnconfiguredProject.MakeRooted(path); - log.VerboseLiteral(absolutePath); - yield return absolutePath; + yield return _configuredProject.UnconfiguredProject.MakeRooted(path); } } } @@ -521,9 +515,7 @@ IEnumerable CollectSetOutputs(string setName) foreach (string path in items) { - string absolutePath = _configuredProject.UnconfiguredProject.MakeRooted(path); - log.VerboseLiteral(absolutePath); - yield return absolutePath; + yield return _configuredProject.UnconfiguredProject.MakeRooted(path); } } } diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/UpToDate/UpToDateCheckImplicitConfiguredInput.cs b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/UpToDate/UpToDateCheckImplicitConfiguredInput.cs index 91c7c6813a0..4518055054c 100644 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/UpToDate/UpToDateCheckImplicitConfiguredInput.cs +++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/UpToDate/UpToDateCheckImplicitConfiguredInput.cs @@ -29,18 +29,18 @@ public static UpToDateCheckImplicitConfiguredInput CreateDisabled(ProjectConfigu newestImportInput: null, isDisabled: true, isBuildAccelerationEnabled: false, - inputSourceItemTypes: ImmutableArray.Empty, + inputSourceItemTypes: [], inputSourceItemsByItemType: ImmutableDictionary>.Empty, upToDateCheckInputItemsByKindBySetName: ImmutableDictionary>>.Empty, upToDateCheckOutputItemsByKindBySetName: ImmutableDictionary>>.Empty, upToDateCheckBuiltItemsByKindBySetName: ImmutableDictionary>>.Empty, - buildFromInputFileItems: ImmutableArray<(string DestinationRelative, string SourceRelative)>.Empty, - resolvedAnalyzerReferencePaths: ImmutableArray.Empty, - resolvedCompilationReferencePaths: ImmutableArray.Empty, - copyReferenceInputs: ImmutableArray.Empty, - presentBuildAccelerationIncompatiblePackages: ImmutableArray.Empty, + buildFromInputFileItems: [], + resolvedAnalyzerReferencePaths: [], + resolvedCompilationReferencePaths: [], + copyReferenceInputs: [], + presentBuildAccelerationIncompatiblePackages: [], lastItemsChangedAtUtc: null, - lastItemChanges: ImmutableArray<(bool IsAdd, string ItemType, string)>.Empty, + lastItemChanges: [], itemHash: null, projectCopyData: default); } @@ -232,20 +232,20 @@ private UpToDateCheckImplicitConfiguredInput(ProjectConfiguration projectConfigu ProjectConfiguration = projectConfiguration; LastItemsChangedAtUtc = null; - InputSourceItemTypes = ImmutableArray.Empty; + InputSourceItemTypes = []; InputSourceItemsByItemType = ImmutableDictionary.Create>(StringComparers.ItemTypes); - SetNames = ImmutableArray.Empty; - KindNames = ImmutableArray.Empty; + SetNames = []; + KindNames = []; UpToDateCheckInputItemsByKindBySetName = emptyItemBySetName; UpToDateCheckOutputItemsByKindBySetName = emptyItemBySetName; UpToDateCheckBuiltItemsByKindBySetName = emptyItemBySetName; - BuiltFromInputFileItems = ImmutableArray<(string DestinationRelative, string SourceRelative)>.Empty; - ResolvedAnalyzerReferencePaths = ImmutableArray.Empty; - ResolvedCompilationReferencePaths = ImmutableArray.Empty; - CopyReferenceInputs = ImmutableArray.Empty; - PresentBuildAccelerationIncompatiblePackages = ImmutableArray.Empty; - LastItemChanges = ImmutableArray<(bool IsAdd, string ItemType, string)>.Empty; - ProjectCopyData = new(null, "", false, ImmutableArray.Empty, ImmutableArray.Empty); + BuiltFromInputFileItems = []; + ResolvedAnalyzerReferencePaths = []; + ResolvedCompilationReferencePaths = []; + CopyReferenceInputs = []; + PresentBuildAccelerationIncompatiblePackages = []; + LastItemChanges = []; + ProjectCopyData = new(null, "", false, [], []); } private UpToDateCheckImplicitConfiguredInput( @@ -370,7 +370,7 @@ public UpToDateCheckImplicitConfiguredInput Update( bool itemTypesChanged = false; - List<(bool IsAdd, string ItemType, string)> lastItemChanges = new(); + List<(bool IsAdd, string ItemType, string ItemSpec)> lastItemChanges = []; // If an item type was removed, remove all items of that type foreach (string removedItemType in itemTypeDiff.Removed) @@ -403,7 +403,9 @@ public UpToDateCheckImplicitConfiguredInput Update( // Rule name (schema name) is usually the same as its item type, but not always (eg: auto-generated rules) string? itemType = null; if (projectCatalogSnapshot.NamedCatalogs.TryGetValue(PropertyPageContexts.File, out IPropertyPagesCatalog? fileCatalog)) + { itemType = fileCatalog.GetSchema(schemaName)?.DataSource.ItemType; + } if (itemType is null || !inputSourceItemTypes.Contains(itemType)) { @@ -412,13 +414,13 @@ public UpToDateCheckImplicitConfiguredInput Update( if (!inputSourceItemsByItemTypeBuilder.TryGetValue(itemType, out ImmutableArray before)) { - before = ImmutableArray.Empty; + before = []; } projectFileClassifier ??= BuildClassifier(); var after = projectChange.After.Items - .Select(item => item.Key) + .Select(pair => pair.Key) .Where(path => !projectFileClassifier.IsNonModifiable(path)) .ToHashSet(StringComparers.Paths); @@ -601,7 +603,7 @@ ImmutableArray UpdatePresentBuildAccelerationIncompatiblePackages() } return builder is null - ? ImmutableArray.Empty + ? [] : builder.Capacity == builder.Count ? builder.MoveToImmutable() : builder.ToImmutable(); diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/Handlers/HandlerServices.cs b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/Handlers/HandlerServices.cs deleted file mode 100644 index 03e6bcb3f92..00000000000 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/Handlers/HandlerServices.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE.md file in the project root for more information. - -namespace Microsoft.VisualStudio.ProjectSystem.LanguageServices.Handlers -{ - internal static class HandlerServices - { - /// - /// Normalizes to - /// and . - /// - public static IProjectChangeDiff NormalizeRenames(IProjectChangeDiff difference) - { - // Optimize for common case - if (difference.RenamedItems.Count == 0) - return difference; - - // Treat renamed items as just as an Add and Remove, makes finding conflicts easier - IEnumerable renamedNewNames = difference.RenamedItems.Select(r => r.Value); - IEnumerable renamedOldNames = difference.RenamedItems.Select(e => e.Key); - - IImmutableSet added = difference.AddedItems.Union(renamedNewNames); - IImmutableSet removed = difference.RemovedItems.Union(renamedOldNames); - - return new ProjectChangeDiff(added, removed, difference.ChangedItems); - } - } -} diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/Items/Compile.xaml b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/Items/Compile.xaml index 4d6a72279dc..8c9b8a22a43 100644 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/Items/Compile.xaml +++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/Items/Compile.xaml @@ -4,6 +4,7 @@ PageTemplate="generic" PropertyPagesHidden="true" xmlns="http://schemas.microsoft.com/build/2009/properties"> + - - @@ -53,6 +51,9 @@ + + + /// Normalizes to + /// and . + /// + public static IProjectChangeDiff NormalizeRenames(this IProjectChangeDiff difference) + { + // Optimize for common case + if (difference.RenamedItems.Count == 0) + { + return difference; + } + + // Treat renamed items as just as an Add and Remove, makes finding conflicts easier + IEnumerable renamedNewNames = difference.RenamedItems.Select(r => r.Value); + IEnumerable renamedOldNames = difference.RenamedItems.Select(e => e.Key); + + IImmutableSet added = difference.AddedItems.Union(renamedNewNames); + IImmutableSet removed = difference.RemovedItems.Union(renamedOldNames); + + return new ProjectChangeDiff(added, removed, difference.ChangedItems); + } +}