UWP幽灵编译错误

3
我有一个UWP应用程序,出现了虚假的XAML编译错误。
例如,在此示例中,我在Win2D控件上遇到了错误:
           <win2D:CanvasControl x:Name="MapCanvas"
                         RelativePanel.Below="UpButton" RelativePanel.Above="DownButton" RelativePanel.RightOf="LeftButton" RelativePanel.LeftOf="RightButton"
                         Draw="{x:Bind Vm.OnDrawCanvas}" 
                         CreateResources="{x:Bind Vm.OnCreateResources}" 
                         KeyUp="{x:Bind Vm.MapVm.OnKeyReleased}"
                         PointerMoved="{x:Bind Vm.OnPointerMoved}"
                         PointerPressed="{x:Bind Vm.OnPointerPressed}"
                         PointerReleased="{x:Bind Vm.OnPointerReleased}"
                         PointerExited="{x:Bind Vm.OnPointerExited}" 
                         DoubleTapped="{x:Bind Vm.OnDoubleTapped}"
                         />

控件的命名空间为:
xmlns:win2D="using:Microsoft.Graphics.Canvas.UI.Xaml"

编译器报以下错误:
The name "CanvasControl" does not exist in the namespace "using:Microsoft.Graphics.Canvas.UI.Xaml".

问题在于它确实存在。事实上,程序运行良好,但是由于这个幽灵错误,XAML设计器无法运行。
更糟糕的是,自从升级到VS 2015 Update 3以来,这些幽灵错误变成了真正的错误。如果我在Debug和Release模式之间切换,现在所有的用户控件都会抛出相同的错误,而且它会阻止应用程序的构建。如果我剪切XAML并粘贴回去(没有其他更改),它就可以构建和运行。最大的问题是,我有许多地方都有用户控件,我需要为每一个控件都这样做才能使其正常工作。
如果有人对为什么会发生这种情况以及如何解决它有任何见解,我将非常感激。

win2D 的命名空间声明是什么? - IInspectable
我已经更新了原始问题,包括名称空间。 - Paul Mouchet
你尝试过以下方法吗?1.清理解决方案 2.删除项目中的binobj文件夹 3.重新打开并构建解决方案。看起来你的XAML设计师存在一些问题。如果这些方法仍然无法解决你的问题,你可以尝试修复Visual Studio并卸载/重新安装Windows SDK。 - Jay Zuo
清理解决方案、bin和obj文件可以使切换Release和Debug模式后构建成功,但这并不能消除原始的“名称“<>”不存在…”错误。这个问题困扰着团队中的每一个工作站,而我不能让每个人重建他们的机器来验证修复/卸载/重新安装是否能解决这个问题。关于XAML设计师问题的解决方案正在进行中吗? - Paul Mouchet
你能分享一个可复现的项目吗?我的电子邮件是karann[at]microsoft[period]com。 - karann - MSFT
Paul,请你在我们的讨论后更新帖子,附上解决方案。 - karann - MSFT
1个回答

2
在这种情况下,有几个问题需要描述。
与Win2D问题相关的主要问题是引用了两个冲突的DLL。第二个DLL(Microsoft.Graphics.Canvas)干扰了Win2D。当从项目中删除对该DLL的引用时,Win2D错误消失了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接