【问题标题】:XAML designer: 'FileNotFoundException'XAML 设计器:'FileNotFoundException'
【发布时间】:2014-03-07 19:24:05
【问题描述】:

我正在使用 C# 开发可扩展的 WPF 应用程序。对于可扩展性,我使用 MEF(托管可扩展性框架)。但是从今天开始,XAML 设计器不再为MainWindow.xaml 工作。它会抛出 FileNotFoundException 并带有此消息:

无法加载文件或程序集“System.ComponentModel.Composition.CodePlex, Version=4.1.2.0, Culture=neutral, PublicKeyToken=13e5ffd4e05db186”或其依赖项之一。找不到指定的模块。

但奇怪的是,文件确实存在。我将它复制到bin\debug 文件夹中。并将其添加到参考文献中(是的,我尝试重新添加它,但这没有帮助)。另一个奇怪的事情是,它似乎是由 XAML 代码引起的,因为设计器适用于所有其他窗口。我已经尝试将一些可疑部分(ItemControls 列出插件)标记为评论(我不想删除它们)。好吧,它曾经工作过,但后来我构建了解决方案,设计器崩溃了(内存不足)。从那以后我又遇到了同样的问题。

编辑:

我发现 XAML 不是问题所在。当我删除对 System.ComponentModel.Composition.CodePlex 的引用以及使用此库的每个代码时,问题就得到了解决 - 直到我重新启动 Visual Studio 或 Designer。

【问题讨论】:

  • Visual Studio 的哪个版本?在最新版本的 Blend 中尝试一下,看看是否得到相同的结果。
  • @OmegaMan 我正在使用 Visual Studio 2013 Express。我可以在 Blend 中打开解决方案,但我不知道如何在设计器视图中查看 MainWindow.xaml
  • 在 Blend 中,只需在其解决方案资源管理器中单击文件即可打开它。此时它应该显示设计视图。如果显示的是原始 xaml,则 xaml 代码的右上角有一个小按钮,可在设计和 xaml 之间切换。
  • 没有按钮。即使我创建了一个新窗口(在 Blend 中)。这是screenshot
  • 我电脑上的 Blend 版本似乎只适用于 Windows 应用商店。

标签: c# visual-studio filenotfoundexception xaml-designer


【解决方案1】:

您可以通过为提到的 dll 设置 CopyLocal=true 来简单地消除此错误。

这样就不会在现有安装的和从 Nuget 包中新添加的冲突了。

【讨论】:

    【解决方案2】:

    尝试从 xaml 中删除项目/控件,直到问题不再出现。通过这样做,您可以推测问题的根源并可能解决或至少向 StackOverflow 提供我们可以帮助解决的特定情况。

    【讨论】:

      【解决方案3】:

      我在<Window.Style> 标记中发现了两个按钮(似乎)会导致设计器崩溃:

      <Button Command="{x:Static local:MainWindow.Maximize}" Loaded="MaximizeLoaded" Content="&#xf065;" ToolTip="{lex:Loc Bukkit Manager:UI:maximize}" Style="{StaticResource CaptionButton}" shell:WindowChrome.IsHitTestVisibleInChrome="True"/> <Button Command="{x:Static local:MainWindow.Minimize}" Content="&#xf068;" ToolTip="{lex:Loc Bukkit Manager:UI:minimize}" Style="{StaticResource CaptionButton}" shell:WindowChrome.IsHitTestVisibleInChrome="True"/>

      但奇怪的是,每个控件的Command= 属性都被标记为错误。尽管命令(及其绑定)存在。鼠标悬停在上面会显示一个工具提示

      无法加载文件或程序集“System.ComponentModel.Composition.CodePlex, Version=4.1.2.0, Culture=neutral, PublicKeyToken=13e5ffd4e05db186”或其依赖项之一。找不到指定的模块。

      只有在设计器运行时才会发生这种情况,但我仍然可以调试(和运行)应用程序。当我终止设计器过程时,错误就消失了。

      【讨论】:

        【解决方案4】:

        我注意到 bin\debug 文件夹中的 System.ComponentModel.Composition.CodePlex.dll 与 Visual Studio 正在搜索的版本不同。 VS 尝试查找版本为 4.1.2.0 的文件,但目录中的文件是 1.1.0.0。

        【讨论】:

          【解决方案5】:

          从 Visual Studio 中的引用位置打开文件 System.ComponentModel.Composition.CodePlex.dll 作为文件类型“资源文件”。将 FILEVERSION 和 PRODUCTVERSION 更改为 4,1,2,0 并重建项目。这是让设计师工作的解决方法。干净的解决方法是请求 CodePlex dll 为这些程序集提供正确的产品和文件版本。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-04-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-09
            • 2012-05-15
            • 2016-01-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多