我有一个问题困扰了我一段时间。在我发布的 WPF/.NET 3.5 产品上,由于以下错误,大约有 100 次安装将无法运行该软件:
System.Windows.Markup.XamlParseException:对象初始化失败 (ISupportInitialize.EndInit)。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)标记文件“mainwindow.xaml”中的对象“System.Windows.Controls.MenuItem”出错。
这令人费解,原因有以下三个:
这只发生在大约 1% 到 2% 的安装中。
据我所知,这些系统上的 .NET 安装或操作系统没有什么不寻常的。
默认框架引用 (System.Windows.Controls.MenuItem) 会发生这种情况
谁能想到可能的原因?
编辑:按照“500”的提示后,我能够在客户机器上运行 Fusion 日志查看器。在开发机和其他所有测试机上,对“PresentationFramework”和“PresentationFramework.Aero”都有成功的绑定尝试,在意料之中。在客户端机器上,有一个额外的绑定尝试失败(删除了不相关的行):
*** Assembly Binder Log Entry (2/3/2013 @ 1:18:44 PM) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = PresentationFramework.Dawn TOP, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: PresentationFramework.Dawn TOP, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/My App/PresentationFramework.Dawn TOP.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/My App/PresentationFramework.Dawn TOP/PresentationFramework.Dawn TOP.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/My App/PresentationFramework.Dawn TOP.EXE.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/My App/PresentationFramework.Dawn TOP/PresentationFramework.Dawn TOP.EXE.
LOG: All probing URLs attempted and failed.
谷歌搜索“PresentationFramework.Dawn”没有返回任何结果,我找不到对该文件的任何引用。可以做任何解释或额外的测试吗?
编辑 2: 事实证明,客户安装了一个名为“Dusk”的非官方 Windows 7 Aero 主题。出于某种原因,PresentationFramework 决定调用 PresentationFramework.Dusk 而不是 PresentationFramework.Aero(我在项目中明确包含的参考)。我假设该错误是由于在 GAC 中找不到 Dusk 而导致的第 3 方主题安装错误的结果,但是您能否说明我如何阻止尝试引用并强制所有 GUI 元素使用 PresentationFramework.Aero?