我有一个VS 2013控制台应用程序,可以加载任何解决方案(.sln)文件 - 使用Roslyn编译其中的所有项目,并从编译模型中提取API使用信息。
我现在面临这个特殊问题 - 当我从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工具和默认路径,而我从一个简单的命令行运行的东西已经改变了?
- Edit-- 这是导入
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
但是我怀疑它是否与Import语句有关。如果我从“Visual Studio 2013的开发人员命令提示符”运行控制台应用程序.exe,一切正常。
答案 0 :(得分:7)
您可以将Web应用程序项目设置为自包含,并且不需要通过向MSBuild.Microsoft.VisualStudio.Web.targets添加NuGet引用来编译Visual Studio 2015。
答案 1 :(得分:2)
我在构建服务器上遇到此问题。当我定位/tv:14.0(工具版本14.0是Roslyn Build引擎)
时我通过转到C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio然后创建像v14.0 \ WebApplications
这样的文件夹来解决它然后我使用Microsoft.WebApplication.targets(因为这是由Visual Studio 2015推出)将我的系统复制到构建服务器新文件夹。