Why is my Meadow app always named “App.dll”?

The Meadow Core stack has a hard-coded requirement for Meadow Apps on the F7 platform to be named either “App.dll” or “App.exe”. This requirement is actually a bit of a legacy carryover from the beta days.

Originally, when the Meadow stack only targeted the F7, Mono directly loaded the application. We didn’t want to spend precious boot time searching every assembly in the output folder for an entry point, so we simply said “It must be App.dll“.

When we added support for other platforms like Windows and generic Linux, things moved around a bit and now on the F7 Mono loads Meadow.dll instead (<a rel="noreferrer noopener" href="https://github.com/WildernessLabs/Meadow.Core/blob/01547dace03e10b007463c13f258d854778d0706/source/Meadow.Core/MeadowOS.cs#L34" target="_blank">static void Main</a> is here) and that calls eventually finds and loads your IApp implementation.

The general process looks like this:

Just because of the legacy of the App.dll name, we kept that. You can see it’s enforced in Meadow OS at line 208 (as of this writing). [add link to MeadowOS]. If you need your application binary to have a different name, you can change the logic here.

If you feel that adding the ability to change the search name used in the app.config.yaml, let us know over in our public Slack channel or as a Feature Request in Github.

One Comment on “Why is my Meadow app always named “App.dll”?

  1. Pingback: Portable IoT: Deep dive into how Meadow runs on Windows, Linux and Microcontrollers. – blog.wildernesslabs.co