How do I debug a published XBAP file in VS2010?
I need to debug a full-trust application either by specifying a URL or, ideally, from within the web app I am intending to deploy it to. I've tried the following:
Running "PresentationHost.exe -embedding" from the command-line, attaching through Visual Studio. The IDE shows that my breakpoints are valid until I actually attempt to load the .xbap file, at which point it shows that there are no symbols loaded. None of my breakpoints are hit. I've tried "mage -cc" before doing this per several recommendations elsewhere.
Hard-coded URL in the project's Debug panel then F5. Alternatively, "PresentationHost.exe -embedding -debug" and attach to process then load the .xbap in IE. Both result in the following error when the page appears:
System.ArgumentException: URI formats are not supported.
at System.IO.Path.NormalizePath(...) at System.IO.FileStream.Init(...) at System.IO.FileStream..ctor(...) at System.Windows.Interop.ApplicationLauncherXappDebug.GetIdFromManifest(...) at System.Windows.Interop.ApplicationLauncherXappDebug.GetApplicationIdentity() at System.Windows.Interop.ApplicationLauncherXappDebug.Initialize() at System.Windows.Interop.DocObjHost.MS.Internal.AppMode开发者_开发百科l.IBrowserHostServices.Run(...)
Found it. The "PresentationHost.exe -embedding" will work, provided that you select the .pdb file to be published, which it is not by default. This follows from what I saw before, where the debugger appeared to have symbols then not, once the app actually loaded. To clarify:
- Go into the Publish tab on the project properties
- Click "Application Files..."
- Check "Show all files"
- Select the .pdb file for the executable to be included.
- Republish
- PresentationHost.exe -embedding
- Attach to process or set the project to run this out of the debug tab
- Launch the web page in a browser and navigate to the xbap file, breakpoints should be hit now.
If you have access to source code and you deploy on localhost you can simply add System.Diagnostics.Debugger.Launch();
in your code. This will allow You to attach with VS to any process your XBAP is using.
精彩评论