diff --git a/docs/usage/nuget.md b/docs/usage/nuget.md index 53739b42d26f66..d2da302a5dbf96 100644 --- a/docs/usage/nuget.md +++ b/docs/usage/nuget.md @@ -20,7 +20,7 @@ To convert your .NET Framework `.csproj`/`.fsproj`/`.vbproj` into an SDK-style p ## How It Works 1. Renovate will search each repository for any files with a `.csproj`, `.fsproj`, or `.vbproj` extension. -2. Existing dependencies will be extracted from `` tags +2. Existing dependencies will be extracted from `` and `` tags 3. Renovate will look up the latest version on [nuget.org](https://nuget.org) (or on [alternate feeds](#Alternate%20feeds)) to determine if any upgrades are available 4. If the source package includes a GitHub URL as its source, and has either a "changelog" file or uses GitHub releases, then Release Notes for each version will be embedded in the generated PR. diff --git a/lib/manager/nuget/__fixtures__/with-centralized-package-versions/Directory.Packages.props b/lib/manager/nuget/__fixtures__/with-centralized-package-versions/Directory.Packages.props new file mode 100644 index 00000000000000..9ea11844c56038 --- /dev/null +++ b/lib/manager/nuget/__fixtures__/with-centralized-package-versions/Directory.Packages.props @@ -0,0 +1,5 @@ + + + + + diff --git a/lib/manager/nuget/__snapshots__/extract.spec.ts.snap b/lib/manager/nuget/__snapshots__/extract.spec.ts.snap index a43c2df0d522a1..973804c3fb56a4 100644 --- a/lib/manager/nuget/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/nuget/__snapshots__/extract.spec.ts.snap @@ -183,6 +183,17 @@ Array [ ] `; +exports[`lib/manager/nuget/extract extractPackageFile() extracts package version dependency 1`] = ` +Array [ + Object { + "currentValue": "4.5.0", + "datasource": "nuget", + "depName": "Autofac", + "depType": "nuget", + }, +] +`; + exports[`lib/manager/nuget/extract extractPackageFile() extracts registry URLs independently 1`] = ` Object { "deps": Array [ diff --git a/lib/manager/nuget/extract.spec.ts b/lib/manager/nuget/extract.spec.ts index dc5a8477b9514c..87b4968b5af462 100644 --- a/lib/manager/nuget/extract.spec.ts +++ b/lib/manager/nuget/extract.spec.ts @@ -16,6 +16,16 @@ describe('lib/manager/nuget/extract', () => { await extractPackageFile('nothing here', 'bogus', config) ).toMatchSnapshot(); }); + it('extracts package version dependency', async () => { + const packageFile = + 'with-centralized-package-versions/Directory.Packages.props'; + const sample = readFileSync( + path.join(config.localDir, packageFile), + 'utf8' + ); + const res = await extractPackageFile(sample, packageFile, config); + expect(res.deps).toMatchSnapshot(); + }); it('extracts all dependencies', async () => { const packageFile = 'sample.csproj'; const sample = readFileSync( diff --git a/lib/manager/nuget/extract.ts b/lib/manager/nuget/extract.ts index 2a54f003f26474..43a9c2bf768f69 100644 --- a/lib/manager/nuget/extract.ts +++ b/lib/manager/nuget/extract.ts @@ -27,6 +27,7 @@ function extractDepsFromXml(xmlNode: XmlDocument): PackageDependency[] { for (const itemGroup of itemGroups) { const relevantChildren = [ ...itemGroup.childrenNamed('PackageReference'), + ...itemGroup.childrenNamed('PackageVersion'), ...itemGroup.childrenNamed('DotNetCliToolReference'), ...itemGroup.childrenNamed('GlobalPackageReference'), ];