Skip to content

Add support for VersionOverride attribute in Central Package Management #122

@Meir017

Description

@Meir017

depends on #93

Description

Add IntelliSense support for the VersionOverride attribute on PackageReference elements when using NuGet's Central Package Management (CPM) feature.

Background

Central Package Management allows managing package versions centrally in a Directory.Packages.props file. The VersionOverride attribute enables individual projects to override the centrally-defined version for specific packages:

<!-- Directory.Packages.props -->
<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="PackageA" Version="1.0.0" />
  </ItemGroup>
</Project>
<!-- Project.csproj -->
<Project Sdk="Microsoft.NET.Sdk">
  <ItemGroup>
    <!-- Override the centrally-defined version -->
    <PackageReference Include="PackageA" VersionOverride="3.0.0" />
  </ItemGroup>
</Project>

Proposed Changes

  1. Update PackageReferenceCompletionProvider

    • Add VersionOverride as a supported attribute alongside Version
    • Provide package version completions for VersionOverride attribute values
    • Update attribute completion logic in HandlePackageReferenceAttributeCompletion
  2. Add completion snippets

    • Consider adding a CPM-specific PackageReference snippet that includes VersionOverride
    • Update existing element completion snippets
  3. Add help/documentation

    • Update help/items.json to include VersionOverride metadata for PackageReference
    • Include description explaining it's used in CPM scenarios
    • Note that it requires CentralPackageVersionOverrideEnabled (enabled by default)
  4. Add tests

    • Test completion for VersionOverride attribute
    • Test package version suggestions for VersionOverride values
    • Add test fixtures with CPM enabled (Directory.Packages.props)
  5. Update documentation

    • Document the new VersionOverride support in README or docs
    • Add examples showing IntelliSense for VersionOverride

References

Acceptance Criteria

  • IntelliSense suggests VersionOverride as an attribute on PackageReference elements
  • Package version completions appear when typing VersionOverride="
  • Both Version and VersionOverride attributes are supported
  • Help text/documentation explains when to use VersionOverride
  • Tests verify the completion behavior
  • Documentation is updated with examples

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions