`无法加载文件或程序集'Microsoft.Windows.Shell`,Prism - C#

Guy*_*Guy 8 c# wpf prism mef

我正在尝试运行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)

我试图删除和manualy添加引用, Microsoft.Windows.Shell但仍然没有.

此DLL的版本是3.0.1.0,而不是3.5.41019.1在异常中.

这是Excecption的一行:

    protected override DependencyObject CreateShell()
    {
        return this.Container.GetExportedValue<ShellWindow>();
    }
Run Code Online (Sandbox Code Playgroud)

我该如何解决?谢谢.

Ras*_*ara 17

最后,我通过 从此处安装Multilingual App Toolkit并从"C:\ Program Files(x86)\ Multilingual App Toolkit"位置添加"Microsoft.Windows.Shell.dll"参考来解决此问题, 或将dll复制到您的私有程序集文件夹并参考.

当您从Nuget 安装Microsoft.Windows.Shell.dll时,它正在安装v3.0.1,但实际的预期版本是v3.5.41019.1.你将从上面的路径获得这个新版本.

谢谢


Guy*_*Guy 6

因此,在尝试了所有内容之后,我在计算机中寻找其他文件(Microsoft.Windows.Shell.dll),并找到了较新的版本,这3.5.41019.1MicrosoftRibbon for WPF\V3.5文件夹中的Exception()所期望的一样。

因为它是NuGet软件包的最新版本,所以它很强大is 3.0.1

不管怎么说,还是要谢谢你。