2014-12-19 44 views
6

我有一個加載任何解決方案(.sln)文件的VS 2013控制檯應用程序 - 使用Roslyn編譯其中的所有項目,並從編譯模型中提取API使用信息。MSBuildWorkspace.OpenSolutionAsync在Visual Studio/v14.0中查找目標

我現在面臨這個奇怪的問題 - 當我從Visual Studio 2013(使用Ctrl-F5或F5)運行應用程序時,一切正常。我能夠編譯東西並提取所有信息。 然而,當我打開命令行(CMD),並嘗試從我收到以下錯誤運行此控制檯應用程序:

Unhandled Exception: System.AggregateException: One or more errors occurred. ---> Microsoft.Build.Exceptions.InvalidProjectFileException: The imported project " 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Impor 
When I run 

注意v14.0那裏。爲什麼MSBuildWorkspace試圖查看所需目標文件的v14.0目錄?是否因爲我安裝了用於CTP的MSBuild工具和默認路徑,而從簡單命令行運行的東西已更改?

- 編輯 - 這裏是進口

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 

不過,我懷疑這是用import語句這樣做。如果我從「Visual Studio 2013的開發人員命令提示符」運行控制檯應用程序.exe,一切都可以正常工作。

+0

向我們展示您的項目文件中的。 – SLaks

+0

我遇到了同樣的問題。你能解決這個問題嗎? – ChaseMedallion

+0

不是一個真正的解決方案,但正如你提到它從VS命令提示符工作。作爲一種解決方法,我創建了一個首先調用「C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ vcvarsall.bat」的批處理文件,然後該應用程序運行良好。 –

回答

2

我在構建服務器上遇到了這個問題。當我針對/tv:14.0(工具版本14.0是Roslyn Build引擎)

我解決了它通過出去到C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio然後創建文件夾像v14.0 \ WebApplications

然後,我用Microsoft.WebApplication.targets(因爲這是由Visual Studio 2015發佈的)出去到我的系統中,並將該文件複製到構建服務器的新文件夾。

+0

/p:VisualStudioVersion=11.0工作,/p:VisualStudioVersion=12.0失敗,所以我做了一個v12.0 \ WebApplications目錄從v11.0 \ WebApplications複製它的內容,並且構建工作(不確定這實際上在做什麼,但它工作) – Aligma

+0

您的構建服務器上是否安裝了Visual Studio 2012?版本12實際上是Visual Studio 2013. – DoomVroom

6

您可以使您的Web應用程序項目自成一體,並且不需要通過將NuGet引用添加到MSBuild.Microsoft.VisualStudio.Web.targets來編譯Visual Studio 2015。

+0

從開發機器複製/粘貼不是一個好的解決方案,這是一個很好的解決方案。 – silencedmessage

+0

我添加了這個參考,但現在一些其他第三方dll被列爲「未找到」或「失蹤」。建立在VS2015工作正常,但建設服務器抱怨這些第三方引用丟失。 Perplexed