diff --git a/lib/config/migrations/custom/datasource-migration.spec.ts b/lib/config/migrations/custom/datasource-migration.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..08d768de893c24b1fd11dbe3b2840ec8d448b611
--- /dev/null
+++ b/lib/config/migrations/custom/datasource-migration.spec.ts
@@ -0,0 +1,14 @@
+import { DatasourceMigration } from './datasource-migration';
+
+describe('config/migrations/custom/datasource-migration', () => {
+  it('should migrate properly', () => {
+    expect(DatasourceMigration).toMigrate(
+      {
+        datasource: 'dotnet',
+      },
+      {
+        datasource: 'dotnet-version',
+      }
+    );
+  });
+});
diff --git a/lib/config/migrations/custom/datasource-migration.ts b/lib/config/migrations/custom/datasource-migration.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2f742930562a8043dbc72f9a7958a19c9214e79b
--- /dev/null
+++ b/lib/config/migrations/custom/datasource-migration.ts
@@ -0,0 +1,14 @@
+import is from '@sindresorhus/is';
+import { AbstractMigration } from '../base/abstract-migration';
+
+export class DatasourceMigration extends AbstractMigration {
+  override readonly propertyName = 'datasource';
+
+  override run(value: unknown): void {
+    if (is.string(value)) {
+      const newValue = value === 'dotnet' ? 'dotnet-version' : value;
+
+      this.rewrite(newValue);
+    }
+  }
+}
diff --git a/lib/config/migrations/custom/match-datasources-migration.spec.ts b/lib/config/migrations/custom/match-datasources-migration.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9c8187380e6cc24384c6bf3a58c81bd0b6b672e9
--- /dev/null
+++ b/lib/config/migrations/custom/match-datasources-migration.spec.ts
@@ -0,0 +1,14 @@
+import { MatchDatasourcesMigration } from './match-datasources-migration';
+
+describe('config/migrations/custom/match-datasources-migration', () => {
+  it('should migrate properly', () => {
+    expect(MatchDatasourcesMigration).toMigrate(
+      {
+        matchDatasources: ['dotnet'],
+      },
+      {
+        matchDatasources: ['dotnet-version'],
+      }
+    );
+  });
+});
diff --git a/lib/config/migrations/custom/match-datasources-migration.ts b/lib/config/migrations/custom/match-datasources-migration.ts
new file mode 100644
index 0000000000000000000000000000000000000000..af9a043839ccab7580b344e740a1d0bd6bcb4462
--- /dev/null
+++ b/lib/config/migrations/custom/match-datasources-migration.ts
@@ -0,0 +1,18 @@
+import is from '@sindresorhus/is';
+import { AbstractMigration } from '../base/abstract-migration';
+
+export class MatchDatasourcesMigration extends AbstractMigration {
+  override readonly propertyName = 'matchDatasources';
+
+  override run(value: unknown): void {
+    if (Array.isArray(value)) {
+      const newValue = value
+        .filter(is.nonEmptyString)
+        .map((datasource) =>
+          datasource === 'dotnet' ? 'dotnet-version' : datasource
+        );
+
+      this.rewrite(newValue);
+    }
+  }
+}
diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts
index 4029611673049d5d1142f0d7fba207e55d5d21c7..3456b2f979b6ff6c630a7b4a538c46ce7af8a764 100644
--- a/lib/config/migrations/migrations-service.ts
+++ b/lib/config/migrations/migrations-service.ts
@@ -15,6 +15,7 @@ import { BranchNameMigration } from './custom/branch-name-migration';
 import { BranchPrefixMigration } from './custom/branch-prefix-migration';
 import { CompatibilityMigration } from './custom/compatibility-migration';
 import { ComposerIgnorePlatformReqsMigration } from './custom/composer-ignore-platform-reqs-migration';
+import { DatasourceMigration } from './custom/datasource-migration';
 import { DepTypesMigration } from './custom/dep-types-migration';
 import { DryRunMigration } from './custom/dry-run-migration';
 import { EnabledManagersMigration } from './custom/enabled-managers-migration';
@@ -23,6 +24,7 @@ import { GoModTidyMigration } from './custom/go-mod-tidy-migration';
 import { HostRulesMigration } from './custom/host-rules-migration';
 import { IgnoreNodeModulesMigration } from './custom/ignore-node-modules-migration';
 import { IgnoreNpmrcFileMigration } from './custom/ignore-npmrc-file-migration';
+import { MatchDatasourcesMigration } from './custom/match-datasources-migration';
 import { MatchStringsMigration } from './custom/match-strings-migration';
 import { NodeMigration } from './custom/node-migration';
 import { PackageFilesMigration } from './custom/package-files-migration';
