此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)
答案 0 :(得分:1)
确保MainWindowViewResources.xaml的BuildAction设置为Page而不是Resource。您可以在“属性”面板中找到该设置。
答案 1 :(得分:1)
客户执行了卸载并重新安装.NET 3.5并修复了该问题。我猜他们的安装中有一些奇怪的状态导致了这个问题。