您如何在Visual Studio Team Services中检入文件作为构建的一部分?

里克·格罗斯

我试图弄清楚如何在构建过程中关闭循环,在构建过程中,我们将版本号应用于AssemblyInfo。*文件。

我们正在从本地tfs迁移到Visual Studio团队服务。我们当前的许多内部部署版本都会更新版本号,以使其与版本号保持同步,并在构建过程中将这些文件重新签入源代码管理。

我已成功使用msdn上脚本作为示例来开始自定义构建过程。

我现在正尝试将文件检回到源代码管理中,但收到错误消息:

#[error]TF30063: You are not authorized to access https://subdomain.visualstudio.com/DefaultCollection.
#[error]Process completed with exit code 100 and had 1 error(s) written to the error stream.

我目前正在使用tf.exe尝试执行此操作。首先,在Powershell脚本顶部获取该工具的路径;

# get the tf command line tool path
$tfexe = [System.IO.Path]::GetFullPath($env:VS140COMNTOOLS + "..\..\common7\ide\tf.exe")
if (-Not (Test-Path $tfexe))
{
    Write-Error "Could not find tf.exe at '$tfexe'"
    exit 1
}
else
{
    Write-Host "Found tf.exe at '$tfexe'"
}

然后修改循环以检出文件,然后将文件检回。

# Apply the version to the assembly property files
$files = gci $Env:BUILD_SOURCESDIRECTORY -recurse -include "*Properties*","My Project" | 
    ?{ $_.PSIsContainer } | 
    foreach { gci -Path $_.FullName -Recurse -include AssemblyInfo.* }
if($files)
{
    Write-Host "Will apply $NewVersion to $($files.count) files."

    foreach ($file in $files) {

        #Write-Host "Attempting to checkout file '$file'"
        & ($tfexe) vc checkout $file

        $filecontent = Get-Content($file)
        attrib $file -r
        $filecontent -replace $VersionRegex, $NewVersion | Out-File $file
        Write-Host "$file.FullName - version applied"
    }

    # Checkin pending changes together
    ##[error]TF30063: You are not authorized to access https://subdomain.visualstudio.com/DefaultCollection.
    ##[error]Process completed with exit code 100 and had 1 error(s) written to the error stream.
    Write-Host "Attempting to checkin files"
    $comment = "Applied $NewVersion to $($files.count) files.  ***NO_CI***"
    & ($tfexe) vc checkin /comment:"$comment" /noprompt
}

这是执行此操作的正确方法吗?如果未授权构建服务访问,那么该如何获取代码,对其进行编译,然后将工件发布到某个地方?

杰西霍温

我不建议每次都签入程序集版本,而是建议使用[assembly: AssemblyVersion("1.2.*")]通配符支持(并且我删除了通配符支持,[AssemblyFileVersion]以便它自动匹配。

生成后签入更改的文件存在多种方式的问题:

  • 索引源和符号功能将使用与变更集关联的代码不匹配的源。这将破坏高级调试方案。
  • 先进的测试功能可能会中断,并可能提示不需要的测试或变更集
  • 历史充斥着**NO_CI**变更集
  • 它破坏了语义版本控制,因为这些类型的脚本没有考虑破坏API的更改,并且可能导致有趣的行为。

我创建了一个新的构建任务,该任务将允许您使用任务检入文件:

使用tfx控制台将其添加到visualstudio团队基础服务或TFS 2015实例

tfx build tasks upload -taskpath path\to\project\root

我仍在研究添加和删除的方法,但是我遇到了客户端对象模型的问题,除了编辑之外,它不进行任何处理。

它看起来像是调用,tf add并且tf delete实际上将与此签入任务结合在构建脚本中工作。

想要查询更多的信息:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

作为Visual Studio Team Services构建任务的一部分,如何在PowerShell脚本中执行SQL?

作为Visual Studio Team Services构建任务的一部分运行“节点测试”,并在“测试”选项卡中显示结果

如何在Visual Studio Team Services上设置Android构建

如何在VSTS中删除冲刺(Visual Studio Team Services)

如何在Visual Studio Team Services中创建分支?

如何在Visual Studio Team Services中运行NUnit测试

如何删除项目-Visual Studio Team Services

如何在Visual Studio 2012中使JSON文件成为项目的一部分

Visual Studio Team Services构建通知

如何在Android Studio中更改Visual Studio Team Services存储库?

Visual Studio Team Services 中的状态转换

如何在Visual Studio Team Services托管的构建代理中使用git lfs

Visual Studio Team Services构建找不到.sln文件

Visual Studio Team Services中的空构建工件

Azure中的Visual Studio Team Services构建服务器

如何在Visual Studio Team Services在线中将一组Scrum任务用作模板

使用Windows键作为Visual Studio 2017中键盘快捷键的一部分

Visual Studio Team Services:删除存储库

Visual Studio Team Services生成Typescript错误

从Visual Studio Team Services删除团队项目

使用Visual Studio Team Services设置Teamcity

在Visual Studio Team Services项目之间迁移

Visual Studio Team Services更改主题

Visual Studio Team Services“访问被拒绝”消息

如何在Visual Studio Team Services API中创建子任务

如何在VSTS(Visual Studio Team Services)中启用工作项对话框?

如何在Visual Studio Team Services中向涉众隐藏字段

如何在Visual Studio Team Services中查询历史数据以进行报告?

Build和Release定义如何在Visual Studio Team Services(VSTS)中相互联系?