20

我在 CI 服务器上收到此错误:

错误 MSB4019:未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WCF\Microsoft.VisualStudio.ServiceModel.targets”

我的 WCF 服务库项目似乎引用了该文件,但 VisualStudio 文件夹Program Files\MSBuild\Microsoft不包含 WCF 文件夹。

我想我需要在服务器上安装一些东西。

我需要安装什么?

4

7 回答 7

29

好吧,这毁了我的早晨,但我们不要让它毁了其他人的。我在其他任何地方都找不到这些信息。您需要使用 VS Pro 2012 从开发机器中复制一些文件。

正如 aphexddb 所提到的,您需要将一些目标复制C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WCF到 CI 服务器上的同一位置。

然后这引用了一个名为Microsoft.VisualStudio.ServiceModel.Core. 您可以在 GAC 或 IDE 目录中找到此程序集C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE

将此复制到您的 CI 服务器并执行gacutil.exe -i Microsoft.VisualStudio.ServiceModel.Core.dll

这足以为我修复它。

这不是我第一次在我的 CI 服务器中发现我的 VS express 安装中缺少目标。我不禁觉得我可以从某个地方下载某种包来填充所有这些内容。有人知道这样的事情吗?如果没有,也许我们应该创建一个。

于 2013-06-24T09:35:05.500 回答
16

在 vs2019 上仍然可以发生

错误 MSB4019:找不到导入的项目“C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\WCF\Microsoft.VisualStudio.ServiceModel.targets”。确认声明中的路径正确,并且该文件存在于磁盘上。

默认情况下,WCF 不作为“ASP.NET 和 Web 开发”工作负载的一部分安装。为了解决这个问题,

在 Visual Studio 安装程序 > 修改 > 单个组件选项卡上,搜索 wcf,检查,修改 - .targets 文件现在已安装,msbuild 构建正常。

MSBuild 自动检测:使用来自“C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\bin”的 msbuild 版本“16.3.2.50909”

于 2019-11-14T09:01:10.067 回答
7

我在使用 Visual Studio 2017 时遇到了这个问题,对我来说,解决方案是修改我的 Visual Studio 安装以包含 Windows Communication Foundation 组件。

于 2017-03-09T20:32:12.693 回答
5

将此文件提取 到文件夹中

C:\Program 文件 (x86)\MSBuild\Microsoft\VisualStudio\WCF

文件名为“Microsoft.VisualStudio.ServiceModel.targets”

于 2015-03-05T18:54:44.913 回答
1

遇到同样的问题。做了以下解决:

  1. 安装了 Microsoft Web 平台安装程序

  2. 将目录“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WCF”从带有 Visual Studio 2012 的开发笔记本电脑复制到构建服务器

于 2013-03-01T20:41:23.130 回答
1

我遇到了同样的错误——我的问题是 MS 修改了 MSBuild 在构建过程模板中查找 VS 版本的方式。

确保使用正确的构建过程模板。如果使用 TFS2013 和 VS2013 使用 TfvcTemplate.12.xaml

于 2015-04-23T18:29:03.380 回答
1

我遇到了同样的错误。就我而言,问题在于我的 Visual Studio 2008 项目没有正确升级,可能是由于我的源代码管理将文件标记为“只读”。为了修复它,我在 Visual Studio 2015 中加载了解决方案,并检查了所有内容。

.csproj 文件中的特定行从

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\WCF\Microsoft.VisualStudio.ServiceModel.targets" />

<Import Project="$(WcfServiceModelTargetPath)\Microsoft.VisualStudio.ServiceModel.targets" />
于 2017-01-12T23:10:01.050 回答