2

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

例如,所有转换器都存储在 MyNameSpace.Converters 中,但是,无论何时打开包含对该命名空间内转换器的引用的表单,设计器都会报告标记错误,并且项目构建也会反映这些错误。但是这些转换器在这个命名空间内 - 转换器在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)进行更改,以便返回蓝色的画笔,则使用此转换器的所有区域都以蓝色显示 - 所以转换器工作正常。然而,设计师坚持抱怨标记错误。

寻找解决方案,我发现其他人也遇到过这种情况,只是发现关闭VS,重新启动,清理,点击手指三下解决了这个问题,但这些都对我不起作用。

完全困惑,希望有人能对此有所了解。

谢谢

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

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

4

2 回答 2

4

我刚刚打了这场仗。除此之外,当我删除对我创建的自定义附加属性的引用时,即使设计视图很好,每当弹出这个问题时,我都会遇到“设计视图不适用于 X64 和 AMD 目标”的问题。

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

于 2015-01-07T13:33:43.053 回答
1

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

我一直都看到这一点(我使用 Prism),并且正如您所发现的,资源在运行时可以正常解析。

于 2014-03-07T10:13:04.507 回答