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

时间:2014-03-10 15:22:20

标签: 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)

我尝试删除并手动添加对Microsoft.Windows.Shell的引用,但仍然没有。

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

这是Excecption的一行:

    protected override DependencyObject CreateShell()
    {
        return this.Container.GetExportedValue<ShellWindow>();
    }

我该如何解决? 感谢。

4 个答案:

答案 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:前缀,并使用默认的功能区控件,而不是使用命名空间的控件。