2012-02-17 4 views
0

vs2010을 사용하여 만든 표준 SQL Server 2008 프로젝트가 있습니다. 빌드 프로세스를 수정하여 최종적으로 VSDBCMD를 호출하여 정적 DBschema 파일에 대한 빌드 (dbschema 파일)의 출력을 비교하여 배포 스크립트를 생성하는 사용자 지정 작업을 시작해야합니다. 내가 프롬프트 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로 작업 디렉토리를 설정합니다 : \의 Program Files (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;" /> 

트릭은 & quot를 사용하는 것이었다 수행하여이 관리; C 주위 : \ 프로 ...

3

비주얼 스튜디오는 $은 (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" />