-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WUX/MUX prototype #1418
WUX/MUX prototype #1418
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just glanced it so far and left some random notes as I read through the code. Looking really good, and it's cool how the changes are pretty targeted and most code is the same 🚀
return UiXamlMode.MicrosoftUiXaml; // We default to MUX for back-compat with existing projects. | ||
} | ||
|
||
internal static UiXamlMode UiXamlModeSetting { get; } = GetUIXamlModeSetting(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not needed for the initial prototype, but we might want to have the final version also include an ILLink.Substitutions.xml
that can swap the body of the property getter with the hardcoded value based on the runtime switch configuration from MSBuild. I mean, it's simple enough but it's nice to have 🙂
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that is a good idea! I'll see if I can figure it out (since it's not a bool I'll need to check the right way to do it)
…elected WUX vs MUX mode.
…t a runtime configuration WUX/MUX switch.
… of the consumption logic in the process)
4bb2d41
to
0d88207
Compare
I added some tests here to validate the experience. |
The Is there a fix underway for this? |
@dongle-the-gadget that's by design. The idea is that the WUX projection would only project the WUX namespaces and exclude any namespaces that are present in the SDK-provided projection and it would reference the SDK-provided projection of the rest of the OS-built-in Windows SDK. |
Okay looks like I might need some help with getting the INPC test to run in GoogleTest (I need to start-up the WUX engine to get it to work). |
… INPC and types that need the XAML engine initialized on the thread.
Ahahah glad to hear you found a workaround! 😄 Also, just a note, as this will get merged after #1395, it will also eventually need to get the same tweaks so that in Release x64 mode the authoring test is published with NAOT and the manifest is skipped (so we can also verify that things work fine without it when there's no native host and the implementation .dll is the same). Just worth keeping in mind in case any of the things done here so far could potentially cause any issues with that (hopefully not, but figured I'd mention that just in case) 🙂 |
We'll still need a manifest here as it needs to specify a new-enough version of Windows to enable XAML Islands. |
Marking this as ready for review as I have some tests now that validate activation and consumption scenarios (events end up validating both). |
Oh, I mean that's fine, but can we skip all the definitions of the activatabke classes though (perhaps with a different version of the manifest that's only used for the NAOT test)? Just to make sure that we're resting that too for consistency with the WASDK stuff. Also... Not entirely sure why the CI isn't running 🤔 |
It's probably because I'm working from a fork instead of upstream. I'll push to a branch in microsoft/cswinrt and try again. I forgot about that aspect of this repo. |
Closing in favor of #1421 that will get CI |
Implement prototype WUX/MUX support for both consumption and authoring.
Tests are still TODO.
The remaining TODO-WuxMux items will provide a better UX or perf but are not required for basic functionality.