我们越来越频繁地遇到无法在Web项目中生成设计器文件的Visual Studio错误.在我们的几个ASP.NET项目中,这个问题已经发生了几个月.
保存文件或构建项目时会发生错误,并且会出现如下错误:
为[filename]生成设计器文件失败:错误HRESULT E_FAIL已从调用COM组件返回.
为[filename]生成设计器文件失败:未指定错误(HRESULT异常:0x80004005(E_FAIL))
为[filename]生成设计器文件失败:已存在具有相同密钥的条目.
为[filename]生成设计器文件失败:值不能为null.
有时,会显示有效的,以前正在运行的代码/标记的其他错误消息; 错误如:
当前上下文中不存在名称"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和网页,并且找到了一些建议但没有解决方案,而且我也看到这个问题已经多次报告给微软,可以追溯到几年前.
许多迹象表明,生成设计器文件的问题是由一些无效的语法(在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页面中可能存在错误或语法无效的位置).
我想我已经在本主题中尝试了基本上所有建议的方法: 如何强制Visual Studio重新生成aspx/ascx文件的.designer文件?
这些都不适合我.在这些项目中,Visual Studio 2013中无法使用ASPX文件的"转换为Web应用程序"选项.
有没有人对此desinger文件问题或任何其他故障排除方法的潜在原因或修复有任何建议?
我们在此问题中发现的最新信息是,它与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(解决方案用户选项)文件可以解决问题,但这似乎只是暂时的.