feat: new .NET plugin (v2)
Metadata
Current evaluation
Merged the new .NET plugin (v2). Adjusted dotnet restore to the build step to match craft-parts execution order, resolved CI and linkcheck failures, and incorporated reviewer feedback. Approved by three reviewers and successfully merged.
Suggested action: —
No scores available.
Issue body
- [ ] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [X] Have you added an entry to the changelog (`docs/reference/changelog.rst`)?
-----
Hi folks!
This PR introduces the new .NET plugin in accordance with the FO205 specification (.NET Snapcraft Plugin). I’ve created it as a separate file and included unit tests, integration tests, documentation, and a changelog entry.
There are a few points I’d like to address before finalizing the PR:
- Since the old .NET plugin is only available on `core22`, should we adjust the [current Snapcraft registration logic](https://github.com/canonical/snapcraft/blob/7651d96085a7d715b06764e4e5dff391fb68b4b1/snapcraft/application.py#L139-L141) to register the old one and unregister the new one on `core22`, while keeping the new one registered at the [craft-parts level](https://github.com/canonical/craft-parts/blob/ac6e1d249ee2eeb035f5ed7832ed9c450617c698/craft_parts/plugins/plugins.py#L57)? This should simplify things for newer bases, e.g. `core24` and above, as the new plugin wouldn't need to be manually registered for each.
- Relates to the point above, but since the new plugin is not registered here, the integration tests fails because it only finds the old `dotnet` plugin. Any suggestions on how we can work around this?
~**Note:** This is being submitted as a draft PR until the spec is fully approved. In the meantime, we can discuss the points above.~
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged the new .NET plugin (v2). Adjusted dotnet restore to the build step to match craft-parts execution order, resolved CI and linkcheck failures, and incorporated reviewer feedback. Approved by three reviewers and successfully merged. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #155 plugins: add dotnet plugin (CRAFT-612) | craft-parts | merged | Merged the addition of a dotnet plugin (CRAFT-612). The change introduces 395 lines across four files, received one reviewer approval, and was successfully integrated into the codebase. | |
| #2958 dotnet plugin: use the new endpoint for releases | snapcraft | merged | Merged. Updates the dotnet plugin to use a new releases endpoint after the old one was removed. Approved by one reviewer, passed CI checks, and modified two files with 31 additions and 79 deletions. | |
| #5807 feat: add .NET extensions | snapcraft | merged | Merged. Added dotnet8, dotnet9, and dotnet10 extensions and a documentation reference page to Snapcraft. Approved by three reviewers following successful CI checks and resolution of review comments. | |
| #1140 feat: enabled new .NET plugin (v2) on 25.10+ | rockcraft | merged | Merged to enable the new .NET plugin (v2) on Ubuntu 25.10 and devel bases. Documentation was updated to match the Python plugin format, CI checks passed, and the change received four approvals before integration. | |
| #2537 dotnet plugin: fix parsing of newer sdk releases | snapcraft | merged | Merged into master. The dotnet plugin now parses newer SDK release formats, supporting full URLs and uppercase checksums. Approved by one reviewer, merged with a minor coverage decrease noted by Codecov. | |
| #723 docs: document the .NET plugin | craft-parts | merged | Merged documentation update adding reference material for the .NET plugin. Approved by two reviewers, passed CI checks, and added 90 lines across two files. | |
| #6156 feat: make .NET extensions stable | snapcraft | merged | Merged. Stabilizes dotnet8, dotnet9, and dotnet10 extensions by disabling experimental flags, closing #6154. Approved by two reviewers and passed CI checks. |