我正在尝试运行PRISM(MEF)示例项目,但得到此错误:
托管调试助手'BindingFailure'已检测到问题 'Prism4MefDemo.vshost.exe'。
附加信息:带有显示名称的程序集 'Microsoft.Windows.Shell'无法加载'加载'绑定上下文 ID为1的AppDomain。失败的原因是: System.IO.FileLoadException:无法加载文件或程序集 'Microsoft.Windows.Shell,Version = 3.5.41019.1,Culture = neutral, PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该 找到程序集的清单定义与程序集不匹配 参考。 (HRESULT异常:0x80131040)
我尝试删除并手动添加对Microsoft.Windows.Shell
的引用,但仍然没有。
此DLL的版本为3.0.1.0
,而不是异常中的3.5.41019.1
。
这是Excecption的一行:
protected override DependencyObject CreateShell()
{
return this.Container.GetExportedValue<ShellWindow>();
}
我该如何解决? 感谢。
答案 0 :(得分:17)
最后,我通过从here安装多语言应用工具包并从“C:\ Program”添加对“Microsoft.Windows.Shell.dll”的引用来解决此问题文件(x86)\ Multilingual App Toolkit“或将dll复制到您的私人程序集文件夹并引用它。
当您从Nuget安装 Microsoft.Windows.Shell.dll 时,它正在安装v3.0.1,但实际预期的版本是v3.5.41019.1。你将从上面的路径中获得这个新版本。
由于
答案 1 :(得分:5)
因此,在尝试了所有内容之后,我在计算机中查找了其他文件( Microsoft.Windows.Shell.dll )并找到了更新版本,正如Exception(3.5.41019.1
)所期望的那样MicrosoftRibbon for WPF\V3.5
文件夹。
它是strang,因为最新版本的 NuGet 包is 3.0.1
。
非常感谢。
答案 2 :(得分:0)
将Microsoft.Windows.Shell.dll v3.5.41019.1添加到项目引用中,可以解决问题。
答案 3 :(得分:0)
使用功能区控件时遇到了这个问题。
解决方案是从XAML的开头删除ribbon:
前缀,并使用默认的功能区控件,而不是使用命名空间的控件。