Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 从dbproj文件内部调用VSDBCMD_Visual Studio 2010_Sql Server 2008_Vsdbcmd - Fatal编程技术网

Visual studio 2010 从dbproj文件内部调用VSDBCMD

Visual studio 2010 从dbproj文件内部调用VSDBCMD,visual-studio-2010,sql-server-2008,vsdbcmd,Visual Studio 2010,Sql Server 2008,Vsdbcmd,我有一个标准的SQLServer2008项目,它是使用vs2010创建的。我一直在尝试修改构建过程,以便在最后触发一个自定义任务,该任务将调用VSDBCMD,通过将构建(dbschema文件)的输出与静态dbschema文件进行比较来生成部署脚本。当我从VS2010命令提示符运行此命令时 vsdbcmd.exe /a:deploy /dd:- /dsp:sql /model:obj\Release\EnterpriseBuild.Services.Database.dbschema /targe

我有一个标准的SQLServer2008项目,它是使用vs2010创建的。我一直在尝试修改构建过程,以便在最后触发一个自定义任务,该任务将调用VSDBCMD,通过将构建(dbschema文件)的输出与静态dbschema文件进行比较来生成部署脚本。当我从VS2010命令提示符运行此命令时

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文件并将其作为后构建目标包含时

 <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>
信息


有人能指出我做错了什么吗?

我设法解决了这个问题。基本上是这样做的

<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;" />


诀窍是使用;大约在C:\Pro…

我设法解决了这个问题。基本上是这样做的

<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;" />


诀窍是使用;Visual Studio还公开了VSDBCMD的$(VSTSDBDirectory)-位置

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" />

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" />