XAML设计师:'FileNotFoundException'

时间:2014-03-07 19:24:06

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

我正在使用C#开发可扩展的WPF应用程序。为了可扩展性,我使用MEF(Managed Extensibility Framework)。但是从今天开始,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。

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我在<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&#39;或其中一个依赖项。找不到指定的模块。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您可以通过为上述dll设置CopyLocal=true来删除此错误。

这样,现有已安装的设备与Nuget Package中新添加的设备之间不会发生冲突。