2

今天我停止编译我的 WPF 项目。我开始收到许多错误,例如“在(xxx xaml 文件)的‘交互’类型中找不到可附加属性‘行为’。”

我没有更改任何引用(我的项目中仍然引用了“Microsoft.Expression.Interactions”和“System.Windows.Interactivity”dll)。

更新: 我得到的错误与此类似:“错误 15 找不到类型'i:EventTrigger'。验证您没有丢失程序集引用并且所有引用的程序集都已构建。(此处为 Xaml 文件名) "

i: 定义为:"xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity""

重新编译时,现在出现这些错误。如上所述,我在项目中仍然有相同的 DLL 引用。我不知道会发生什么变化。

谢谢。

更完整的信息:

在一年半的时间里,该代码在数百次正在进行的编译中运行良好。

  • 最近我能想到的唯一真正的变化是昨天我完全卸载了 Visual Studio 2013 RC。我不知道这会如何产生影响,并且引用的 Dll 仍然存在。
  • 涉及的 2 个命名空间引用是:
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
  • 所有同时引用 i: 和 ie: 的元素现在都无法编译并出现类似于以下的错误:
  • “找不到类型'i:EventTrigger'。验证您没有丢失程序集引用并且所有引用的程序集都已构建。”
  • “找不到类型 'ei:FluidMoveSetTagBehavior'。验证您没有丢失程序集引用并且所有引用的程序集都已构建。”
  • 但是,我发现当我将 i: 上面的命名空间更改为:“clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity”时,i: 的错误消失了。

但是,我似乎无法弄清楚将 ei="http://schemas.microsoft.com/expression/2010/interactions" 引用更改为 Microsoft.Expression.Interactions 程序集的正确语法。我不知道为什么它会有所作为,我可能会走错路,但这是我的下一步。对那个有帮助吗?

4

1 回答 1

2

经过更多的挖掘,我发现我提到的 VS 2013 RC 的卸载必须也卸载了 Expression Blend SDK for .Net 4。

奇怪的是,我引用的 Dll 是 3.5 SDK 遗留下来的,但命名空间是用于 .Net 4 SDK 的,并且一直在工作。(直到该 SDK 被卸载)。对我来说,一个线索是当我进入另一个命名空间并且“//schemas.microsoft.com/expression/2010 / interactivity”选择不再出现在智能感知列表中时。

我为 .Net 4 重新安装了 Blend SDK,一切都好起来了。感谢您的帮助。提醒我要始终关注“发生了什么变化”这个问题,即使它可能不是你怀疑的地方......

于 2013-10-22T14:00:21.253 回答