【发布时间】:2014-12-19 13:44:24
【问题描述】:
我有一个 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 工具,而我从简单的命令行运行东西时的默认路径发生了变化?
--编辑-- 这是导入
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
但是我怀疑这与 Import 语句本身有关。如果我从“Visual Studio 2013 开发人员命令提示符”运行控制台应用程序 .exe,一切都会再次正常运行。
【问题讨论】:
-
向我们展示您项目文件中的
<Import>s。 -
我遇到了同样的问题。你曾经解决过这个问题吗?
-
不是一个真正的解决方案,但正如您提到的,它可以在 VS 命令提示符下工作。作为一种解决方法,我创建了一个批处理文件,首先调用“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat”,然后应用程序运行良好。