WPF:XamlParseException - >加载资源字典时的AccessViolation

时间:2010-11-02 21:07:17

标签: wpf access-violation resourcedictionary xamlparseexception

此WPF应用程序以.NET 3.5为目标,使用Visual Studio 2010中的4.0工具构建(csc.exe版本为4.0.30319.1)。

我不知道该怎么做我所看到的这个例外。同样的exe已经在所有机器上运行了几个月,但就在今天,客户遇到了这个问题。我无法在本地重新编写它,我必须继续下面是我们日志文件中的堆栈跟踪。

我使用Visual Studio 2010创建了一个快速示例应用程序,它只显示一个Window中的按钮,按钮内容字符串是从资源字典中提取的。这适用于客户机器,因此看起来.NET安装并没有完全在那里......

关于调查或调查下一步的任何想法?也许某些客户的.NET安装状态??

编辑:客户执行了卸载并重新安装.NET 3.5并修复了该问题。我猜他们的安装中有一些奇怪的状态导致了这个问题。

System.Windows.Markup.XamlParseException:'MainWindowViewResources.xaml'值无法分配给对象'System.Windows.ResourceDictionary'的属性'Source'。尝试读取或写入受保护的内存。这通常表明其他内存已损坏。标记文件'symformconfig; component / view / mainwindowview.xaml'中对象'System.Windows.ResourceDictionary'出错。 ---> System.AccessViolationException:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。    在System.IO.Packaging.PackagePart.CleanUpRequestedStreamsList()    在System.IO.Packaging.PackagePart.GetStream(FileMode模式,FileAccess访问)    在System.IO.Packaging.PackWebResponse.CachedResponse.GetResponseStream()    在System.IO.Packaging.PackWebResponse.GetResponseStream()    在System.IO.Packaging.PackWebResponse.get_ContentType()    在MS.Internal.WpfWebRequestHelper.GetContentType(WebResponse响应)    在MS.Internal.WpfWebRequestHelper.GetResponseStream(WebRequest请求,ContentType& contentType)    在System.Windows.ResourceDictionary.set_Source(Uri值)    ---内部异常堆栈跟踪结束---    at System.Windows.Markup.XamlParseException.ThrowException(String message,Exception innerException,Int32 lineNumber,Int32 linePosition,Uri baseUri,XamlObjectIds currentXamlObjectIds,XamlObjectIds contextXamlObjectIds,Type objectType)    在System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext,Int32 lineNumber,Int32 linePosition,String message,Exception innerException)    在System.Windows.Markup.BamlRecordReader.ThrowExceptionWithLine(String message,Exception innerException)    在System.Windows.Markup.BamlRecordReader.ReadPropertyRecordBase(String attribValue,Int16 attributeId,Int16 converterTypeId)    在System.Windows.Markup.BamlRecordReader.ReadPropertyConverterRecord(BamlPropertyWithConverterRecord bamlPropertyRecord)    在System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)    在System.Windows.Markup.BamlRecordReader.Read(Boolean singleRecord)    在System.Windows.Markup.TreeBuilderBamlTranslator.ParseFragment()    在System.Windows.Markup.TreeBuilder.Parse()    在System.Windows.Markup.XamlReader.LoadBaml(Stream stream,ParserContext parserContext,Object parent,Boolean closeStream)    在System.Windows.Application.LoadComponent(对象组件,Uri resourceLocator)    在Symform.Node.Configuration.MainWindowView.InitializeComponent()    在Symform.Node.Configuration.MainWindowView..ctor()    在Symform.Node.Configuration.App.OnStartup(StartupEventArgs e)    在System.Windows.Application。< .ctor> b__0(对象未使用)    在System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托回调,对象args,布尔isSingleParameter)    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source,Delegate callback,Object args,Boolean isSingleParameter,Delegate catchHandler)

2 个答案:

答案 0 :(得分:1)

确保MainWindowViewResources.xaml的BuildAction设置为Page而不是Resource。您可以在“属性”面板中找到该设置。

答案 1 :(得分:1)

客户执行了卸载并重新安装.NET 3.5并修复了该问题。我猜他们的安装中有一些奇怪的状态导致了这个问题。