RFC: Package extensions via NuGet
See original GitHub issueIn the discussion of #2599, I mentioned the idea of using NuGet to package extensions to DNN, as an alternative to the current zip
file upload. Using NuGet for packaging brings along some benefits that I think make it worth considering.
Benefits
- NuGet contains the idea of dependencies, so that one package can depend upon another. The current DNN manifest already has the idea of dependencies on a type, package, or DNN version. However, NuGet’s version ranges and target frameworks, along with the ability to depend upon any NuGet package may unlock some interesting possibilities, especially as we work to migrate to .NET Standard and, eventually, .NET Core.
- There are many simple options for hosting NuGet packages, which would easily allow the community to restart the DNN Forge, as well as allow 3rd parties to add their own internally or externally hosted suite of extensions.
- Using NuGet packages would make it easier to retrieve required dependencies during the installation process. If DNN allowed managing a list of NuGet hosts, an extension package could indicate that it depends on another extension, or a standard NuGet library, and that dependency would be seamlessly retrieved during installation.
- Using NuGet gives us a standard tool familiar to .NET developers, and removes the need to find and understand any of the various more-or-less automated packaging systems that the community has created over the years.
Alternatives Considered
The community can wait for DNN Corp to rebuild the DNN Store and its update service, and use that as a platform to host extensions and then update DNN’s extension installer to make use of that platform and service during the installation process.
- Pros: May better support non-free extensions
- Cons: Does not solve the need for richer dependencies or simpler packaging. Implementation of package retrieval during installation will likely be more work if not based on an existing framework/tool
Issue Analytics
- State:
- Created 5 years ago
- Reactions:5
- Comments:10 (8 by maintainers)
Top Results From Across the Web
RFC: Improve NuGet Package Structure & Dependencies ...
Description of Problem Currently, there are a number of NuGet packages that provide DotNetNuke dependencies for consumption by third-parties ...
Read more >ARSoft.Tools.Net 3.5.0
This project contains a complete managed .Net DNS and DNSSEC client, a DNS server and SPF and SenderID validation.
Read more >fm.Extensions.Logging 6.0.0
Extensions for ILogger which allows using Microsoft.Extensions. ... NET CLI; Package Manager; PackageReference ... dotnet add package fm.Extensions.
Read more >Best 20 NuGet rfc-1006 Packages
Find out most popular NuGet rfc-1006 Packages. ... Software Driver SDK to access SINUMERIK NCKs (Numerical Control Kernels) via TCP/IP.
Read more >NuGet CLI sign command
Forces nuget.exe to run using an invariant, English-based culture. -HashAlgorithm. Hash algorithm to be used to sign the package.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
I think this is still an active discussion, I think this is one that we can leave in an RFC status, until we get closer to an actionable state.
I was thinking about this idea more and this could be a way to easily standup a community repository of extensions. Since NuGet already supports an API for download packages we could then build that into platform.
Consider this: When you go to the extensions page in DNN you select repositories, just like you would in Visual Studio for package source (we could add some custom header to certify it is a DNN NuGet Repository). Then the user can search through the NuGet (extensions) and select which one they want. The server would be able to download it and then install it automatically.
The thing I really like about this approach is how the repository won’t be hard coded into the platform and an admin can customize to use no repositories or as many as they want.
@mitchelsellers @bdukes what do you guys think?