imazen / Imazen.NativeDependencyManager

[deprecated] Use .NET Core runtimes and LoadLibrary for .NET Full. Avoid C++/CLI.
Other
0 stars 2 forks source link

Imazen.NativeDependencyManager

Work in progress, move on. See one of these similar projects for now.

open questions

Insurmountable caveats

Creating a compatibility table and sane arch/plat groups

We can glean a lot of information from parsing assemblies, but the docs are poor on exactly what works where. What constitutes an ARM-compatible dll? Is there any metadata to mark something as portable? Does 32-bit code work on both 32-bit x86 and ARM platforms? Is IA64 even a valid target?

https://github.com/imazen/Imazen.NativeDependencyManager/blob/master/src/Imazen.NativeDependencyManager/CompatChecker.cs

Should we even try to support mobile platforms, or should we focus on dev and server x86 and x64 scenarios?

Use cases

General use cases

Development use cases

Production use cases

Implementation

Runtime compatibility checks

Determine if a (win32, clr, mac, or linux) dynamic library or executable will work in the current (or an arbitrary) runtime.

xplat dylib loading

Search paths

File-based constraints

Direct locating (no versioning, recursion, or indirect loading)

Unit tests

Ideas for integration tests to create

Variants

Resources



Design incomplete below this point

Catch-22.

Deployment use cases

Dependency constraint resolution

The flat feed schema

Each element in the feed represents a unique file.

Dependencies can add to the flat feed, but the initial caller's feed items will take precedence

Expressing dependencies.

If there is any sharing between modules, the dependencies must be expressed at the top-level.

Assembly attributes to specify feed? Embedded resource names?

Caveats

Indirect/transitive dependency management