2012-02-17 3 views
0

vs2010を使用して作成された標準SQL Server 2008プロジェクトがあります。私はビルドプロセスを変更しようとしていました。最終的には、静的なDBschemaファイルに対してビルドの出力(dbschemaファイル)を比較することで、VSDBCMDを呼び出してデプロイスクリプトを生成するカスタムタスクが発生します。 VS2010コマンドプロンプトからこのコマンドを実行すると、dbprojファイル内からVSDBCMDを呼び出す

vsdbcmd.exe /a:deploy /dd:- /dsp:sql /model:obj\Release\EnterpriseBuild.Services.Database.dbschema /targetmodelfile:VersionedSchemas\v1.0.dbschema /DeploymentScriptFile:NewDeploymentScript.sql /p:TargetDatabase="EnterpriseBuild.Database" 

すべてがうまく動作し、newdeployment.sqlファイルが生成されます。私は私の.dbprojファイルを変更し、AfterBuildsターゲット

<Target Name="AfterBuild"> 
    <!--<Message Text="sample text" Importance="high"></Message>--> 
    <Exec IgnoreExitCode="false" 
      WorkingDirectory="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy\" 
      Command="vsdbcmd.exe /a:deploy /dd:- /model:obj\Release\EnterpriseBuild.Services.Database.dbschema /targetmodelfile:VersionedSchemas\v1.0.dbschema /DeploymentScriptFile:NewDeploymentScript.sql /p:TargetDatabase=&quot;EnterpriseBuild.Database&quot;" /> 
    </Target> 

ビルドとしてこれを含めるただし際

EnterpriseBuild.Services.Database.dbproj(211,5): error MSB3073: The command "vsdbcmd.exe /a:deploy /dd:- /model:obj\Release\EnterpriseBuild.Services.Database.dbschema /targetmodelfile:VersionedSchemas\v1.0.dbschema /DeploymentScriptFile:NewDeploymentScript.sql /p:TargetDatabase="EnterpriseBuild.Database"" exited with code 1. 

メッセージで失敗します。

誰でも私が間違っていることを示唆することはできますか?

答えて

1

私はそれを解決することができました。基本的にこの

<Target Name="AfterBuild"> 
    <!--<Message Text="sample text" Importance="high"></Message>--> 
    <Exec IgnoreExitCode="false" 
      WorkingDirectory="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy\" 
      Command="vsdbcmd.exe /a:deploy /dd:- /model:obj\Release\EnterpriseBuild.Services.Database.dbschema /targetmodelfile:VersionedSchemas\v1.0.dbschema /DeploymentScriptFile:NewDeploymentScript.sql /p:TargetDatabase=&quot;EnterpriseBuild.Database&quot;" /> 
    </Target> 

をやって当然Cに作業ディレクトリを設定します:\プログラムファイル(x86の)....私のVersionedSchemas \ v1.0.dbschemaなどが存在しません。そのトリックは、作業ディレクトリをProjectDirectoryと同じにしておき、VSDBCMDを呼び出すことでした。

<Exec IgnoreExitCode="false" Command="&quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy\vsdbcmd&quot; /a:deploy /dd:- /model:obj\Release\EnterpriseBuild.Database.dbschema /targetmodelfile:VersionedSchemas\v1.0.dbschema /DeploymentScriptFile:NewDeploymentScript.sql /p:TargetDatabase=&quot;EnterpriseBuild.Database&quot;" /> 

このトリックは&を使用していました。 C周り:\プロ...

3

Visual Studioはまた、$(VSTSDBDirectory)を公開 - 次のようにVSDBCMD

の場所

のMSBuildタスクを見ることができる:

<Exec Command="&quot;$(VSTSDBDirectory)\Deploy\VSDBCMD&quot; /a:Deploy /q+ /dd:+ /dsp:sql /manifest:&quot;$(OutDir)Database.deploymanifest&quot; /cs:&quot;Integrated Security=SSPI;Persist Security Info=False;Data Source=(local)&quot; /p:AlwaysCreateNewDatabase=true /p:CommentOutSetVarDeclarations=false /p:TargetDatabase=&quot;MyDatabase&quot; /Script:&quot;$(OutDir)MyDatabase.sql&quot;" ContinueOnError="false" /> 
関連する問題