@@ -71,6 +73,7 @@ export class MigrationsService {
   ]);
 
   static readonly renamedProperties: ReadonlyMap<string, string> = new Map([
+    ['dotnet', 'dotnet-version'],
     ['endpoints', 'hostRules'],
     ['excludedPackageNames', 'excludePackageNames'],
     ['exposeEnv', 'exposeAllEnv'],
@@ -136,6 +139,8 @@ export class MigrationsService {
     PackageRulesMigration,
     NodeMigration,
     SemanticPrefixMigration,
+    MatchDatasourcesMigration,
+    DatasourceMigration,
   ];
 
   static run(originalConfig: RenovateConfig): RenovateConfig {
diff --git a/lib/modules/datasource/api.ts b/lib/modules/datasource/api.ts
index 45592575d9f69b5f386c08a0949bcdbf113f3bc0..915f18e6b9b27e6482c2bfafd2508d9715b85cc3 100644
--- a/lib/modules/datasource/api.ts
+++ b/lib/modules/datasource/api.ts
@@ -14,7 +14,7 @@ import { DartDatasource } from './dart';
 import { DartVersionDatasource } from './dart-version';
 import { DenoDatasource } from './deno';
 import { DockerDatasource } from './docker';
-import { DotnetDatasource } from './dotnet';
+import { DotnetVersionDatasource } from './dotnet-version';
 import { FlutterVersionDatasource } from './flutter-version';
 import { GalaxyDatasource } from './galaxy';
 import { GalaxyCollectionDatasource } from './galaxy-collection';
@@ -71,7 +71,7 @@ api.set(DartDatasource.id, new DartDatasource());
 api.set(DartVersionDatasource.id, new DartVersionDatasource());
 api.set(DenoDatasource.id, new DenoDatasource());
 api.set(DockerDatasource.id, new DockerDatasource());
-api.set(DotnetDatasource.id, new DotnetDatasource());
+api.set(DotnetVersionDatasource.id, new DotnetVersionDatasource());
 api.set(FlutterVersionDatasource.id, new FlutterVersionDatasource());
 api.set(GalaxyDatasource.id, new GalaxyDatasource());
 api.set(GalaxyCollectionDatasource.id, new GalaxyCollectionDatasource());
diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-3.1.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-3.1.json
similarity index 100%
rename from lib/modules/datasource/dotnet/__fixtures__/releases-3.1.json
rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-3.1.json
diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-5.0.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-5.0.json
similarity index 100%
rename from lib/modules/datasource/dotnet/__fixtures__/releases-5.0.json
rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-5.0.json
diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-6.0.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-6.0.json
similarity index 100%
rename from lib/modules/datasource/dotnet/__fixtures__/releases-6.0.json
rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-6.0.json
diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-7.0.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-7.0.json
similarity index 100%
rename from lib/modules/datasource/dotnet/__fixtures__/releases-7.0.json
rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-7.0.json
diff --git a/lib/modules/datasource/dotnet/__fixtures__/releases-index.json b/lib/modules/datasource/dotnet-version/__fixtures__/releases-index.json
similarity index 100%
rename from lib/modules/datasource/dotnet/__fixtures__/releases-index.json
rename to lib/modules/datasource/dotnet-version/__fixtures__/releases-index.json
diff --git a/lib/modules/datasource/dotnet/index.spec.ts b/lib/modules/datasource/dotnet-version/index.spec.ts
similarity index 89%
rename from lib/modules/datasource/dotnet/index.spec.ts
rename to lib/modules/datasource/dotnet-version/index.spec.ts
index 2f0c203dd028adb8d3c8d7e67945ae37491bb57c..a0e3e0e18891bede75b9db7be22ac871206d07da 100644
--- a/lib/modules/datasource/dotnet/index.spec.ts
+++ b/lib/modules/datasource/dotnet-version/index.spec.ts
@@ -2,7 +2,7 @@ import { getPkgReleases } from '..';
 import { Fixtures } from '../../../../test/fixtures';
 import * as httpMock from '../../../../test/http-mock';
 import { EXTERNAL_HOST_ERROR } from '../../../constants/error-messages';
-import { DotnetDatasource } from '.';
+import { DotnetVersionDatasource } from '.';
 
 const releasesIndex = Fixtures.getJson('releases-index.json');
 const releases7_0 = Fixtures.getJson('releases-7.0.json');
@@ -13,12 +13,12 @@ const releases3_1 = Fixtures.getJson('releases-3.1.json');
 const baseUrl =
   'https://dotnetcli.blob.core.windows.net/dotnet/release-metadata';
 
-describe('modules/datasource/dotnet/index', () => {
+describe('modules/datasource/dotnet-version/index', () => {
   describe('getReleases', () => {
     it('returns null for non-dotnet package', async () => {
       expect(
         await getPkgReleases({
-          datasource: DotnetDatasource.id,
+          datasource: DotnetVersionDatasource.id,
           depName: 'non-dotnet',
         })
       ).toBeNull();
@@ -29,7 +29,7 @@ describe('modules/datasource/dotnet/index', () => {
 
       expect(
         await getPkgReleases({
-          datasource: DotnetDatasource.id,
+          datasource: DotnetVersionDatasource.id,
           depName: 'dotnet-sdk',
         })
       ).toBeNull();
@@ -45,7 +45,7 @@ describe('modules/datasource/dotnet/index', () => {
 
       expect(
         await getPkgReleases({
-          datasource: DotnetDatasource.id,
+          datasource: DotnetVersionDatasource.id,
           depName: 'dotnet-sdk',
         })
       ).toBeNull();
@@ -56,7 +56,7 @@ describe('modules/datasource/dotnet/index', () => {
 
       await expect(
         getPkgReleases({
-          datasource: DotnetDatasource.id,
+          datasource: DotnetVersionDatasource.id,
           depName: 'dotnet-sdk',
         })
       ).rejects.toThrow(EXTERNAL_HOST_ERROR);
@@ -72,7 +72,7 @@ describe('modules/datasource/dotnet/index', () => {
 
       await expect(
         getPkgReleases({
-          datasource: DotnetDatasource.id,
+          datasource: DotnetVersionDatasource.id,
           depName: 'dotnet-sdk',
         })
       ).rejects.toThrow(EXTERNAL_HOST_ERROR);
@@ -83,7 +83,7 @@ describe('modules/datasource/dotnet/index', () => {
 
       expect(
         await getPkgReleases({
-          datasource: DotnetDatasource.id,
+          datasource: DotnetVersionDatasource.id,
           depName: 'dotnet-sdk',
         })
       ).toBeNull();
@@ -99,7 +99,7 @@ describe('modules/datasource/dotnet/index', () => {
 
       expect(
         await getPkgReleases({
-          datasource: DotnetDatasource.id,
+          datasource: DotnetVersionDatasource.id,
           depName: 'dotnet-sdk',
         })
       ).toBeNull();
@@ -120,7 +120,7 @@ describe('modules/datasource/dotnet/index', () => {
         .reply(200, releases3_1);
 
       const res = await getPkgReleases({
-        datasource: DotnetDatasource.id,
+        datasource: DotnetVersionDatasource.id,
         depName: 'dotnet-sdk',
       });
 
@@ -154,7 +154,7 @@ describe('modules/datasource/dotnet/index', () => {
         .reply(200, releases3_1);
 
       const res = await getPkgReleases({
-        datasource: DotnetDatasource.id,
+        datasource: DotnetVersionDatasource.id,
         depName: 'dotnet-runtime',
       });
 
diff --git a/lib/modules/datasource/dotnet/index.ts b/lib/modules/datasource/dotnet-version/index.ts
similarity index 90%
rename from lib/modules/datasource/dotnet/index.ts
rename to lib/modules/datasource/dotnet-version/index.ts
index 196e09a807c6255efc212040929da9846461f643..db8fce0494850bb0edf730a3da39fee10cae24b9 100644
--- a/lib/modules/datasource/dotnet/index.ts
+++ b/lib/modules/datasource/dotnet-version/index.ts
@@ -11,11 +11,11 @@ import {
   DotnetReleasesSchema,
 } from './schema';
 
-export class DotnetDatasource extends Datasource {
-  static readonly id = 'dotnet';
+export class DotnetVersionDatasource extends Datasource {
+  static readonly id = 'dotnet-version';
 
   constructor() {
-    super(DotnetDatasource.id);
+    super(DotnetVersionDatasource.id);
   }
 
   override readonly caching = true;
@@ -27,7 +27,7 @@ export class DotnetDatasource extends Datasource {
   ];
 
   @cache({
-    namespace: `datasource-${DotnetDatasource.id}`,
+    namespace: `datasource-${DotnetVersionDatasource.id}`,
     key: ({ packageName }: GetReleasesConfig) => packageName,
     ttlMinutes: 1440,
   })
@@ -77,7 +77,7 @@ export class DotnetDatasource extends Datasource {
   }
 
   @cache({
-    namespace: `datasource-${DotnetDatasource.id}`,
+    namespace: `datasource-${DotnetVersionDatasource.id}`,
     key: (releaseUrl: string, packageName: string) =>
       `${releaseUrl}:${packageName}`,
     ttlMinutes: 1440,
@@ -97,7 +97,7 @@ export class DotnetDatasource extends Datasource {
 
     const body = raw?.body;
     if (body) {
-      const type = DotnetDatasource.getType(packageName);
+      const type = DotnetVersionDatasource.getType(packageName);
       const { releases: releases } = body;
       result = releases
         .filter(
diff --git a/lib/modules/datasource/dotnet/readme.md b/lib/modules/datasource/dotnet-version/readme.md
similarity index 100%
rename from lib/modules/datasource/dotnet/readme.md
rename to lib/modules/datasource/dotnet-version/readme.md
diff --git a/lib/modules/datasource/dotnet/schema.ts b/lib/modules/datasource/dotnet-version/schema.ts
similarity index 100%
rename from lib/modules/datasource/dotnet/schema.ts
rename to lib/modules/datasource/dotnet-version/schema.ts
diff --git a/lib/modules/manager/nuget/extract.spec.ts b/lib/modules/manager/nuget/extract.spec.ts
index f038ea48a3e880037629f3cd983168b754f8759a..ba8b9b84e7af84bb7b899d07c5d5a1732d5bc5d0 100644
--- a/lib/modules/manager/nuget/extract.spec.ts
+++ b/lib/modules/manager/nuget/extract.spec.ts
@@ -2,7 +2,7 @@ import upath from 'upath';
 import { Fixtures } from '../../../../test/fixtures';
 import { GlobalConfig } from '../../../config/global';
 import type { RepoGlobalConfig } from '../../../config/types';
-import { DotnetDatasource } from '../../datasource/dotnet';
+import { DotnetVersionDatasource } from '../../datasource/dotnet-version';
 import type { ExtractConfig } from '../types';
 import { extractPackageFile } from '.';
 
@@ -250,7 +250,7 @@ describe('modules/manager/nuget/extract', () => {
             currentValue: '5.0.302',
             depName: 'dotnet-sdk',
             depType: 'dotnet-sdk',
-            datasource: DotnetDatasource.id,
+            datasource: DotnetVersionDatasource.id,
           },
           {
             currentValue: '0.2.0',
@@ -273,7 +273,7 @@ describe('modules/manager/nuget/extract', () => {
             currentValue: '5.0.302',
             depName: 'dotnet-sdk',
             depType: 'dotnet-sdk',
-            datasource: DotnetDatasource.id,
+            datasource: DotnetVersionDatasource.id,
           },
         ],
       });
diff --git a/lib/modules/manager/nuget/extract/global-manifest.ts b/lib/modules/manager/nuget/extract/global-manifest.ts
index d238aa38751fe742b076b1ad532212063cd1e028..9995fffe0bf3f6801ca3a0c0d361f3e42909739c 100644
--- a/lib/modules/manager/nuget/extract/global-manifest.ts
+++ b/lib/modules/manager/nuget/extract/global-manifest.ts
@@ -1,5 +1,5 @@
 import { logger } from '../../../../logger';
-import { DotnetDatasource } from '../../../datasource/dotnet';
+import { DotnetVersionDatasource } from '../../../datasource/dotnet-version';
 import { NugetDatasource } from '../../../datasource/nuget';
 import type { PackageDependency, PackageFile } from '../../types';
 import type { MsbuildGlobalManifest } from '../types';
@@ -31,7 +31,7 @@ export function extractMsbuildGlobalManifest(
       depType: 'dotnet-sdk',
       depName: 'dotnet-sdk',
       currentValue: manifest.sdk?.version,
-      datasource: DotnetDatasource.id,
+      datasource: DotnetVersionDatasource.id,
     });
   }
 
diff --git a/lib/modules/manager/nuget/index.ts b/lib/modules/manager/nuget/index.ts
index 0f09b1258532f0c99c5b7bc1c4efa8847262eb0c..8f2a3253eb924f5398c95da9f3dff0441566d703 100644
--- a/lib/modules/manager/nuget/index.ts
+++ b/lib/modules/manager/nuget/index.ts
@@ -1,5 +1,5 @@
 import type { ProgrammingLanguage } from '../../../constants';
-import { DotnetDatasource } from '../../datasource/dotnet';
+import { DotnetVersionDatasource } from '../../datasource/dotnet-version';
 import { NugetDatasource } from '../../datasource/nuget';
 
 export { extractPackageFile } from './extract';
@@ -17,4 +17,7 @@ export const defaultConfig = {
   ],
 };
 
-export const supportedDatasources = [DotnetDatasource.id, NugetDatasource.id];
+export const supportedDatasources = [
+  DotnetVersionDatasource.id,
+  NugetDatasource.id,
+];