Pregunta

¡Esta XamlParseException me está volviendo loco! Estoy usando .NET 3.5 en Visual Studio 1020 Este es mi XAML:

<Window x:Class="WinformsHost.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Advanced Notepad" Height="350" Width="525" Loaded="Window_Loaded">
<DockPanel>
    <Menu DockPanel.Dock="Top">

        <MenuItem Header="File">
            <MenuItem Header="_New" />
            <MenuItem Header="_Open..." />
            <MenuItem Header="_Save" />
            <MenuItem Header="S_ave As..." />
            <Separator />
            <MenuItem Header="Page Setup" />
            <MenuItem Header="Print" />
            <Separator />
            <MenuItem Header="Exit" />
        </MenuItem>

        <MenuItem Header="Edit">
            <MenuItem Header="Undo" />
            <MenuItem Header="Redo" />
            <Separator />
            <MenuItem Header="Cut" />
            <MenuItem Header="Copy" />
            <MenuItem Header="Paste" />
            <MenuItem Header="Delete"  />
            <Separator />
            <MenuItem Header="Time/Date" />
            <Separator />
            <MenuItem Header="Preferences" />
        </MenuItem>

        <MenuItem Header="Format">
            <MenuItem Header="Word Wrap" IsCheckable="True" />
            <MenuItem Header="Font..." />
        </MenuItem>

        <MenuItem Header="View">
            <MenuItem Header="Status Bar" IsCheckable="True" />
        </MenuItem>

        <MenuItem Header="Language">
            <RadioButton x:Name="rbtCmake" Checked="rbtCmake_Checked" Content="Cmake" />
            <RadioButton x:Name="rbtCSharp" Content="C#" />
            <RadioButton x:Name="rbtHTML" Content="HTML" />
            <RadioButton x:Name="rbtPython" Content="Python" />
            <Separator />
            <RadioButton x:Name="rbtText" IsChecked="True" Content="Text" />
        </MenuItem>

        <MenuItem Header="Help">
            <MenuItem Header="View Help" />
            <Separator />
            <MenuItem Header="About Notepad" />
        </MenuItem>

    </Menu>
    <StatusBar x:Name="stbStatus" DockPanel.Dock="Bottom" Visibility="Collapsed">
        <TextBlock x:Name="txtStatus" Text="Status" />
    </StatusBar>
</DockPanel>
</Window>

Entonces, de nuevo, ¿podría ser mi código? Aquí está la excepción:
System.Windows.Markup.XamlParseException was unhandled Message=Cannot create instance of 'MainWindow' defined in assembly 'Notepad, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation. Error in markup file 'MainWindow.xaml' Line 1 Position 9. Source=PresentationFramework LineNumber=1 LinePosition=9 StackTrace: at System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType) at System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext, Int32 lineNumber, Int32 linePosition, String message, Exception innerException) at System.Windows.Markup.BamlRecordReader.ThrowExceptionWithLine(String message, Exception innerException) at System.Windows.Markup.BamlRecordReader.CreateInstanceFromType(Type type, Int16 typeId, Boolean throwOnFail) at System.Windows.Markup.BamlRecordReader.GetElementAndFlags(BamlElementStartRecord bamlElementStartRecord, Object& element, ReaderFlags& flags, Type& delayCreatedType, Int16& delayCreatedTypeId) at System.Windows.Markup.BamlRecordReader.BaseReadElementStartRecord(BamlElementStartRecord bamlElementRecord) at System.Windows.Markup.BamlRecordReader.ReadElementStartRecord(BamlElementStartRecord bamlElementRecord) at System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord) at System.Windows.Markup.BamlRecordReader.Read(Boolean singleRecord) at System.Windows.Markup.TreeBuilderBamlTranslator.ParseFragment() at System.Windows.Markup.TreeBuilder.Parse() at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) at System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc) at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties) at System.Windows.Application.DoStartup() at System.Windows.Application.<.ctor>b__0(Object unused) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter) at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.Run() at System.Windows.Application.RunDispatcher(Object ignore) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run(Window window) at System.Windows.Application.Run() at WinformsHost.App.Main() in C:\Users\Mohit\Documents\Visual Studio 2010\Projects\Notepad\Notepad\obj\x86\Debug\App.g.cs:line 0 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: System.Reflection.TargetInvocationException Message=Exception has been thrown by the target of an invocation. Source=mscorlib StackTrace: at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Windows.Markup.BamlRecordReader.CreateInstanceFromType(Type type, Int16 typeId, Boolean throwOnFail) InnerException: NLog.Config.NLogConfigurationException Message=Exception occured when loading configuration from 'C:\Users\Mohit\Documents\Visual Studio 2010\Projects\Notepad\Notepad\bin\Debug\NLog.config' Source=NLog StackTrace: at NLog.Config.XmlLoggingConfiguration..ctor(String fileName, Boolean ignoreErrors) at NLog.Config.XmlLoggingConfiguration..ctor(String fileName) at NLog.LogFactory.get_Configuration() at NLog.LogFactory.GetLogger(LoggerCacheKey cacheKey) at NLog.LogFactory.GetLogger(String name) at NLog.LogManager.GetCurrentClassLogger() at WinformsHost.MainWindow..ctor() in C:\Users\Mohit\Documents\Visual Studio 2010\Projects\Notepad\Notepad\MainWindow.xaml.cs:line 15 InnerException: NLog.Config.NLogConfigurationException Message=Target console not found. Source=NLog StackTrace: at NLog.Config.XmlLoggingConfiguration.ConfigureRulesFromElement(LoggingConfiguration config, LoggingRuleCollection rules, XmlElement element) at NLog.Config.XmlLoggingConfiguration.ConfigureFromXmlElement(XmlElement configElement, String baseDirectory) at NLog.Config.XmlLoggingConfiguration.ConfigureFromFile(String fileName) at NLog.Config.XmlLoggingConfiguration..ctor(String fileName, Boolean ignoreErrors) InnerException:

¿Fue útil?

Solución

No creo que esto sea realmente una XamlParseException: creo que es una TargetInvocationException que se ha envuelto en una XamlParseException. Eche un vistazo a la mejor excepción interna:

Nlog.config.nlogConfigurationException Mensaje = Excepción ocurrida al cargar la configuración de 'C: Users Mohit Documents Visual Studio 2010 Projects Notepad Notepad bin debug nlog.config'

Parece que tiene un archivo de configuración Borked, posiblemente debido a un XML inválido o posiblemente por alguna razón más específica.

Cuando obtienes una misteriosa XamlParseException, es siempre Vale la pena comprobar la innerexception para obtener un TargetinVocationException (y perforar desde allí si hay una). Sí, ¡es muy confuso y engañoso!

Otros consejos

Sé que esta es una vieja pregunta, pero espero que esto ayude a alguien.

Tenía una propiedad de la ventana principal que era un objeto comercial ... así que cuando la ventana se inicializó, el objeto comercial intentó inicializar ... genial, pero la capa de acceso de datos no se había configurado, por lo tanto, arrojó un error ... .

Entonces, C# llamó a eso un error de análisis XML porque sucedió muy temprano ... realmente fue arrojado en código.

Resolvió el mismo problema al incluir los archivos DLL y config de referenciados en la misma carpeta que el archivo EXE. Intentar ejecutar el exe solo causará una excepción de nivel de Windows.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top