Wpf Visual studio 2012 XAML设计器无效标记

Wpf Visual studio 2012 XAML设计器无效标记,wpf,xaml,user-controls,visual-studio-2012,designer,Wpf,Xaml,User Controls,Visual Studio 2012,Designer,我有一个包含用户控件的项目。出于某种原因,使用上述控件的窗口的设计视图已停止运行,并坚持使用“无效标记”-给出的错误是usercontrols的某些成员无法识别或无法访问。然而,该项目编译和执行得很好。将其加载到VS2010中,编辑器工作正常,没有任何错误-即使在Expression Blend中也是如此 到目前为止,我已经尝试了典型的清理、重建、手动删除obj中的内容、更新.xaml并重建、尝试使用/resetuserdata和/resetsettings启动VS2012—问题仍然存在。我甚至

我有一个包含用户控件的项目。出于某种原因,使用上述控件的窗口的设计视图已停止运行,并坚持使用“无效标记”-给出的错误是usercontrols的某些成员无法识别或无法访问。然而,该项目编译和执行得很好。将其加载到VS2010中,编辑器工作正常,没有任何错误-即使在Expression Blend中也是如此

到目前为止,我已经尝试了典型的清理、重建、手动删除obj中的内容、更新.xaml并重建、尝试使用/resetuserdata和/resetsettings启动VS2012—问题仍然存在。我甚至回到了我的项目的一个更老的版本,当设计师工作的很好,没有骰子-同样的错误。我还尝试以新的windows用户身份启动VS2012,以避免任何可能会延迟的存储应用程序数据,这也是一个禁忌


是否有其他类型的缓存或我可以手动删除的内容?

可能是您添加了不受支持的用户控件,或者您可能在用户控件中添加了错误的父子关系。尝试删除可疑的用户控件并重建项目。它必须解决这个问题。
Cheers

我也遇到了同样的问题(程序编译和运行正常,XAML designer报告无效标记),问题是我不小心更改了解决方案中某个项目的程序集名称,我重新更改了它,我的XAML designer恢复了活力,因此请检查解决方案中每个项目的属性页,并确保程序集名称与您期望的一致。

我不确定这是否能解决所有问题,但这对我来说是有效的(一直如此)

我有VS2012,在IDE中使用Blend designer,构建一个x64应用程序,当我定义一个新的ICommand并添加命令属性时,我会得到设计器在x64错误中不受支持(我忘记了确切的警告)。如果切换到x86,无论我在x64中重建了多少次,我都会收到无效的XAML标记错误,抱怨ICommand无法识别或无法访问。如果我切换到x86,build,然后切换回x64,瞧,设计器没有问题


现在我想起了VS2008和Blend版本3和4的类似问题。从我在其他帖子中读到的内容来看,使用任何CPU都可能解决这个问题。

你需要重新:编码你的xaml,在ide中打开有缺陷的文件->另存为->保存编码(选择UTF8)

我认为你的项目没有问题,但在VS 2012中是问题。尝试安装VS 2012的最新更新(更新2),并检查此项


在使用带有自定义(无参数)构造函数的控件时,我遇到了相同的问题

检查自定义/用户控件构造函数是否不需要WPF设计器没有的任何数据。一个快速的等待,以检查周围是一个尝试捕捉,清洁,重建整个事情,然后检查问题是否解决


如果不是,请尝试注释除默认WPF Init cod、clean、rebuild和test之外的所有内容。

在VS2012中,ShadowCache(用于渲染设计器)与XAML不同步也存在问题。我刚刚发现了这一点,因为我在派生用户控件中遇到了以下错误:

本地属性XXXX只能应用于从YYYY派生的类型

卷影缓存位于用户配置文件目录中:

应用程序数据\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache


您可以删除其中的所有内容并重新启动VS2012。在那之后,情况变得更好了(至少有一段时间!)

在Visual Studio 2013中,这是我在Windows Phone项目中使用的一种变通方法。我猜这是在为WPF编写XAML时使用的同一个设计器


我尝试过删除阴影缓存,但它在我第一次启动Visual Studio时才起作用,上述解决方法是唯一对我有帮助的。

删除阴影缓存中的所有内容。

C:\Users\username\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache\

复制可粘贴路径 只需将其中一个路径复制/粘贴到Windows资源管理器中<代码>%LOCALAPPDATA%是一个值,当输入到资源管理器中时,它将被相应的值替换(也在命令提示符下工作)

VS2012 %LOCALAPPDATA%\Microsoft\VisualStudio\11.0\Designer\ShadowCache\

VS2013 %LOCALAPPDATA%\Microsoft\VisualStudio\12.0\Designer\ShadowCache\

VS2015 %LOCALAPPDATA%\Microsoft\VisualStudio\14.0\Designer\ShadowCache\

ASP.NET 如果您开发ASP.NET,也可以删除

%LOCALAPPDATA%\Microsoft\WebsiteCache

%LOCALAPPDATA%\Temp\VWDWebCache


有点晚了,但需要考虑其他一些问题:如果您的无参数构造函数正在执行其他工作,例如获取由于您在设计器中而不存在的数据,请在构造函数的开头添加以下内容:

if (DesignerProperties.GetIsInDesignMode(new System.Windows.DependencyObject())) return;
// Do work.
这是必要的,因为设计器确实执行了无参数构造函数,该构造函数在设计模式下可能会失败,并给您提供无效的标记


而且,不管其他人怎么说,这不是VS或WPF XAML解析器错误。今天我在使用VS 2015、.Net 4.5.2时遇到了这个问题。

我对VS 2015和2017也有同样的问题,但前提是我只为x64编译。 在这里,如果我将编译目标(projectproperties-Build,德语中称为Plattformziel)临时更改为x86,编译为Project并切换回x64,它会有所帮助


也许这是其他人的“解决方案”。

您最近是否更新了silverlight。在控制面板中,检查Silverlight、Silverlight Developer、Silverlight Toolkit的所有版本是否相同。与SL5存在不兼容问题。希望有帮助!不,我没有任何与silverlight相关的变化发生。我追踪到了美国的定制房产