TFS构建失败,但Visual Studio可以工作。

3
我已经创建了一个新的构建定义,大部分选项都保持默认。目前我只是在玩耍。
问题是,当我在Visual Studio 2013中以发布模式构建我的项目时,一切都很好,没有错误。但是当TFS进行构建时,我遇到了一些错误:
(我不得不将其从我的语言翻译成英语,对此表示抱歉)
TemplateService.cs (80): Core.Infrastructure.Objects.PredefinedTemplate does not contain a definition for TemplateId and there is no extentionmethod TemplateId found gevonden *(something with first argument)* of the type Infrastructure.Objects.PredefinedTemplate is being accepted (possibly missing a user instruction or an assmbly-reference)

我已经完成的工作:

  • 将引用的DLL的复制本地设置为false然后再设置为true,如一些网站所述
  • 检查构建定义是否清理了工作区(是的)
  • 在代码中添加对象的程序集名称。例如: PredifinedTemplate变为Core.Infrastructure.Objects.PredefinedTemplate

无论我做什么,都会出现这些错误!有人知道发生了什么吗?

更新:

正如James Reed所述,我已经将引用的项目放置在NuGet包中。最终我不得不将两个项目放置在NuGet-packages中。TFS上的构建现在可以正常工作,甚至可以部署到服务器。

使用NuGet并不是我的首选,因为它的调试功能。但对于这两个仅包含对象和数据实体的项目,这应该不是问题。

1个回答

3

你缺少一个程序集引用,也就是包含TemplateId定义的dll在构建服务器上不可用。

如果这个定义在同一解决方案中的一个项目中,则项目引用存在问题,请尝试删除并重新创建引用。

如果这是一个二进制引用,则有三种选择:

  1. 将该项目添加到解决方案中并使用项目引用。
  2. 将二进制文件检入源代码控制(不推荐)。
  3. 使用 nuget 管理您的引用。

我在 Visual Studio 2013 上的构建服务器中打开了解决方案并尝试构建它:完美运行,没有错误。包含 TemplateId 定义的项目在解决方案中,并且是一个项目引用(您的第一点)。它曾经是 NuGet,但由于可行的环境,我直接引用而不是通过 NuGet 引用。将再次尝试使用 NuGet。 - user1140479
请查看我在原帖中的更改。 - user1140479

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接