【问题标题】:MSBuildWorkspace.OpenSolutionAsync looking for targets in Visual Studio/v14.0MSBuildWorkspace.OpenSolutionAsync 在 Visual Studio/v14.0 中寻找目标
【发布时间】: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,一切都会再次正常运行。

【问题讨论】:

  • 向我们展示您项目文件中的&lt;Import&gt;s。
  • 我遇到了同样的问题。你曾经解决过这个问题吗?
  • 不是一个真正的解决方案,但正如您提到的,它可以在 VS 命令提示符下工作。作为一种解决方法,我创建了一个批处理文件,首先调用“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat”,然后应用程序运行良好。

标签: msbuild roslyn


【解决方案1】:

您可以通过将 NuGet 引用添加到 MSBuild.Microsoft.VisualStudio.Web.targets 来使您的 Web 应用程序项目自包含并且不需要 Visual Studio 2015 进行编译。

【讨论】:

  • 从开发机器复制/粘贴不是一个好的解决方案,这是一个很好的解决方案。
  • 我添加了这个参考,但现在其他一些第 3 方 dll 被列为“未找到”或“丢失”。在 VS2015 中构建工作正常,但构建服务器抱怨缺少这些第 3 方引用。
【解决方案2】:

我在构建服务器上遇到了这个问题。当我瞄准 /tv:14.0(工具版本 14.0,即 Roslyn 构建引擎)时

我通过转到 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio 然后创建像 v14.0\WebApplications 这样的文件夹来解决它

然后我使用 Microsoft.WebApplication.targets 进入我的系统(因为这是由 Visual Studio 2015 发布的)并将该文件复制到构建服务器的新文件夹中。

【讨论】:

  • /p:VisualStudioVersion=11.0 工作,/p:VisualStudioVersion=12.0 失败,所以我创建了一个 v12.0\WebApplications 目录,从 v11.0\WebApplications 复制其内容并且构建工作(不确定这实际上在做什么,但它有效)
  • 您的构建服务器上是否安装了 Visual Studio 2012?版本 12 实际上是 Visual Studio 2013。
猜你喜欢
  • 2016-02-29
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
相关资源
最近更新 更多