Skip to content

2.0 Thoughts #2

@bretcope

Description

@bretcope

There are two projects in Mayflower. One is a library (Mayflower) which provides all of the core functionality. The other is MayflowerCLI which generates the executable mayflower.exe. I'll address each one separately.

Mayflower (Library)

This project should be converted to target .NET Standard 1.3. I say 1.3 because that's the highest version implemented by both .NET Core 1.0 and .NET Framework 4.6. I don't think this will be difficult at all. The project has literally zero nuget dependencies currently, and it doesn't use any reflection or platform-specific features that I can think of. I'll give it a shot this weekend.

API

I'd like to take another look at the use cases for calling the library directly (as opposed to using the CLI) and reexamine what the API should look like. I wouldn't rule out the possibility of a major redesign before 1.0.

MayflowerCLI

I would actually like to work on compiling this with .NET Native. Right now I do an embedded resource trick to include the Mayflower.dll inside the exe, but the exe itself still requires .NET Framework 4.6 be installed on the machine. If we could compile a native exe, that would no longer be an issue.

I've only just started looking into how to use .NET Native, but since there's no JIT, my impression is that you can't emit IL at runtime. Last night, I got rid of the Dapper dependency in anticipation of that limitation.

It warrants more investigation. Hopefully it's not a big undertaking. If it is, we could revert back to the embedded resource approach for the time being. The code would be a little different in .NET Standard because AppDomains are gone, but I'm pretty sure it's still possible to dynamically load dll's from embedded resources.

Tests

We'll also need a third project for tests. NUnit's .NET Standard support was still in beta last I checked, but there are probably work arounds.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions