One NuGet for all OSs
See original GitHub issueDescribe the feature you’d like
Offer one NuGet package, that is multi-targeted and contains the necessary assemblies to support all supported OSs. Then additionally the <OsName>Application.Init
API can be simplified to do the right call based on a runtime check. This would replace the current packages as it can be a full replacement for consumers of SpiderEye.
Reason for this feature request
Currently projects that use SpiderEye on more than one target OS have to be developed with N+1 projects, where N is the number of the OSs. The reason for that is the fact that SpiderEye currently ships support for each OS in a separate NuGet. The remaining project acts as the “core” project that defines most of the logic, while the other projects all just configure the app on startup via the correct <OsName>Application
API for that OS.
With this change a user of SpiderEye would only add a single NuGet package to their project and call a single initialization method. Besides a bigger NuGet package for developers to download this would not result in unnecessary assembly additions for a specific target OS.
Besides simplification for consumers this change would most likely also
- remove the need for the templates, as long as we can assume the consumer will not do platform-specific calls in most cases (otherwise they can still set up one project per OS themselves, though).
- allow the consumer to publish a single project for each target OS simply by publishing with the corresponding runtime identifier.
Issue Analytics
- State:
- Created 3 years ago
- Reactions:1
- Comments:8 (7 by maintainers)
woah this is amazing 😲
I’m totally on board with
SpiderEye.Unified
and adding an OS-agnostic application init class in there sounds like a good way to do it.The windows project will soon need a reference to support the chromium edge webview (maybe macOS as well, I haven’t looked into that yet). To avoid duplicated reference entries I think it’d be best to have a shared proj file for each platform that lists references and is then imported in both the actual OS project and the unified project. This way you can’t forget to add references to both projects and version updates only have to be done once.
Having a custom SDK would be the icing on the cake. I didn’t even know that it was possible to create a custom one, that’s very cool. If you manage to get that working I’d love to add the bit for copying client files into the assembly as well:
where the include path is configurable of course and maybe a flag to disable this as well.
Thank you so much for all that detective work, you got way farther than I did 😄 Keep me posted, this weekend I’ll be working on some of the open issues and see how far I can get with chromium edge.
no worries, I didn’t expect it to work without a fight 😄
If you like you can create a WIP pull request if you need any input or a second set of eyes.