2

このチュートリアルでは、カスタム ワークフローを定義して Team Foundation ビルドからデータベースを展開する方法を示します: 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>
.
.
.

編集: 上記の .deploymanifest ファイルのスニペットは正しくありません。そのスニペットは、TFS ビルドではなく、ローカル ビルドによって生成された .deploymanifest ファイルから取得しました。TFS ビルドによって生成された .deploymanifest が正しくないため、使用されている構成を調査し、最終的に問題を解決しました (以下の回答を参照)。

VSDBCMD から得られるエラーは次のとおりです。

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy\VSDBCMD.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\\TXDASQL2K8DEV\RTS_Deploy\DEV_Nightly_build\RTS Development Nightly Build\RTS Development Nightly Build_20111202.7\RTS.dbschema (380,7)
 - The reference to external elements from the source named 'Master.dbschema' could not be resolved, because no such source is loaded.
4

2 に答える 2

2

ビルドはリリース構成を使用していたことが判明し、DB にデプロイするためにデバッグ構成をセットアップしただけでした。うーん。リリース構成を更新すると、問題なく機能しました。

TFS ビルドによって生成された .deploymanifest ではなく、ローカルにビルドされた .deploymanifest から最初の数行を取得したため、最初の質問は誤解を招くものでした。恥ずかしい...

于 2012-01-03T20:54:37.027 に答える
2

これで 100% ではありませんが、同じプロセス ( this ) を使用して、自動ビルドで内部 SQL Server ボックスにデータベースをデプロイしました。ワークフロー デザイナーで Argument を使用して接続文字列を非常に簡単に設定できます。

そのため、デザイナー**で DBServer という新しい引数を作成すると (たとえば)、Invoke VSDBCMDタスクに追加できます" /cs:Data Source=" + DBServer + ";Integrated Security=True;Pooling=False"

VSDBCMD 全体 (マニフェスト名など) をパラメーター化して汎用データベースのビルド/デプロイを作成し、それを他のビルド (まだ使用していない場合) に使用できるため、実際にこれを試す価値があります。

Metadata** Arguments リストのプロパティを使用して、表示方法を編集し、ビルド定義で有用な名前/説明を付けることもできます。

于 2011-12-19T17:02:39.313 に答える