2013年2月5日,星期二

SharePoint / TFS 2012 ALM–更新的SharePoint CI脚本和程序集版本控制

在过去的几年中,我’我一直大力倡导SharePoint项目的持续集成(自动生成),而我’以前已经发布了一些资源来帮助人们开始使用此资源。具体来说,我有:

  • 定制的TFS构建工作流程 –这是与TFS Build一起使用的。它与我也提供的某些PowerShell脚本集成在一起,因此WSP可以作为构建的一部分自动部署。这是我的“SharePoint CI入门包”.
  • 装配版本控制工作流程活动 –这是一个可选的自定义工作流程活动,它将在组装时增加程序集的版本号 以正确的方式为SharePoint。为简化起见,我提供了一个工作流,该工作流已插入并已配置,而没有工作流。

由于Microsoft在TFS 2010和TFS 2012之间进行了一些更改,因此这些事情不会“just work” 对于TFS 2012 unfortunately. In fact, migrating a build workflow from TFS 2010 to TFS 2012 有点噩梦。但, I’ve now updated these with new releases 对于TFS 2012 因此,如果您使用这些东西,事情应该会容易一些.

不久前,有人在Twitter上向我ping要求更新,然后一些Microsoft员工联系了我。“我们可以取得您的资料的所有权,还是可以更新它?”然后上周,我在工作地点参加有关TFS 2012升级的会议(内容和代码),并且由于我们较大的SharePoint项目使用了这些内容,所以我知道我必须将优先级列表:)

在哪里找到这个东西

我在Codeplex上有两个项目:

这两个新版本均贴有标签“for TFS 2012”,并且可以在每个站点上找到说明。简单来说,你’如果要在自动版本中执行版本控制,则需要同时下载两者–如果没有,您可以只使用CI入门包,选择“no versioning” workflow in there.

发行说明

I’在Codeplex上添加了发行说明,但这里仅作总结:

  • TFS简单程序集版本控制
    • 由于TFS 2010和TFS 2012之间不兼容,因此这是一个全新的工作流程活动(具有新名称-COB.CI.Workflow.AssemblyVersioning)。如上所述,您可以将其放入自己的(自定义)TFS中构建工作流以自动对程序集进行版本控制,或使用我的CI入门包中的工作流。
    • 这已经过很好的测试,并且很可靠。
  • SharePoint CI入门包
    • 和以前一样,它包含2个工作流(带有版本控制/不带版本控制)和一组用于部署WSP等的PowerShell脚本。’如果您是现有用户,则应将2个工作流XAML文件添加到TFS中,然后编辑现有的内部定义以使用这些工作流之一。
    • 用于构建WSP的TFS / PowerShell集成已经过良好的测试。 但是,在撰写本文时,我还没有’尚未测试,包括构建中的自动化测试(单元测试/ UI测试)–在这一点上,我只想快速了解一下,以支持现有用户的所有TFS升级。

TFS 2010 / TFS 2012周围的不兼容问题

为了完整起见,我只想向您显示错误’会看到您是否升级到TFS 2012并且正在使用我的资源(即尝试在TFS 2012中使用TFS 2010工作流程的内容)。实际上,我认为如果在升级后打开任何构建工作流程,您会期望看到错误–无论您是否使用我的东西。您’会看到类似:

  • System.IO.FileNotFoundException:无法加载文件或程序集‘Microsoft.Team.Foundation.Build.Client,PublicKeyToken = b03f5f7f11d50a3a’或其依赖项之一。
  • System.IO.FileNotFoundException:无法加载文件或程序集‘Microsoft.Team.Foundation.Build.Workflow,PublicKeyToken = b03f5f7f11d50a3a’或其依赖项之一。
  • 其他各种错误消息都与版本控制有关。

_Message_S

是的,似乎许多TFS 2010构建工作流似乎都在XAML中标记了版本号。我了解这是由于VS 2010中一个不幸的错误所致,特别是Team Explorer- 此知识库文章 有更多详细信息和修补程序。但是,很可能您的工作流(像我的一样)现在已经有了它们中的版本号。所以’当然比应该的要痛苦得多。

您 have two options to make your build workflow run in TFS 2012:

上面链接的Jason Prickett帖子还具有您可能会看到的错误消息的其他变体。

如果您使用我的资源,可能会看到相关的错误消息:

再次出于完整性考虑,如果您遇到了其他一些错误,’重新使用我的资源,但是“doing it wrong”根据TFS2012。如果在升级到TFS 2012 / VS 2012后使用我的(TFS 2010)程序集版本控制活动打开工作流,可能会看到以下内容:

打开MyTFS2010BuildDefWorkflow时出错

您’如果需要,则需要修复工作流以使用最新版本的活动。

和这里’s what you’将查看您是否尝试将旧的(TFS 2010版本)程序集版本控制活动放到TFS 2012工作流程中:

将OldAssemblyToVSToolbox_Large添加时出错

结论

如果您执行自动构建,无论是否与SharePoint相关,升级到TFS 2012都会带来一些麻烦。对于使用我的资源的任何SharePoint员工,我’升级了这些软件,希望可以减轻您的痛苦。如果您遇到任何问题,请在Codeplex网站上发表评论。

2条评论:

匿名 said...

克里斯

我正在尝试为tfs 2012和SP 2013之间的持续集成设置环境。

我从这里下载了您的文件:
http://sharepointci.codeplex.com/releases

我遇到的第一个问题是在创建构建定义之后,出现了以下错误:
tfs无法加载文件或程序集'Microsoft.VisualStudio.SharePoint.WorkflowExtensions

因此,我在服务器上安装了WorkflowManagerTools,现在工作流设计器已加载,如果您不介意,我在此处记录了如何离线进行此操作::)
http://levalencia.wordpress.com/2014/02/19/installing-sharepoint-2013-workflowmanager-and-workflowmanager-tools-in-an-offline-environment/

现在,最大的问题是:
由于构建服务器和sp 2013都是分开的,因此我需要在构建服务器中执行哪些步骤才能成功构建解决方案?

现在我有这个错误

TF215097:初始化构建定义\ XXX Projects \ XXX.SP.DMS的构建时发生错误:
异常消息:无法创建未知类型'{clr-命名空间:COB.CI.Workflow; assembly = COB.CI.Workflow.AssemblyVersioning} UpdateAssemblyVersionNumber'。 (类型XamlObjectWriterException)

非常感谢你的帮助

克里斯·奥'Brien说过...

@levalencia,

路易斯,我想这是因为我的程序集不在构建服务器上的GAC中。请记住,这需要是.NET 4.0 GAC。

让我知道是否't fix it.

谢谢,

克里斯。