.net 有人知道为什么是“a”吗;清单定义与程序集引用不匹配;标准框架引用可能发生错误?
我有一个困扰我一段时间的问题。在我发布的WPF/.NET 3.5产品上,由于以下错误,100次安装中大约有1次无法运行该软件: System.Windows.Markup.XamlParseException:对象初始化失败(ISupportInitialize.EndInit)。定位的程序集清单定义与程序集引用不匹配。(HRESULT异常:0x8013100)标记文件“mainwindow.xaml”中的对象“System.Windows.Controls.MenuItem”处出错 这令人费解,原因有三:.net 有人知道为什么是“a”吗;清单定义与程序集引用不匹配;标准框架引用可能发生错误?,.net,wpf,xaml,reference,.net,Wpf,Xaml,Reference,我有一个困扰我一段时间的问题。在我发布的WPF/.NET 3.5产品上,由于以下错误,100次安装中大约有1次无法运行该软件: System.Windows.Markup.XamlParseException:对象初始化失败(ISupportInitialize.EndInit)。定位的程序集清单定义与程序集引用不匹配。(HRESULT异常:0x8013100)标记文件“mainwindow.xaml”中的对象“System.Windows.Controls.MenuItem”处出错 这令人费解
编辑2:结果表明,客户安装了一个名为“黄昏”的非官方Windows7 Aero主题。出于某种原因,PresentationFramework决定调用PresentationFramework.dash,而不是PresentationFramework.Aero(我在项目中明确包含的参考)。我假设该错误是由于第三方主题安装错误造成的,因为GAC中找不到Dash,但您能否解释一下我如何阻止引用尝试,并强制所有GUI元素在出现故障的机器上使用PresentationFramework.Aero?,运行以更好地了解它为什么会偏离轨道。在应用程序中,您可以指定要使用哪个主题强制执行系统主题以外的其他主题 此代码需要添加到应用程序启动事件中
void App_Startup(object sender, StartupEventArgs e) {
// other startup code
Uri uri = new Uri(“PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component\\themes/aero.normalcolor.xaml”, UriKind.Relative);
Resources.MergedDictionaries.Add(Application.LoadComponent(uri) as ResourceDictionary);
}
您还可以在XAML中定义主题:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source=“/PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component\themes/aero.normalcolor.xaml“ />
</ResourceDictionary.MergedDictionaries>
<!– other resources go here –>
</ResourceDictionary>
</Application.Resources>
听起来像是构建或部署的问题。可能与.NET版本控制有关?您的生成计算机或客户端是否安装了4.5?生成计算机没有安装4.5,并且具有和不具有4.5的客户端报告了相同的错误。我很惊讶自定义操作系统主题会导致崩溃。我的意思是,这将导致绑定错误,但这是因为WPF将查找与OS主题匹配的resourcedictionary。由于PresentationFramework声明其主题文件位于外部程序集中,因此它将尝试加载具有该名称的程序集。这应该会失败,但WPF已设置为处理该问题。然后,它将返回到加载“classic”OS主题,并将其用作类的默认resourcedictionary。顺便问一下,您得到的异常是否有内部异常消息?如果您只是创建一个全新的应用程序,其中只包含一些菜单项,并在应用程序出现故障的系统上运行它,您会遇到问题吗?在未安装VS的客户机器上,是否有标准化的方法来执行此操作?请参阅此问题(其实应该在前面找到):在这个上下文中,Dawn听起来像是应用程序引用的自定义WPF主题(Aero是标准主题名称的一个示例)。您在XAML中是否有任何对Dawn的引用?没有,解决方案中的任何地方都没有“Dawn”一词(在文件中找到)。您是否知道有任何工具可以追踪进行绑定尝试的原因?另外,请记住,在我的测试机器上甚至没有尝试此引用绑定。。。任何洞察都将不胜感激,以防止这种情况再次发生。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source=“/PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component\themes/aero.normalcolor.xaml“ />
</ResourceDictionary.MergedDictionaries>
<!– other resources go here –>
</ResourceDictionary>
</Application.Resources>