Skip to content

Commit d3c7815

Browse files
authored
Merge pull request #70 from nlweb-ai/copilot/fix-69
🧹 Implement Central Package Management (CPM) for NuGet dependencies
2 parents 37ae411 + 2731ae6 commit d3c7815

File tree

9 files changed

+114
-93
lines changed

9 files changed

+114
-93
lines changed

.github/dependabot.yml

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
# Dependabot configuration for NLWebNet repository
22
# Configures weekly dependency scanning and update recommendations
3+
# Updated for Central Package Management (CPM)
34

45
version: 2
56
updates:
6-
# Monitor NuGet packages for the main library
7+
# Monitor NuGet packages centrally via Directory.Packages.props
78
- package-ecosystem: "nuget"
8-
directory: "/src/NLWebNet"
9+
directory: "/"
910
schedule:
1011
interval: "weekly"
1112
day: "monday"
1213
time: "09:00"
1314
timezone: "UTC"
14-
open-pull-requests-limit: 5
15+
open-pull-requests-limit: 10
1516
target-branch: "main"
1617
commit-message:
1718
prefix: "deps"
@@ -22,46 +23,6 @@ updates:
2223
reviewers:
2324
- "jongalloway"
2425

25-
# Monitor NuGet packages for the demo application
26-
- package-ecosystem: "nuget"
27-
directory: "/demo"
28-
schedule:
29-
interval: "weekly"
30-
day: "monday"
31-
time: "09:00"
32-
timezone: "UTC"
33-
open-pull-requests-limit: 3
34-
target-branch: "main"
35-
commit-message:
36-
prefix: "deps(demo)"
37-
include: "scope"
38-
labels:
39-
- "dependencies"
40-
- "nuget"
41-
- "demo"
42-
reviewers:
43-
- "jongalloway"
44-
45-
# Monitor NuGet packages for test projects
46-
- package-ecosystem: "nuget"
47-
directory: "/tests"
48-
schedule:
49-
interval: "weekly"
50-
day: "monday"
51-
time: "09:00"
52-
timezone: "UTC"
53-
open-pull-requests-limit: 3
54-
target-branch: "main"
55-
commit-message:
56-
prefix: "deps(tests)"
57-
include: "scope"
58-
labels:
59-
- "dependencies"
60-
- "nuget"
61-
- "tests"
62-
reviewers:
63-
- "jongalloway"
64-
6526
# Monitor GitHub Actions workflow dependencies
6627
- package-ecosystem: "github-actions"
6728
directory: "/.github/workflows"

Directory.Packages.props

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<Project>
2+
<PropertyGroup>
3+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
4+
</PropertyGroup>
5+
<ItemGroup>
6+
<!-- Main Library Dependencies -->
7+
<PackageVersion Include="Microsoft.Extensions.AI" Version="9.8.0" />
8+
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.7" />
9+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.8" />
10+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.8" />
11+
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.8" />
12+
<PackageVersion Include="ModelContextProtocol" Version="0.3.0-preview.3" />
13+
<!-- Configuration Format Support -->
14+
<PackageVersion Include="YamlDotNet" Version="16.3.0" />
15+
<PackageVersion Include="Microsoft.Extensions.Configuration.Xml" Version="9.0.8" />
16+
<!-- Health Checks and Monitoring -->
17+
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="9.0.8" />
18+
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="9.0.8" />
19+
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="9.0.8" />
20+
<!-- OpenTelemetry Integration (using latest 1.12.0 for main library) -->
21+
<PackageVersion Include="OpenTelemetry" Version="1.12.0" />
22+
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
23+
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" />
24+
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" />
25+
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.12.0" />
26+
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.12.0" />
27+
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" />
28+
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.7.0-rc.1" />
29+
<!-- .NET Aspire Integration -->
30+
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="9.4.1" />
31+
<!-- Build Tools -->
32+
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
33+
<!-- Testing Dependencies -->
34+
<PackageVersion Include="MSTest" Version="3.9.3" />
35+
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="17.14.2" />
36+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.0" />
37+
<PackageVersion Include="NSubstitute" Version="5.3.0" />
38+
<!-- Sample Application Dependencies -->
39+
<PackageVersion Include="System.ServiceModel.Syndication" Version="9.0.0" />
40+
<!-- Aspire Dependencies -->
41+
<PackageVersion Include="Aspire.Hosting.AppHost" Version="9.3.1" />
42+
<PackageVersion Include="Aspire.Hosting.PostgreSQL" Version="9.3.1" />
43+
<PackageVersion Include="Aspire.Hosting.Qdrant" Version="9.3.1" />
44+
<PackageVersion Include="Aspire.Hosting.Redis" Version="9.3.1" />
45+
<PackageVersion Include="Aspire.Hosting.Azure.PostgreSQL" Version="9.3.1" />
46+
<PackageVersion Include="Aspire.Hosting.Azure.Redis" Version="9.3.1" />
47+
<PackageVersion Include="Aspire.Qdrant.Client" Version="9.3.1" />
48+
<!-- AI and Vector Dependencies -->
49+
<PackageVersion Include="Microsoft.Extensions.AI.OpenAI" Version="9.8.0-preview.1.25412.6" />
50+
<PackageVersion Include="Microsoft.Extensions.VectorData.Abstractions" Version="9.7.0" />
51+
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.57.0-preview" />
52+
<!-- HTTP Resilience (for AspireDemo ServiceDefaults) -->
53+
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="8.10.0" />
54+
</ItemGroup>
55+
</Project>

