我在一台特定的PC上的WPF应用程序中遇到此异常,其他六个运行正常。以下是完整的异常跟踪:
System.Windows.Markup.XamlParseException: The type initializer for 'System.Windows.Window' threw an exception.
---> System.TypeInitializationException: The type initializer for 'System.Windows.FrameworkElement' threw an exception.
---> System.TypeInitializationException: The type initializer for 'System.Windows.Documents.TextElement' threw an exception.
---> System.TypeInitializationException: The type initializer for 'MS.Internal.FontCache.Util' threw an exception.
---> System.UriFormatException: Invalid URI: The format of the URI could not be determined.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri..ctor(String uriString, UriKind uriKind)
at MS.Internal.FontCache.Util..cctor()
--- End of inner exception stack trace ---
at MS.Internal.FontCache.Util.get_Dpi()
at System.Windows.SystemFonts.ConvertFontHeight(Int32 height)
at System.Windows.Documents.TextElement..cctor()
--- End of inner exception stack trace ---
at System.Windows.FrameworkElement..cctor()
--- End of inner exception stack trace ---
at System.Windows.Window..cctor()
--- End of inner exception stack trace ---
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
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__1(Object unused)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
答案 0 :(得分:1)
此时看起来有问题:
---> System.TypeInitializationException: The type initializer for 'MS.Internal.FontCache.Util' threw an exception.
---> System.UriFormatException: Invalid URI: The format of the URI could not be determined.
看到机器之间的问题不一致,并且提到了字体,您是否可能引用了未在此特定计算机上安装的字体?
答案 1 :(得分:0)
问题是由于WinDir环境变量搞砸了,它在内部Microsoft类FontCache.Util的静态初始化程序中使用。这可能是由一个非常长的PATH环境变量引起的,如下所述:https://superuser.com/questions/237268/missing-environment-variables-in-windows-7。
(FontCache.Util:http://referencesource.microsoft.com/#PresentationCore/Core/CSharp/MS/Internal/FontCache/FontCacheUtil.cs)。