A look at the App class in the decompiler shows this auto-generated method in the App class:
/// <summary> /// Application Entry Point. /// </summary> [System.STAThreadAttribute()] [System.Diagnostics.DebuggerNonUserCodeAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] public static void Main() { RootNamespace.App app = new RootNamespace.App(); app.InitializeComponent(); app.Run(); }
So, I would say there is no difference in what happens at runtime. However, this has affected our development experience.
I also used a manual approach, and I saw that ReSharper does not receive application resources, therefore they are not available at the end of the XAML code, and there are a huge number of warnings, because of this. To mitigate this, I had to add a fake App.xaml file to the project. ReSharper specifically searches for the .xaml file using the ApplicationDefinition build action, so you can keep the entry point different to satisfy both ReSharper and the need to use a custom entry point.
One more thing, you can see here that, unlike other .xaml files, the InitializeComponent method is called separately instead of being called in the overriden constructor. Therefore, if you ever decide to use the application class supported by XAML at your user input point, you will either have to call this method separately, or add a constructor override that does this because it is not created by default.
Gman source share