我有一个包含usercontrols的项目。由于某种原因,使用所述控件的窗口的设计视图已停止运行并坚持“无效标记” - 给出的错误是用户控件的某些成员无法识别或无法访问。然而,该项目编译并执行得很好。在VS2010中加载它,编辑器工作正常,没有任何错误 - 即使在Expression Blend中也是如此。
到目前为止,我已经尝试了典型的清理,重建,手动删除obj中的内容,更新.xaml和重建,尝试使用/ resetuserdata和/ resetsettings启动VS2012 - 问题仍然存在。我甚至回到了我的项目的更旧版本,当设计师工作得很好,没有骰子 - 同样的错误。我还尝试将VS2012作为一个新的Windows用户启动,以避免任何存储的appdata可能会挥之不去,再一次不行。
是否有其他类型的缓存或我可以手动删除的东西?
答案 0 :(得分:18)
ShadowCache(用于渲染设计器)与VS2012中的XAML不同步也存在问题。我刚刚发现了这一点,因为我在使用派生用户控件时出现以下错误的时间非常糟糕:
本地属性XXXX只能应用于派生自YYYYY的类型。
影子缓存位于您的用户个人资料目录中:
app data \ Local \ Microsoft \ VisualStudio \ 11.0 \ Designer \ ShadowCache
您可以删除其中的所有内容并重新启动VS2012。在那之后,事情变得更好(至少一段时间!)
答案 1 :(得分:10)
删除 ShadowCache
中的所有内容C:\ Users \用户名\应用程序数据\本地\微软\ VisualStudio的\ 11.0 \设计\ ShadowCache \
只需将其中一个路径复制/粘贴到Windows资源管理器中即可。 %LOCALAPPDATA%
是Windows Environment Variable,当输入资源管理器时,它将替换为相应的值(也适用于命令提示符)
<强>%LOCALAPPDATA%强> \微软\ VisualStudio的\ 11.0 \设计\ ShadowCache \
<强>%LOCALAPPDATA%强> \微软\ VisualStudio的\ 12.0 \设计\ ShadowCache \
<强>%LOCALAPPDATA%强> \微软\ VisualStudio的\ 14.0 \设计\ ShadowCache \
如果你开发ASP.NET也删除
%LOCALAPPDATA%\微软\ WebsiteCache
%LOCALAPPDATA%\ TEMP \ VWDWebCache
答案 2 :(得分:4)
我不确定这会解决所有情况,但这对我有用(现在一直都是这样)。
我有VS2012,在IDE中使用Blend设计器,构建一个x64应用程序,当我定义一个新的ICommand并添加Command属性时,我会得到设计器不支持x64错误(我忘了确切警告)。如果我切换到x86,无论我在x64中重建了多少次,我都会收到无效的XAML标记错误,抱怨ICommand无法识别或无法访问。如果我切换到x86,构建,然后切换回x64,瞧,不是设计师的问题。
现在我回想起VS2008和Blend版本3和4的类似问题。从我在其他帖子中看到的内容,使用Any CPU也可以解决问题。
答案 3 :(得分:1)
可能是您添加了不受支持的用户控件,或者您可能在用户控件中添加了一些错误的父子关系。尝试删除可疑的用户控件并重建项目。它必须解决这个问题。 干杯
答案 4 :(得分:1)
使用带有自定义(无参数)构造函数的控件时,我遇到了同样的问题。
检查自定义/用户控件构造函数是否不需要WPF设计器没有的任何数据。快速等待检查是围绕整个事情,尝试捕获,清理,重建,然后检查问题是否是解决方案。
如果不是,请尝试注释除默认WPF Init cod之外的所有内容,清理,重建并测试它。
答案 5 :(得分:1)
在Visual Studio 2013中,这是我用于Windows Phone项目http://danielhindrikes.se/visual-studio/workaround-for-invalid-markup-problems-when-developing-for-windows-phone/的解决方法。我想这是在为WPF编写XAML时使用的设计器。
尝试删除Shadow Cache但是我第一次启动Visual Studio时工作正常,上面的解决方法是帮助我的唯一方法。
答案 6 :(得分:1)
有点晚了,但需要考虑的其他事项:如果您的无参数构造函数正在执行其他工作,例如因为您在设计器中而获取不存在的数据,请在构造函数的开头添加:< / p>
if (DesignerProperties.GetIsInDesignMode(new System.Windows.DependencyObject())) return;
// Do work.
这是必要的,因为设计人员会执行你的无参数构造函数,它可能在设计模式下失败并给你无效的标记。
而且,无论其他人在说什么,这都不是VS或WPF XAML Parser的错误。我今天使用VS 2015,.Net 4.5.2遇到了这个问题。
答案 7 :(得分:0)
我遇到了同样的问题(程序编译和运行正常,XAML设计师报告无效标记),问题是我不小心改变了我的解决方案中的一个项目的程序集名称,我将其更改回来和我的XAML设计师重新焕发活力,因此请检查解决方案中每个项目的“属性”页面,并确保程序集名称符合您的预期。
答案 8 :(得分:0)
你需要重新:编码你的xaml,打开ide中的错误文件 - &gt;另存为 - &gt;保存编码(选择UTF8)
答案 9 :(得分:0)
我认为您的项目没有问题,但是VS 2012中存在问题。尝试安装VS 2012的最新更新(更新2)并检查此answer。
此致
答案 10 :(得分:0)
我对VS 2015和2017有同样的问题,但仅限于我只为x64编译。 如果我将编译目标(项目属性 - 构建,德语中称为Plattformziel)暂时更改为x86,编译为项目并切换回x64,这会有所帮助。
也许这是一个&#34;解决方案&#34;对于其他任何人。