【发布时间】: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