[Posting here cuz I can't do password rest from the sandbox]
Hey, guys, this is the first time I am breaking out my app so that all the UI code and markup is in a separate assembly. Now that I have it broken out, the main plug-in that references the UI assembly runs but I don't see anything. I have debugging enabled (including error details) but in Windows 7, I just don't see anything other than a bluescreen. In the past, on Vista, if I had a typo or some error in the MCML I would get get error details immediately but nothing under Win 7
My questions are:
(1) Is there any guidance for having your UI in a separate DLL ?
(2) Is there something different in Windows 7 when it comes to displaying MCML load errors?
Thanks
I don't think this is (directly) due to you having UI in a seperate dll. I have seen issues under Win7 where just as you have described, it dies and leaves you with the default blue background. This has only been due to MCML errors and nothing code behind. So, for example if it can't find a resource you get the default blue screen. Spiffy, I know.
I haven't found a workaround for this beyond testing under Vista...
Argh. I copied my tvlibrary project and renamed everything (all strings) to VideoLibraryEngine.UI. I made sure the project properties have the correct namespace and everything. This is maddening. How c an they have a new version yet don't display the thrice-damned error messages when they used to do this under Vista
I do already have the media center 6.0 sdk. I'll try re-installing.
Thanks for lending another eye to my proble, MSBob. I created a bat file to run mcmlverifier and it keeps throwing errors about loading my Styles.mcml file. I don't get it. This is the same file I had before I did the name changing. In case you might see something obvious that I am just not seeing here are the verifier output and the styles.mcml. The assembly dll is "VideoLibraryEngine.UI.dll" and the namespace is "VideoLibraryEngine.UI"
----- Verifier ----
Microsoft (R) MediaCenter Markup Language (MCML) Verifier version 1.00Copyright (C) Microsoft Corporation 2006. All rights reserved.
resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Views\BrowsePage.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Views\ContextMenu.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Views\DetailsPage.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Views\DvdMenu.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Views\LoadingPage.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Views\Seekbar.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Views\VideoPlayback.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. file://C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Styles\Animations.mcml - OK!resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Animations: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Animations'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Styles\Styles.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Animations'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Gallery\Gallery.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Gallery\Pivots.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibrary/VideoLibrary.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibrary/VideoLibrary.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Controls\Branding.mcml: Unable to load 'resx://VideoLibrary/VideoLibrary.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Controls\Buttons.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Controls\Controls.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Controls\SlideDeck.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles: Failure acquiring MCML markup from 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'. C:\Users\JackLuminous\Documents\Projects\MediaCenter\VideoLibraryEngine.UI\Markup\Controls\Spinner.mcml: Unable to load 'resx://VideoLibraryEngine.UI/VideoLibraryEngine.UI.Resources/Styles'.
---Styes ---
<
xmlns:cor
<!--
</
My MCML crashes verifier so I don't bother with it. I loaded your snippet sans the aggregate just fine by adding a UI element above it so the markup is valid. That leads me to believe that either you are completely missing a resource (typo'd name of an image in your resx, etc) or MC can't find the resx.
If it is the latter remember the rules;
The resx:// protocol is designed to load resources from .resx files that are embedded into managed assemblies, with the following limitations:
The resx:// protocol is used to load resources from a managed assembly, which must be strong-name signed and located in either %windir%\ehome or the global assembly cache (GAC).
In the syntax resx://myassembly/myresourcefile/myresourceidentifier, the myassembly parameter does not have a file extension, so you cannot have a managed DLL and EXE with the same name and be able to load resources from both of them.
Again, at this point I believe the issue with MC not outputting the error is due to hacking the HistoryOrientedPageSession. You probably have a LoadPage that is passing in a null sourceData object (think splash page) that is preventing MC from displaying the error.
That's the thing tho'. I originally had everything in TVLibrary.dll and life was good. I made a copy of the tvlibrary project and did a global replace of "TVLibrary" to "VideoLibraryEngine.UI". It's still strong-named and all that. I'll check it again but this is driving me (@#)&#@()*&$(*#&!_@ crazy.
Will do. I un-GAC, build then GAC but I will try just dropping into \ehome.
Let me clarify;
Option 1. GAC the resource assembly AND place it in %windir%\eHome (or possibly get around this by setting Environment.CurrentDirectory)
Option 2. Use ILMerge
Option 3. Reference the assembly with strong name as in <Aggregate Source="resx://VideoLibraryEngine.UI,Version=1.0.0.0,Culture=neutral,PublicKeyToken=2d2721ed541e83a1/VideoLibraryEngine.UI.Resources/Animations"/>
Concerning the "blue screen" it is due to hacking the HistoryOrientedPageSession. You have a LoadPage that is passing in a null sourceData object to prevent the page from being added to teh stack. Under 7MC it will not dump the markup error (there were changes to HistoryOrientedPageSession in 7MC).
I'll give that a try. Just to be clear, I took all the markup and the models and assorted and moved them into this new project; it's not just a pure resource dll
UPDATE: I tried copying the dll to ehome in addition to the GAC but it made no difference. Will try the strong name.
I must say that this part of MCPL programming is more frustrating that troubleshooting DCOM/COM+ in a locked-down environment.
AAARGGHH!!!
I finally broke down and decided to step through MS code using the public symbols. At some point I see this error:
Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "VideoLibraryEngine.UI.Resources.resources" was correctly embedded or linked into assembly "VideoLibraryEngine.UI" at compile time, or that all the satellite assemblies required are loadable and fully signed.
....I'm just going to give up on this [beep]. I spent some hours looking at satellite assemblies vs main assemblies but at this point. The MCML "platform" wins. I'll just duplicate the forsaken markup and move on to real feature work and not waste my time futzing around with this plumbing BS. Thanks for your help anyways, MSBob. Thanks for nothing, eHome.