XAML无法编译,但没有任何错误消息,如果用户定义的对象是第一个资源,则紧跟x:Array资源

我发现这个问题很奇怪,可能是一个XAML / Visual Studio错误。 我希望其他人发现它不那么奇怪,并且解释为什么我正在做的事情是错误的,和/或更好的解决方法,而不仅仅是以不同的顺序声明资源。

我有这个简单的XAML:

    0.25     

当我尝试编译项目时,我收到以下错误:

1> … MainWindow.xaml.cs(25,13,​​25,32):错误CS0103:当前上下文中不存在名称“InitializeComponent”

我理解错误的含义,但不是为什么会发生错误。 XAML看起来很好,编译它没有错误,但由于某种原因,通常不会创建或使用InitializeComponent()的自动生成的.gics文件(即使文件来自之前的成功编译) ,它仍然没有编译到程序集中)。

如果我只是颠倒资源的顺序,它工作正常:

    0.25    

附加信息:

  • A是我项目中的任何类。 出于此测试的目的,它被声明为class A { } ,即一个空类,但我首先遇到了将转换器实例放入资源的问题。
  • 如果我使用内置类型而不是A ,例如Some string ,则不会发生错误。
  • 如果我将一个内置类型的对象作为资源放在用户定义的类型A对象和我的数组资源对象之间, 它也可以正常工作

换句话说,似乎有一个或多个用户定义的类型对象作为第一个资源元素,紧接着是一个数组对象,导致编译失败。 其他组合似乎工作得很好。

有人可以解释为什么这是预期的行为(除了重新安排我的资源,我应该做些什么来避免它),或者确认我认为这是XAML构建过程中的错误并不是完全疯了?

编辑:

鉴于这可能是一个真正的错误,我继续在这里打开一个Connect错误报告: https : //connect.microsoft.com/VisualStudio/feedback/details/1441123/xaml-fails-to-compile-without-error -if用户自定义对象-是先资源和-随后-立即逐-X-arrays资源

另请参阅相关/类似的Stack Overflow问题: 当前上下文中不存在名称“InitializeComponent”:奇怪的行为

编辑#2:

WPF更新了Connect报告(参见上面的链接),声明该bug的修复程序将在下一版本的.NET中发布:

Sachin [MSFT]于2016年3月9日下午3:53发布

WPF团队已经审查了这个问题,并在下一版本的.NET中修复。 我们感谢您的反馈,并考虑解决此问题 – WPF团队