Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 有人知道为什么是“a”吗;清单定义与程序集引用不匹配;标准框架引用可能发生错误?_.net_Wpf_Xaml_Reference - Fatal编程技术网

.net 有人知道为什么是“a”吗;清单定义与程序集引用不匹配;标准框架引用可能发生错误?

.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”处出错 这令人费解

我有一个困扰我一段时间的问题。在我发布的WPF/.NET 3.5产品上,由于以下错误,100次安装中大约有1次无法运行该软件:

System.Windows.Markup.XamlParseException:对象初始化失败(ISupportInitialize.EndInit)。定位的程序集清单定义与程序集引用不匹配。(HRESULT异常:0x8013100)标记文件“mainwindow.xaml”中的对象“System.Windows.Controls.MenuItem”处出错

这令人费解,原因有三:

  • 这只发生在大约1%到2%的安装上

  • 就我所知,这些系统上的.NET安装或操作系统没有什么不寻常之处

  • 这在默认框架引用(System.Windows.Controls.MenuItem)中发生

  • 有人能想出可能的原因吗

    编辑:遵循“500”中的提示后,我能够在客户机器上运行Fusion日志查看器。在开发机器和所有其他测试机器上,在“PresentationFramework”和“PresentationFramework.Aero”上有成功的绑定尝试,这是预期的。在客户端计算机上,还有一次绑定尝试失败(删除了不相关的行):

    谷歌搜索“PresentationFramework.Dawn”不会返回任何结果,我也找不到此文件的任何引用。可以做任何解释或附加测试吗


    编辑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>