我試圖使用SpecsFor MVC進行自動驗收測試,我注意到它不是在Visual Studio 2012上正確構建/發佈項目,因此IIS Express沒有運行,結束於整個自動驗收測試中的「頁面無法顯示」信息。SpecsFor MVC/MSBuild.exe不在Visual Studio 2012中正確構建/發佈項目
帶你通過了所有的考試得到這個工作,首先,嘗試運行自動化測試時,我得到一個運行
_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
其取出後,將MSBuild.exe
沒有錯誤代碼爲退出<PropertyGroup>
節點它只有警告仍然導致項目未被正確發佈&。 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()
方法中,正在通過System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
這在我的情況下輸出C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
加載MSBuild.exe
的路徑。將此手動更改爲C:\Program Files (x86)\MSBuild\12.0\Bin
解決了該問題,並且成功發佈了構建&的項目。
- 現在的問題是,SpecsFor MVC
我的最後一個問題是:有沒有一種方法,其中一個可以改變的System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
值,這樣我就不需要更新SpecsFor MVC項目的來源是什麼?
在此先感謝您的幫助!
我認爲首要的MSBuild如何SpecsFor MVC認定爲這裏最好的解決方案。我可以公開一種明確設置路徑的方法。你可以在Github上打開一個bug報告或功能請求,所以我可以記得查看這個嗎? –
@MattHoneycutt - 發佈在https://github.com/MattHoneycutt/SpecsFor/issues/41上的問題 - 非常感謝您的幫助! :) –