2

我正在使用 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。

4

5 回答 5

0

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

于 2014-03-12T20:51:22.937 回答
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”或其依赖项之一。指定的模块无法找到。

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

于 2014-03-13T18:19:32.403 回答
0

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

于 2014-05-20T14:02:44.967 回答
0

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

于 2015-01-05T21:20:58.940 回答
0

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

这样它就不会在现有安装的一个和 Nuget 包中新添加的一个之间发生冲突。

于 2016-01-18T05:42:21.480 回答