【问题标题】:`Could not load file or assembly 'Microsoft.Windows.Shell` , Prism - C#`无法加载文件或程序集'Microsoft.Windows.Shell`,Prism - C#
【发布时间】:2014-04-13 19:03:12
【问题描述】:

我正在尝试运行 PRISM (MEF) 示例项目,但出现此错误:

托管调试助手“BindingFailure”检测到一个问题 'Prism4MefDemo.vshost.exe'。

附加信息:显示名称的程序集 “Microsoft.Windows.Shell”未能在“加载”绑定上下文中加载 ID 为 1 的 AppDomain。失败的原因是: System.IO.FileLoadException:无法加载文件或程序集 'Microsoft.Windows.Shell,版本=3.5.41019.1,文化=中性, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)

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

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

这是带有异常的行:

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

我该如何解决? 谢谢。

【问题讨论】:

  • 您使用的是什么版本的 .net,您是否强制使用特定的 cpu 架构?

标签: c# wpf prism mef


【解决方案1】:

最后我通过从here 安装 Multilingual App Toolkit 并从位置 "C:\Program Files ( x86)\Multilingual App Toolkit" 或将 dll 复制到您的私有程序集文件夹并引用它。

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

谢谢

【讨论】:

  • 搜索了很多!
【解决方案2】:

所以在尝试了一切之后,我在我的计算机中查找了其他文件 (Microsoft.Windows.Shell.dll) 并找到了较新的版本,正如 @987654322 中的异常 (3.5.41019.1) 所预期的那样@文件夹。

很奇怪,因为最新版的NuGetis 3.0.1

还是谢谢。

【讨论】:

  • 有时 NuGet 中软件包的最后一个版本具有较低的编号,因为那是安全版本而不是较新的 Beta 版本...您可以通过将您提到的版本放在安装末尾来获得理想的软件包-打包命令行...
【解决方案3】:

将 Microsoft.Windows.Shell.dll v3.5.41019.1 添加到您的项目引用中,可以解决问题。

【讨论】:

  • OP 在问题中明确表示他们已经尝试删除并重新添加参考。
【解决方案4】:

我们在使用 Ribbon 控件时遇到了这个问题。

解决方案是从 XAML 的一开始就删除 ribbon: 前缀,并使用默认的功能区控件,而不是使用命名空间的控件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多