【发布时间】:2014-07-18 11:42:40
【问题描述】:
我正在尝试使用 SpecsFor MVC 进行自动化验收测试,我注意到它没有在 Visual Studio 2012 上正确构建/发布项目,因此 IIS Express 没有运行,以“无法显示页面”消息结尾在整个自动化验收测试中。
为了让您完成我的所有测试以使其正常工作,最初,在尝试运行自动化测试时,我在运行时收到“构建失败”消息
_host = new SpecsForIntegrationHost(config);
_host.Start();
。加载 SpecsFor MVC 源代码后,我注意到错误是因为 MSBuild.exe 进程失败并且输出消息正在写入 Console.Output。检查输出后,我注意到错误是找不到Microsoft.WebApplication.targets。经过一番研究,我发现了以下内容:
-
External VS2013 build error "error MSB4019: The imported project <path> was not found"
- 得票最多的人谈到从
.csproj中删除<PropertyGroup>节点,删除它后,MSBuild.exe没有以错误代码退出,因为它只有警告,这仍然导致项目不正确构建和发布。在这种情况下,SpecsFor MVC 将此方案视为成功并继续启动 IIS Express,但由于项目未成功构建,验收测试导致另一个Page Cannot Be Displayed消息,因为 IIS Express 未正确运行。
- 得票最多的人谈到从
- 经过进一步研究,我发现v11.0\WebApplications\Microsoft.WebApplication.targets was not found when file actually references v10 概述了VS 2012 在
C:\Program Files (x86)\MSBuild\12.0\Bin中有一个新的不同的MSBuild.exe 文件。- 现在的问题是在 SpecsFor MVC
IISTestRunnerAction.PublishSite()方法中,MSBuild.exe的路径正在通过System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()在我的情况下输出C:\Windows\Microsoft.NET\Framework64\v4.0.30319\。手动将其更改为C:\Program Files (x86)\MSBuild\12.0\Bin解决了问题,项目已成功构建和发布。
- 现在的问题是在 SpecsFor MVC
我的最后一个问题是:有没有一种方法可以更改 System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() 的值,这样我就不需要更新 SpecsFor MVC 项目的源代码了?
提前感谢您的帮助!
【问题讨论】:
-
我认为覆盖 SpecsFor MVC 如何找到 MSBuild 是最好的解决方案。我可以公开一种明确设置路径的方法。你能在 Github 上打开一个错误报告或功能请求,以便我记得查看这个吗?
-
@MattHoneycutt - 在github.com/MattHoneycutt/SpecsFor/issues/41 上报告的问题 - 非常感谢您的帮助! :)
标签: c# asp.net-mvc visual-studio-2012 msbuild acceptance-testing