在CI机器上构建WCF库

时间:2013-02-19 15:55:56

标签: c# visual-studio-2010 wcf msbuild visual-studio-2012

更新:

只是更新,因为我们最终修复了我们的许可并在我们的构建代理上安装了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。

2 个答案:

答案 0 :(得分:4)

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

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

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

此处示例: Microsoft.WebApplication.targets was not found, on the build server. What's your solution?

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

Build error in tfsbuild with database project

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

答案 1 :(得分:3)

要检查的一件事 - 确定是否需要参考。

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

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

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

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

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