【问题标题】:Is there any solution to Visual Studio 2013 not correctly generating .designer files for ASPX pages?Visual Studio 2013 没有为 ASPX 页面正确生成 .designer 文件有什么解决方案吗?
【发布时间】:2015-03-13 01:51:05
【问题描述】:

我们越来越频繁地遇到无法在 Web 项目中生成设计器文件的 Visual Studio 错误。在我们的几个 ASP.NET 项目中,这个问题已经出现了几个月。

保存文件或构建项目时会发生错误,并且是以下错误的变体:

  • 为 [filename] 生成设计器文件失败:错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回。
  • 为 [filename] 生成设计器文件失败:未指定 错误(HRESULT 异常:0x80004005 (E_FAIL))
  • 为 [filename] 生成设计器文件失败:条目带有 相同的密钥已经存在。
  • 为 [filename] 生成设计器文件失败:值不能 为空。

有时,会针对有效的、先前工作的代码/标记显示其他错误消息;错误如:

  • 当前上下文中不存在名称“Eval”

这适用于 Visual Studio 2013 (Premium),以及使用 .NET 4.5 框架的“Web 应用程序项目”类型的项目。其中一些项目最初是在 Visual Studio 2010 或 Visual Studio 2012 中创建的,但其中一个项目是在 Visual Studio 2013 中创建的新项目。

我们安装了一些 Visual Studio 扩展,例如“Web Essentials 2013”​​,但我尝试禁用所有已安装的 Visual Studio 扩展,但仍然出现相同的设计器文件错误。我们没有安装 Resharper 或 CodeRush。我们还在为 ASP.NET 使用第三方组件包 (DevExpress)。我们将 IIS Express 用于本地开发 Web 服务器。

已为 Visual Studio、操作系统 (Windows 8.1)、.NET、Visual Studio 扩展和 DevExpress 安装了所有可用更新(包括 Visual Studio 2013 的更新 1)。

我已经在 StackOverflow 和网络上搜索过这个问题,并找到了一些建议但没有解决方案,而且我还看到这个问题已经多次向 Microsoft 报告,可以追溯到几年前。

许多迹象表明生成设计器文件的问题是由某些无效语法(在 ASPX 文件中)或同一范围内具有相同 ID 的多个元素或命名空间或类名冲突等引起的。我有尽我所能在我们的项目中搜索此类问题,但没有找到。

我在 Sourceforge 上找到了 Redesigner 项目(非常感谢作者),我尝试使用它来验证设计器文件,但不幸的是它无法处理 DevExpress 组件(它报告 DevExpress 元素正在使用无效的子元素标记对 DevExpress 有效且正确时的标记)。

我还尝试清除工作站上的 Visual Studio 开发缓存(即,删除文件夹“\Temp\IISExpress”、“\Temp\Temporary ASP.NET Files”和“\Microsoft\WebsiteCache”中的所有内容) %localappdata% 文件夹中的文件夹,重新启动并重新启动 Visual Studio。

我还找到了一个网站,该网站解释了如何为 Visual Studio 打开额外的日志记录,以帮助跟踪设计器文件生成问题。对于 Visual Studio 2013,这需要添加一个键 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\WebApplicationProjects\Debug,然后在该键下为“Enabled”(设置为 1)、“LogFieldGeneratorFailures”(设置为 1)和“LogFile”(设置为您有权写入的路径和文件名)。

当我添加这个键时,Visual Studio 2013 确实写入了调试日志文件,但它只包含类似于上述错误消息的错误消息以及一个小的堆栈跟踪以及设计器文件所针对的 ASPX 文件的全部内容无法生成(没有明显的迹象表明 ASPX 页面中可能存在错误或无效语法)。

我想我已经尝试了本主题中所有建议的方法: How do you force Visual Studio to regenerate the .designer files for aspx/ascx files?

这些都不适合我。在这些项目的 Visual Studio 2013 中,我无法使用 ASPX 文件的“转换为 Web 应用程序”选项。

是否有人对此设计文件问题的潜在原因或修复方法或任何其他故障排除方法有任何建议?

【问题讨论】:

    标签: asp.net visual-studio


    【解决方案1】:

    我们发现此问题的最新发现是它与 Visual Studio 中的“源代码管理”选项有关“在打开解决方案或项目时获取所有内容”。

    到目前为止(过去几天),取消选中此选项似乎已经解决了我们团队的问题。

    Microsoft Connect 上也发布了这个问题:http://connect.microsoft.com/VisualStudio/feedback/details/760443/visual-studio-2012-ide-loses-intellisense-and-reference-resolution

    上面链接中的 cmets 表明该错误是由从源代码管理中异步检索文件或打开 Visual Studio 时异步解决方案加载引起的。解决问题的建议选择是关闭异步解决方案加载或禁用“打开所有内容”选项。

    也有建议删除项目目录下的.suo(Solution User Options)文件可以解决问题,但这似乎只是暂时的。

    【讨论】:

    • 我想确认一下 - 是的,删除两个工作站的这个设置已经解决了这个问题。非常感谢!
    【解决方案2】:

    我发现唯一可行的解​​决方案是删除 Visual Studio 缓存 @C:\Users\\AppData\Local\Microsoft\VisualStudio,然后使用 /resetuserdata 开关运行 Visual Studio。这是一个可怕的解决方案,它会删除所有本地设置并重置 Visual Studio。

    (您可以尝试在手术前后导出和导入您的设置。) 链接 (删除2013缓存) http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/09/15/if-you-have-problems-with-tfs-or-visual-studio-flush-the-user-cache-or-not.aspx

    (修复2010年的错误,略有不同)http://rathodkrunal.blogspot.com/2011/11/visual-studio-2010-error-hresult-efail.html

    如果你想让 MS 修复它,它也是一个打开的项目。

    https://connect.microsoft.com/VisualStudio/feedback/details/799832/constant-call-to-com-component-fails#tabs

    【讨论】:

    • 这在 VS2013 中对我有用。我的问题是,无论我在 .aspx 文件中做了什么更改,.designer.cs 都没有更新。虽然看起来 /resetuserdata 自己清理了缓存。
    • 迈克,谢谢。这是一个有点破坏性的解决方案,但我试过了,它确实对我有用。这本质上是 Visual Studio 的“重置”,之后需要重新安装任何扩展,或者再次设置您的首选项和环境(或保存和恢复设置)。此外,在此重置后,Visual Studio 的最近项目列表等项目为空。
    • 不幸的是,我们小组中的其他 2 位开发人员尝试了相同的解决方法,但对他们不起作用。重置和重新启动后,他们在再次打开相同的 VS2013 项目并编辑 ASPX 页面后立即遇到设计器文件故障。
    【解决方案3】:

    在帮助一位同事时遇到了一个非常相似的问题。该项目已从 2010 年到 2013 年进行了转换,并为大多数开发人员工作。为了“解决”这个问题,我们让他关闭解决方案,然后删除解决方案级别的所有源代码控制文件 (vsssc)。重新打开解决方案后,一切都很好。

    【讨论】:

      【解决方案4】:

      最近一段时间,我在不同的开发环境中一直遇到这个问题。通过启动组件服务-> DCOM Config,我设法在不使用缓存清除技术的情况下解决了这个问题。当我这样做时,系统提示我注册一个丢失的密钥。 (没有完全抓住它,但与 EventManagement 相关)。单击“确定”并启动视觉工作室......嘿presto......重新开始工作。希望这个建议可以解决一些案例。

      【讨论】:

        猜你喜欢
        • 2015-11-28
        • 1970-01-01
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多