名称空间“clr-namespace”</class>中不存在WPF <class>

时间:2014-03-07 09:55:17

标签: wpf xaml namespaces aliases

我有一个运行时间很长的WPF应用程序,突然间,XAML设计器(和错误列表)开始抱怨在命名空间别名中找不到某些类。

例如,所有转换器都存储在MyNameSpace.Converters中,但是,只要打开包含对此命名空间内转换器的引用的表单,设计器就会报告标记错误,项目构建也会反映这些错误。但是这些转换器 ARE 在这个命名空间内 - 转换器没有改变yonks:项目运行良好,这些转换器本身,工作正常 - 如果它们不是很明显。在设计和构建阶段报告这些错误:如果存在构建错误,为什么项目会运行?

我已经尝试清理项目,关闭VS,重新启动PC但没有运气。

示例错误消息:

The name 'FPriorityBrushConverter' does not exist in the namespace 'clr-namespace:PracticonCASMgr.Converters'

XAML:

   xmlns:converters="clr-namespace:PracticonCASMgr.Converters"

...

  <Grid.Resources>
     <converters:FPriorityBrushConverter  x:Key="FPriorityBrush"/>

...

打开转换器源.cs

namespace PracticonCASMgr.Converters

 public class FPriorityBrushConverter : IValueConverter
    {...

如果我更改其中一个转换器(返回颜色btw)的行为,以便返回刷子,例如BLUE,那么使用此转换器的所有区域都会显示为蓝色 - 所以转换器是工作正常。然而,设计师坚持抱怨Markup错误。

寻找解决方案,我发现其他人遇到这个只是发现关闭VS,重新启动,清洁,点击手指三次解决了问题,但这些都不适用于我。

完全混淆并希望有人可以对此有所了解。

由于

P.S。在撰写本文时,一位同事刚刚告诉我,该项目现在抱怨现在无法找到XAML中引用的用户控件:但是项目运行正常,尽管构建错误和用户控件(显然已经消失)正常运行。

Visual Studio 2012已完全更新。 在网络共享上运行的项目 - 我这样说是因为其他人通过在本地运行项目解决了这个问题,但对我来说这不是一个选项。

2 个答案:

答案 0 :(得分:4)

我刚刚参加了这场战斗。除此之外,当我删除对我创建的自定义attatched属性的引用时,即使设计视图很好,我也会出现“设计视图不适用于X64和AMD目标”的问题。

我在网上找到一个链接,说从x64切换到x86目标然后再回来就可以了。令人惊讶的是有效。

答案 1 :(得分:1)

如果您在项目中使用某种依赖注入,那么VS将无法理解某些资源的来源,如果它们是在消费项目中没有直接引用的程序集中定义的。

我一直看到这个(我使用Prism),正如你所发现的那样,资源在运行时就可以解决了。