我正在使用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。
答案 0 :(得分:0)
尝试从xaml中删除项目/控件,直到问题不再显示为止。通过这样做,您可以分解问题的起源,并可能解决或至少为StackOverflow提供我们可以帮助解决的特定情况。
答案 1 :(得分:0)
我在<Window.Style>
标签中发现两个按钮(似乎)导致设计师崩溃:
<Button Command="{x:Static local:MainWindow.Maximize}" Loaded="MaximizeLoaded" Content="" ToolTip="{lex:Loc Bukkit Manager:UI:maximize}" Style="{StaticResource CaptionButton}" shell:WindowChrome.IsHitTestVisibleInChrome="True"/>
<Button Command="{x:Static local:MainWindow.Minimize}" Content="" 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中新添加的设备之间不会发生冲突。