doc/development-guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ src/NLWebNet/
213213

214214
1. **Prefer Microsoft.Extensions.*** - Use standard .NET abstractions
215215
1. **Check for existing alternatives** - Avoid duplicate functionality
216-
1. **Update project files** - Include in main library and test projects
216+
1. **Use Central Package Management** - Add versions to `Directory.Packages.props`, reference packages without versions in project files
217217
1. **Validate package size** - Keep library lightweight
218218

219219
## Limitations and Current Implementation Status

samples/AspireDemo/AspireHost/NLWebNet.AspireHost.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
</PropertyGroup>
1212

1313
<ItemGroup>
14-
<PackageReference Include="Aspire.Hosting.AppHost" Version="9.3.1" />
15-
<PackageReference Include="Aspire.Hosting.PostgreSQL" Version="9.3.1" />
16-
<PackageReference Include="Aspire.Hosting.Qdrant" Version="9.3.1" />
17-
<PackageReference Include="Aspire.Hosting.Redis" Version="9.3.1" />
18-
<PackageReference Include="Aspire.Hosting.Azure.PostgreSQL" Version="9.3.1" />
19-
<PackageReference Include="Aspire.Hosting.Azure.Redis" Version="9.3.1" />
14+
<PackageReference Include="Aspire.Hosting.AppHost" />
15+
<PackageReference Include="Aspire.Hosting.PostgreSQL" />
16+
<PackageReference Include="Aspire.Hosting.Qdrant" />
17+
<PackageReference Include="Aspire.Hosting.Redis" />
18+
<PackageReference Include="Aspire.Hosting.Azure.PostgreSQL" />
19+
<PackageReference Include="Aspire.Hosting.Azure.Redis" />
2020
</ItemGroup>
2121
<ItemGroup>
2222
<ProjectReference Include="..\NLWebNet.AspireApp\NLWebNet.AspireApp.csproj" />

samples/AspireDemo/NLWebNet.AspireApp/NLWebNet.AspireApp.csproj

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Aspire.Qdrant.Client" Version="9.3.1" />
11-
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
12-
<PackageReference Include="Microsoft.Extensions.AI" Version="9.6.0" />
13-
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="9.6.0-preview.1.25310.2" />
14-
<PackageReference Include="Microsoft.Extensions.VectorData.Abstractions" Version="9.6.0" />
15-
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.57.0-preview" />
16-
<PackageReference Include="System.ServiceModel.Syndication" Version="9.0.0" />
10+
<PackageReference Include="Aspire.Qdrant.Client" />
11+
<PackageReference Include="Microsoft.AspNetCore.OpenApi" />
12+
<PackageReference Include="Microsoft.Extensions.AI" />
13+
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" />
14+
<PackageReference Include="Microsoft.Extensions.VectorData.Abstractions" />
15+
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" />
16+
<PackageReference Include="System.ServiceModel.Syndication" />
1717
</ItemGroup>
1818

1919
<ItemGroup>

samples/AspireDemo/ServiceDefaults/ServiceDefaults.csproj

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
<ItemGroup>
1111
<FrameworkReference Include="Microsoft.AspNetCore.App" />
1212

