4

更新:

只是一个更新,因为我们终于修复了我们的许可并在我们的构建代理上安装了 Visual Studio 2012。一旦我们完成安装,一切都完美无缺。

谢谢大家的回答和帮助。我接受的答案将此选项列为第四个尝试,我们确实尝试了其他所有方法,这就是它构建的全部。

当我尝试在我的 Windows Server 2008 R2 构建机器上构建 WCF 库项目时提供帮助,我收到此错误:

C:\BuildAgent\work\e8ce1d5b0f26c529\Configuration\ECUWeb\EcuWeb.ServiceLib\EcuWeb.ServiceLib.csproj(90, 3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WCF\Microsoft.VisualStudio.ServiceModel.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

项目配置\ECUWeb\EcuWeb.ServiceLib\EcuWeb.ServiceLib.csproj 失败。

构建代理安装了 Visual Studio 2010 和 .net4.5,但是我在我的机器上使用 VS2012。有我可以安装的 SDK 还是必须安装 VS2012?这也是一个仅在解决方案文件上运行 MSBuild 的 teamcity 任务。

4

2 回答 2

4

当CI环境没有“必需品”时,我找到了一些解决方案:

一:安装SDK(如前所述)。

二:每隔一段时间,您可以从安装了 VS20xx 的机器上手动复制“.targets”文件。这实际上是一个很好的方案,因为它很容易解决。

此处的示例: 在构建服务器上未找到 Microsoft.WebApplication.targets。你的解决方案是什么?

三:类似于 SDK 安装的东西。这里或那里有一个额外的包裹。这是一个例子:

使用数据库项目在 tfsbuild 中构建错误

四:每隔一段时间,微软就会搞砸你。您唯一的办法是安装完整的 Visual Studio。我讨厌,因为 CI 机器不应该需要 Visual Studio。

于 2013-02-20T16:08:42.117 回答
3

要检查的一件事 - 确定是否需要引用。

我有一个 2012 解决方案,其中包含一个 .csproj 文件,其中包含对 Microsoft.VisualStudio.ServiceModel.targets 的引用。我正在从 VS 2012 升级到 VS 2013。我有两台机器,我将它们称为 DESKTOP 和 LAPTOP。DESKTOP 上面有 VS 2012,我也安装了 VS 2013。因此存在以下文件,我能够编译我的解决方案:

$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\WCF\Microsoft.VisualStudio.ServiceModel.targets

在笔记本电脑上,我没有 VS 2012。我从头开始安装 2013,并试图让我的解决方案(在 TFS 源代码控制下)工作。我收到了上述错误(VisualStudio.ServiceModel.targets 不存在......验证声明是否正确)。

事实证明,我什至不需要这个文件——在 DESKTOP 上的 .csproj 文件中,我只是注释掉了该元素,并且解决方案重新编译成功(包括通过单元测试)。所以我从 DESKTOP 将它签入到 TFS,在 LAPTOP 上获得了最新代码,并且它也在那里编译(并通过了单元测试):

<!-- Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\WCF\Microsoft.VisualStudio.ServiceModel.targets" / -->
于 2014-01-08T23:20:55.330 回答