首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TFS中的增量构建-如何仅为已更改的项目更新AssemblyInfo.cs版本?

TFS中的增量构建-如何仅为已更改的项目更新AssemblyInfo.cs版本?
EN

Stack Overflow用户
提问于 2013-08-10 06:07:40
回答 1查看 1.1K关注 0票数 1

我们在TFS 2012中有一个包含多个项目的解决方案。我已经在构建服务器上设置了一个持续集成构建,并设置了Clean Workspace = None。我正在使用TFS版本控制模板2.0来更新AssemblyFileVersion和AssemblyVersions。

运行生成时,即使某些项目中的代码没有更改,每个项目也会使用新版本号更新其AssemblyInfo.cs文件。理想情况下,我们希望仅当项目发生更改时才更改版本。

我在考虑单独构建每个项目,但我们更愿意能够简单地构建解决方案。我读到Clean Workspace = None应该会阻止项目更新,但这似乎并没有发生在我身上,因为所有dll上的时间戳在构建后都显示为更改。

我刚开始建立一个构建过程,所以我希望有一些我做错了的简单的事情。任何建议都将不胜感激。

更新:在检查了建议的链接后,似乎我在构建期间做了两件可能导致问题的事情: 1)在我的一个项目中的"AfterBuild“步骤中进行的web.config文件转换;2)在"TFS Versioning”模板中使用版本号递增功能,而不打开工作流来查看它是如何检查更改的文件的。我将删除这两个代码,看看会发生什么。

EN

回答 1

Stack Overflow用户

发布于 2015-02-06 03:05:27

这是一个很好的问题,也是有可能的。我运行powershell脚本,这些脚本使用TFS API来确定哪些文件发生了更改

您还需要获取变更集和搁置集,但一旦拥有了它们,您就可以获得所需的信息,如下所示:

代码语言:javascript
复制
function Get-ChangesetChanges()
{
    [CmdletBinding()]
    param ([Parameter(Mandatory=$true)][string]$Changeset,[Parameter(Mandatory=$true)][string]$TFSServer)
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.VersionControl.Client')
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Client')
$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($TFSServer) 
$vcs = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])  
$vcsChanges = $vcs.GetChangeset($changeset).Changes;
$changes = @();

foreach ($change in $vcsChanges)
{   
    $changes += $change.Item.ServerItem;
}

$changes;

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18156379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档