是否有任何解决方案Visual Studio 2013没有正确生成ASPX页面的.designer文件?

时间:2014-03-12 21:25:53

标签: asp.net visual-studio

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

保存文件或构建项目时会出现错误,并且会出现如下错误:

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

有时,会显示有效的,以前正在运行的代码/标记的其他错误消息;错误如:

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

这是使用Visual Studio 2013(Premium),使用" Web应用程序项目"使用.NET 4.5框架键入项目。某些项目最初是在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和网页,并找到了一些建议但没有找到解决方案,而且我也看到这个问题已经多次报告给微软,可以追溯到几年前。

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

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

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

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

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

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

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

是否有人对此desinger文件问题或任何其他疑难解答方法的潜在原因或修复有任何建议?

4 个答案:

答案 0 :(得分:5)

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

使用此选项UNCHECKED似乎已解决了我们团队迄今为止的问题(过去几天)。

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

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

还有人建议删除项目目录中的.suo(解决方案用户选项)文件可以解决问题,但这似乎只是暂时的。

答案 1 :(得分: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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我最后一次在不同的开发环境中经常遇到这个问题。我设法在一个案例中通过启动组件服务 - > DCOM配置而不使用缓存清除技术来解决它。当我这样做时,我被提示注册一个丢失的密钥。 (并没有完全发现它,但与EventManagement有关)。点击确定并推出视觉工作室...嘿presto ...回到商业中。希望这个建议可能会抓住一些案例。