我可以从 TFS CI Build 更改 VS2010 数据库项目的部署脚本的位置吗

Posted

技术标签:

【中文标题】我可以从 TFS CI Build 更改 VS2010 数据库项目的部署脚本的位置吗【英文标题】:Can I change the location of the deployment script for VS2010 database project from TFS CI Build 【发布时间】:2012-04-10 22:27:29 【问题描述】:

我无法将 TFS CI 构建的输出定向到默认目录位置以外的目录位置。 我有 2 个数据库项目与我们的大型 .net 项目集成。一切都按照我们在本地 PC 上的预期构建和执行。文件最终位于数据库项目 sql/Debug 或 Release 文件夹下的预期位置。 在我们的 TFS 构建服务器上,项目会正确构建和生成所有内容,但会将所有数据库项目输出文件(.SQL、.schema 等)转储到 TFS 输出目录的根目录中。那里变得非常混乱,因为有几个项目似乎会导致这种情况发生。

目前我只关心数据库项目。有没有办法在项目的部署或构建定义(或我没想到的任何其他地方)中指定这些文件的输出位置?

谢谢

【问题讨论】:

【参考方案1】:

一个简单的方法是创建一个在编译过程结束时运行的 MSbuild 项目。

创建名为 DropTidy.Proj 的文件,然后添加如下内容。

<Project DefaultTargets="CopySQLReleaseFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">

  <Target Name="CopySQLReleaseFiles">

    <ItemGroup>
      <SqlBuildOutput Include="$(OutDir)\*.sql" />
    </ItemGroup>

    <Copy SourceFiles="@(SqlBuildOutput)" DestinationFolder="$(OutDir)\SQL" />

  </Target>

</Project>

上面的示例会将所有扩展名为“sql”的文件复制到名为“SQL”的文件夹中。 $(OutDir) 是团队构建使用的工作文件夹,与构建代理上构建工作区中的“二进制”文件夹相关

将文件签入 TFS,然后将其添加到 Team Build Process 中的“要构建的项目”列表中。确保它是列表中的最后一个“解决方案”,以便它在构建中的其他解决方案之后运行。还要确保您签入 proj 文件的文件夹是您的构建工作区的一部分。

运行您的构建,您应该会在放置位置看到一个名为 SQL 的新文件夹。

【讨论】:

以上是关于我可以从 TFS CI Build 更改 VS2010 数据库项目的部署脚本的位置吗的主要内容,如果未能解决你的问题,请参考以下文章

TFS 2017 缺少用于指定 CI 触发器的“路径过滤器”?

如何从 TFS 获取 VS Code 中其他用户的更改

VSTS Build 不生成最新的二进制文件

仅当 tfs build 中的版本更改时 npm publish

TFS Online Git - CI基于特定文件夹签入

使用测试影响分析的 TFS 2013 和 VS 2013 能否与 NUnit 一起使用