Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
282 views
in Technique[技术] by (71.8m points)

c# - .NET application cannot start and receive XamlParseException

I wrote an app that can install and work on my development PC (a Window 7).

  • Development Environment: Window 7, VS2010 WPF C# with both .NET 4 and .NET 3.5 installed

On other client computer (XP SP3, 2 and 1), it install with no error, but can not start. In task manager, I can see the application takes up memory briefly before closing by itself.

I had made sure .NET 3.5 consistency across my develop PC and various client XP machines by following:

  • The application targets .NET 3.5 (or 3.5 Client Profile)
  • Use VS2010 Installer for deployment: targets .NET 3.5 in Launch Condition
  • No error whatsoever about .NET compatibility during debug of application and installer project

eventvwr caught the following warning:

??o???–?:   ¥ì??
??o??¥‘¥:   .NET Runtime
??o?÷÷??:   ??
??o? ID:    1026
?’??:       2011-10-18
??o?:       15:18:32
”√a?:       N/A
o?à?a˙: WWW-9DB69D5A3AF
√???:
Application: Foo.exe
Framework Version: v4.0.30319
Description: ”…”??¥?≠¥??ìμ?“?≥££¨Ωˉ≥?÷’÷π°£
“?≥£–≈?¢: System.Windows.Markup.XamlParseException
?—’a:
   ‘? System.Windows.Markup.XamlReader.RewrapException(System.Exception, System.Xaml.IXamlLineInfo, System.Uri)
   ‘? System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, Boolean, System.Object, System.Xaml.XamlObjectWriterSettings, System.Uri)
   ‘? System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader, Boolean, System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri)
   ‘? System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, Boolean)
   ‘? System.Windows.Application.LoadBamlStreamWithSyncInfo(System.IO.Stream, System.Windows.Markup.ParserContext)
   ‘? System.Windows.Application.LoadComponent(System.Uri, Boolean)
   ‘? System.Windows.Application.DoStartup()
   ‘? System.Windows.Application.<.ctor>b__1(System.Object)
   ‘? System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   ‘? MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   ‘? System.Windows.Threading.DispatcherOperation.InvokeImpl()
   ‘? System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
   ‘? System.Threading.ExecutionContext.runTryCode(System.Object)
   ‘? System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
   ‘? System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   ‘? System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   ‘? System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   ‘? System.Windows.Threading.DispatcherOperation.Invoke()
   ‘? System.Windows.Threading.Dispatcher.ProcessQueue()
   ‘? System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   ‘? MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   ‘? MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
   ‘? System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   ‘? MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   ‘? System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
   ‘? MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
   ‘? MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
   ‘? System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
   ‘? System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
   ‘? System.Windows.Threading.Dispatcher.Run()
   ‘? System.Windows.Application.RunDispatcher(System.Object)
   ‘? System.Windows.Application.RunInternal(System.Windows.Window)
   ‘? System.Windows.Application.Run(System.Windows.Window)
   ‘? System.Windows.Application.Run()
   ‘? FooSoftware.App.Main()


”–π?∏???–≈?¢£¨??≤?‘?‘? http://go.microsoft.com/fwlink/events.asp μ?∞?÷˙∫?÷?≥÷÷––?°£

there was this XamlParseException causing my app to not start on XP Window Machine. What is going on?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

XamlParseException is the generic error that happens when there is a problem at application start. I suggest you modify you application startup code to trace what's really going on and get, not only the XamlParseException, but also the inner exception(s) which should help you determine the root of the problem. Here is an example:

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            // hook on error before app really starts
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            base.OnStartup(e);
        }

        void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            // put your tracing or logging code here (I put a message box as an example)
            MessageBox.Show(e.ExceptionObject.ToString());
        }
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...