C# XAML设计器:';FileNotFoundException';
我正在使用C#开发一个可扩展的WPF应用程序。对于可扩展性,我使用MEF(托管可扩展性框架)。但是从今天起,XAML设计器不再适用于C# XAML设计器:';FileNotFoundException';,c#,visual-studio,filenotfoundexception,xaml-designer,C#,Visual Studio,Filenotfoundexception,Xaml Designer,我正在使用C#开发一个可扩展的WPF应用程序。对于可扩展性,我使用MEF(托管可扩展性框架)。但是从今天起,XAML设计器不再适用于MainWindow.XAML。它抛出带有以下消息的FileNotFoundException: 无法加载文件或程序集“System.ComponentModel.Composition.CodePlex,版本=4.1.2.0,区域性=中性,PublicKeyToken=13e5ffd4e05db186”或其依赖项之一。找不到指定的模块 但奇怪的是,文件确实存在。我
MainWindow.XAML
。它抛出带有以下消息的FileNotFoundException
:
无法加载文件或程序集“System.ComponentModel.Composition.CodePlex,版本=4.1.2.0,区域性=中性,PublicKeyToken=13e5ffd4e05db186”或其依赖项之一。找不到指定的模块
但奇怪的是,文件确实存在。我将其复制到bin\debug
文件夹中。并将其添加到引用中(是的,我尝试重新添加,但没有帮助)。另一件奇怪的事情是,它似乎是由XAML代码引起的,因为设计器适用于所有其他窗口。我已经尝试将一些可疑部分(ItemControls
列出插件)标记为注释(我不想删除它们)。嗯,它曾经工作过,但后来我构建了解决方案,设计师崩溃了(内存不足)。从那以后,我又遇到了同样的问题
编辑:
我发现,XAML不是问题所在。当我删除对
System.ComponentModel.Composition.CodePlex的引用以及使用此库的每一个代码时,问题已经得到修复—直到我重新启动Visual Studio或设计器。尝试从xaml中删除项/控件,直到问题不再显现。通过这样做,您可以预知问题的根源,并可能解决或至少为StackOverflow提供我们可以帮助解决的特定情况。我在
标记中发现两个按钮(似乎)导致设计器崩溃:
但奇怪的是,每个控件的Command=
属性都标记为错误。尽管命令(及其绑定)存在。鼠标悬停在它上面时,会显示一个工具提示,上面写着
无法加载文件或程序集“System.ComponentModel.Composition.CodePlex,版本=4.1.2.0,区域性=中性,PublicKeyToken=13e5ffd4e05db186”或其依赖项之一。找不到指定的模块
只有在设计器运行时才会发生这种情况,但我仍然可以调试(并运行)应用程序。当我终止设计器过程时,错误就消失了。我注意到bin\debug
文件夹中的System.ComponentModel.component.CodePlex.dll
版本与Visual Studio正在搜索的版本不同。VS尝试查找版本为4.1.2.0的文件,但目录中的文件是1.1.0.0。从Visual Studio中的引用位置以文件类型“资源文件”打开文件System.ComponentModel.Composition.CodePlex.dll。将FILEVERSION和PRODUCTVERSION更改为4,1,2,0并重新生成项目。这是一个让设计师工作的变通方法。干净的修复方法是请求CodePlex dll为这些程序集提供正确的产品和文件版本 只需为所述dll设置CopyLocal=true
,即可删除此错误
这样,现有安装的版本与Nuget软件包中新添加的版本之间不会发生冲突。哪个版本的Visual Studio?在最新版本的Blend中试用,看看是否得到相同的结果。@OmegaMan我正在使用Visual Studio 2013 Express。我可以在Blend中打开解决方案,但我不知道如何在designer视图中查看main window.xaml
。在Blend中,只需单击其解决方案资源管理器中的文件即可打开它。此时,它应该显示设计视图。如果它显示的是原始xaml,那么在xaml代码的右上角有一个小按钮,可以在设计和xaml之间切换。没有按钮。即使我创建了一个新窗口(混合)。我的电脑上的Blend版本似乎只适用于Windows应用商店应用程序。