在过去的几年中,我’我一直大力倡导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上有两个项目:
- SharePoint CI入门包 – http://sharepointci.codeplex.com
- TFS简单程序集版本控制– http://tfssimpleversioning.codeplex.com
这两个新版本均贴有标签“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’或其依赖项之一。
- 其他各种错误消息都与版本控制有关。
是的,似乎许多TFS 2010构建工作流似乎都在XAML中标记了版本号。我了解这是由于VS 2010中一个不幸的错误所致,特别是Team Explorer- 此知识库文章 有更多详细信息和修补程序。但是,很可能您的工作流(像我的一样)现在已经有了它们中的版本号。所以’当然比应该的要痛苦得多。
您 have two options to make your build workflow run in TFS 2012:
- 在VS 2012 / TFS 2012中从头开始重建它– that’最后是我的CI入门包工作流程
- 尝试清除XAML:
- 我手动尝试了几次,但失败了。工作流无法在设计器中显示,并且几乎没有诊断信息。
- 另一种选择可能是 杰森·普里克特(Jason Prickett)’s “XAML cleaner”删除文件中版本化名称空间的工具。我尝试过,但是由于某种原因’不要给我工作流程–您可能会有更多的运气。
上面链接的Jason Prickett帖子还具有您可能会看到的错误消息的其他变体。
如果您使用我的资源,可能会看到相关的错误消息:
再次出于完整性考虑,如果您遇到了其他一些错误,’重新使用我的资源,但是“doing it wrong”根据TFS2012。如果在升级到TFS 2012 / VS 2012后使用我的(TFS 2010)程序集版本控制活动打开工作流,可能会看到以下内容:
您’如果需要,则需要修复工作流以使用最新版本的活动。
和这里’s what you’将查看您是否尝试将旧的(TFS 2010版本)程序集版本控制活动放到TFS 2012工作流程中:
结论
如果您执行自动构建,无论是否与SharePoint相关,升级到TFS 2012都会带来一些麻烦。对于使用我的资源的任何SharePoint员工,我’升级了这些软件,希望可以减轻您的痛苦。如果您遇到任何问题,请在Codeplex网站上发表评论。
2条评论:
克里斯
我正在尝试为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)
非常感谢你的帮助
@levalencia,
路易斯,我想这是因为我的程序集不在构建服务器上的GAC中。请记住,这需要是.NET 4.0 GAC。
让我知道是否't fix it.
谢谢,
克里斯。
发表评论