无法部署 VSDBCMD 部署,在清单中看不到连接字符串



本教程展示了如何定义自定义工作流来从Team Foundation Build部署数据库:http://msdn.microsoft.com/en-us/library/ff805001.aspx

然而,当TFS试图部署我的数据库时,它抱怨我必须指定一个连接字符串。我提供了.deploymanifest文件作为命令行参数,并且.deploymanifest文件具有连接字符串。

为什么VSDBCMD抱怨我没有输入连接字符串?它还会抱怨未解决的引用,这些引用也包含在.deploymanifest文件中。

下面是我的.deploymanifest文件的前几行:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <TargetConnectionString>Data Source=SQL2K8DEV;Integrated Security=True;Pooling=False</TargetConnectionString>
        <TargetDatabase>Super_DB</TargetDatabase>
        <DeployToDatabase>True</DeployToDatabase>
        <DeployToScript>True</DeployToScript>
.
.
.

EDIT:上面的.deploymanifest文件片段是不正确的。我从本地构建(而不是TFS构建)生成的.deploymanifest文件中获取了该片段。由TFS构建生成的.deploymanifest不正确,这导致我调查正在使用的配置,最终解决了我的问题(参见下面的答案)。

这里是我从VSDBCMD得到的错误:

C:Program Files (x86)Microsoft Visual Studio 10.0VSTSDBDeployVSDBCMD.EXE /a:Deploy /dd+ /dsp:Sql /manifest:RTS.deploymanifest
Before you can deploy a database, you must specify a connection string in the project properties or at a command prompt.
TSD\TXDASQL2K8DEVRTS_DeployDEV_Nightly_buildRTS Development Nightly BuildRTS Development Nightly Build_20111202.7RTS.dbschema (380,7)
 - The reference to external elements from the source named 'Master.dbschema' could not be resolved, because no such source is loaded.

不是100%,但我已经使用了相同的过程(这个)来部署数据库到我们的内部SQL Server盒子在自动化构建,你可以使用一个参数在工作流设计器设置连接字符串很容易。

因此,如果您在设计器**中创建一个新的参数称为DBServer(例如)在Invoke VSDBCMD任务中,您可以添加" /cs:Data Source=" + DBServer + ";Integrated Security=True;Pooling=False"

实际上值得玩这个,因为你可以参数化你的整个VSDBCMD(如清单名称),使一个通用的数据库构建/部署,然后可以用于其他构建你可能有(如果你还没有)。

**你也可以编辑它出现的方式,并在构建定义中使用参数列表中的Metadata属性给它有用的名称/描述。

结果是构建使用了Release配置,而我只设置了Debug配置来部署到DB。啊。一旦我更新了发布配置,它就可以正常工作了。

我最初的问题是误导性的,因为我从本地构建的。deploymanifest中取出了前几行,而不是由TFS构建生成的。deploymanifest。

最新更新