21

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

到目前为止,我已经尝试了典型的清理、重建、手动从 obj 中删除内容、更新 .xaml 和重建,尝试使用 /resetuserdata 和 /resetsettings 启动 VS2012 - 问题仍然存在。我什至回滚到我的项目的一个更旧的版本,当设计师工作得很好时,没有骰子——同样的错误。我还尝试以新的 Windows 用户身份启动 VS2012,以避免任何可能挥之不去的存储应用数据,再次失败。

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

4

11 回答 11

20

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

本地属性 XXXX 只能应用于派生自 YYYYY 的类型。

影子缓存位于您的用户配置文件目录中:

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

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

于 2013-11-01T19:42:57.247 回答
10

删除ShadowCache中的所有内容

C:\Users\用户名\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache\

可复制粘贴路径

只需将这些路径之一复制/粘贴到 Windows 资源管理器中。%LOCALAPPDATA%是一个Windows 环境变量,当它进入资源管理器时将被替换为相应的值(也适用于命令提示符

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

于 2014-04-07T16:53:13.237 回答
4

I'm not sure this will fix all cases but this is what worked for me (all the time now).

I have VS2012, using the Blend designer in the IDE, building an x64 application, when I would define a new ICommand and add the Command attribute, I would get the designer isn't supported in x64 error (I forget the exact warning). If I switch to x86, I'd get invalid XAML markup errors complaining the the ICommand wasn't recognized or was not accessible, no matter how many times I rebuilt in x64. If I switch to x86, build, then switch back to x64, voila, not problems with the designer.

Now I recall similar issues with VS2008 and Blend version 3 and 4. From what I've read in other posts, using Any CPU might also resolve the issue.

于 2013-06-14T13:07:18.070 回答
1

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

于 2012-12-02T17:25:17.567 回答
1

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

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

如果不是,请尝试注释除默认 WPF Init 代码之外的所有内容,清理、重建并测试它。

于 2013-08-23T19:13:23.307 回答
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 时工作,上面的解决方法是唯一对我有帮助的方法。

于 2014-02-03T20:47:33.433 回答
1

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

if (DesignerProperties.GetIsInDesignMode(new System.Windows.DependencyObject())) return;
// Do work.

这是必要的,因为设计器确实执行了您的无参数构造函数,这可能在设计模式下失败并给您无效标记。

而且,无论其他人怎么说,这都不是 VS 或 WPF XAML Parser 错误。我今天使用 VS 2015,.Net 4.5.2 遇到了这个问题。

于 2015-12-11T18:07:20.347 回答
0

我只是遇到了同样的问题(程序编译和运行正常,XAML 设计器报告无效标记),问题是我不小心更改了我的解决方案中一个项目的程序集名称,我改回来了,我的 XAML 设计器又跳了回来生命,所以检查解决方案中每个项目的属性页面,并确保程序集名称与您期望的一样。

于 2013-01-16T11:37:31.233 回答
0

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

问候,

于 2013-07-10T17:16:39.307 回答
0

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

于 2013-07-04T14:12:09.370 回答
0

I have the same Problem with VS 2015 and 2017 but only if I compile for x64 only. Here it helps if I change compile target (Project properties - Build, its called Plattformziel in german) temporarily to x86, compile to project and switch back to x64.

Maybe this is a "solution" for anybody else.

于 2018-04-27T08:34:58.387 回答