13-
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="8.10.0" />
14-
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" Version="8.2.2" />
15-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.9.0" />
16-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.9.0" />
17-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.9.0" />
18-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.9.0" />
19-
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.9.0" />
13+
<PackageReference Include="Microsoft.Extensions.Http.Resilience" />
14+
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" />
15+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" />
16+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
17+
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
18+
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
19+
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" />
2020
</ItemGroup>
2121

2222
</Project>

samples/Demo/NLWebNet.Demo.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
<ContainerWorkingDirectory>/app</ContainerWorkingDirectory>
1717
</PropertyGroup>
1818
<ItemGroup>
19-
<ProjectReference Include="..\..\src\NLWebNet\NLWebNet.csproj" /> </ItemGroup><ItemGroup>
20-
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.7" />
21-
<PackageReference Include="System.ServiceModel.Syndication" Version="8.0.0" />
19+
<ProjectReference Include="..\..\src\NLWebNet\NLWebNet.csproj" />
20+
</ItemGroup>
21+
22+
<ItemGroup>
23+
<PackageReference Include="Microsoft.AspNetCore.OpenApi" />
24+
<PackageReference Include="System.ServiceModel.Syndication" />
2225
</ItemGroup>
2326

2427
</Project>

src/NLWebNet/NLWebNet.csproj

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,38 +29,40 @@
2929
<!-- Conditional CI Build Settings -->
3030
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
3131
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
32-
</PropertyGroup><ItemGroup>
33-
<PackageReference Include="Microsoft.Extensions.AI" Version="9.8.0" />
34-
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.7" />
35-
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.8" />
36-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.8" />
37-
<PackageReference Include="Microsoft.Extensions.Options" Version="9.0.8" />
38-
<PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
32+
</PropertyGroup>
33+
34+
<ItemGroup>
35+
<PackageReference Include="Microsoft.Extensions.AI" />
36+
<PackageReference Include="Microsoft.AspNetCore.OpenApi" />
37+
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
38+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
39+
<PackageReference Include="Microsoft.Extensions.Options" />
40+
<PackageReference Include="ModelContextProtocol" />
3941

4042
<!-- Configuration Format Support -->
41-
<PackageReference Include="YamlDotNet" Version="16.3.0" />
42-
<PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="9.0.8" />
43+
<PackageReference Include="YamlDotNet" />
44+
<PackageReference Include="Microsoft.Extensions.Configuration.Xml" />
4345

4446
<!-- Health Checks and Monitoring -->
45-
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="9.0.8" />
46-
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="9.0.8" />
47-
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="9.0.8" />
47+
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" />
48+
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" />
49+
<PackageReference Include="System.Diagnostics.DiagnosticSource" />
4850

4951
<!-- OpenTelemetry Integration -->
50-
<PackageReference Include="OpenTelemetry" Version="1.12.0" />
51-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
52-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" />
53-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" />
54-
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.12.0" />
55-
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.12.0" />
56-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" />
57-
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.7.0-rc.1" />
52+
<PackageReference Include="OpenTelemetry" />
53+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
54+
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
55+
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
56+
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" />
57+
<PackageReference Include="OpenTelemetry.Exporter.Console" />
58+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" />
59+
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" />
5860

5961
<!-- .NET Aspire Integration -->
60-
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" Version="9.4.0" />
62+
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" />
6163

6264
<!-- Source Link for GitHub -->
63-
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
65+
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
6466
</ItemGroup>
6567

6668
<ItemGroup>

tests/NLWebNet.Tests/NLWebNet.Tests.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
<VSTestLogger>trx</VSTestLogger>
1111
<VSTestResultsDirectory>$(OutputPath)</VSTestResultsDirectory>
1212
</PropertyGroup> <ItemGroup>
13-
<PackageReference Include="MSTest" Version="3.9.3" />
14-
<PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage" Version="17.14.2" />
15-
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.0" />
16-
<PackageReference Include="NSubstitute" Version="5.3.0" />
13+
<PackageReference Include="MSTest" />
14+
<PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage" />
15+
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" />
16+
<PackageReference Include="NSubstitute" />
1717
</ItemGroup>
1818

1919
<ItemGroup>

0 commit comments

Comments
 (0)