MSBuild+。数据库项目

MSBuild+。数据库项目,msbuild,Msbuild,我正在尝试通过msbuild部署db项目 我正在犯错误 MSBuild - Deploy DB project C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo /noconsolelogger "C:\Builds\2\Test\ePlanner\Sources\WebSiteBuildTest\Database\ePlanner\ePlanner\ePlanner.dbproj" /m:

我正在尝试通过msbuild部署db项目

我正在犯错误

MSBuild - Deploy DB project C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo /noconsolelogger "C:\Builds\2\Test\ePlanner\Sources\WebSiteBuildTest\Database\ePlanner\ePlanner\ePlanner.dbproj" /m:1 /t:"Deploy" /fl /flp:"logfile=deploymentdb.log;encoding=Unicode;verbosity=normal" /p:TargetDatabase="ePlanner3";"TargetConnectionString="Data Source=SACHIN-PC%3Buser=sa%3Bpwd=M0nday!";"DefaultDataPath="C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA";DeployToDatabase=true /p:OutDir="C:\Builds\2\Test\ePlanner\Binaries\\" /p:Configuration="Debug" /p:RunCodeAnalysis="False" /dl:WorkflowCentralLogger,"C:\Program Files\Microsoft Team Foundation Server 2010\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;BuildUri=vstfs:///Build/Build/53;InformationNodeId=10631;TFSUrl=http://sachin-pc:8080/tfs/DefaultCollection;"*WorkflowForwardingLogger,"C:\Program Files\Microsoft Team Foundation Server 2010\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;" MSBUILD : error MSB1008: Only one project can be specified. Switch: Source=SACHIN-PC%3Buser=sa%3Bpwd=M0nday!; DefaultDataPath=C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA;DeployToDatabase=true For switch syntax, type "MSBuild /help" TF270015: 'MSBuild.exe' returned an unexpected exit code. Expected '0'; actual '1'. MSBuild-部署数据库项目 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /诺洛戈 /noconsolelogger“C:\Builds\2\Test\ePlanner\Sources\WebSiteBuildTest\Database\ePlanner\ePlanner\ePlanner.dbproj” /m:1 /t:“部署” /佛罗里达州 /flp:“logfile=deploymentdb.log;encoding=Unicode;verbosity=normal” /p:TargetDatabase=“ePlanner3”;“TargetConnectionString=”数据源=SACHIN-PC%3Buser=sa%3Bpwd=M0nday!“;”DefaultDataPath=“C:\Program Files\Microsoft SQL Server\MSSQLS10.MSSQLSERVER\MSSQL\DATA”;DeployToDatabase=true /p:OutDir=“C:\Builds\2\Test\ePlanner\Binaries\\” /p:Configuration=“Debug” /p:runcodealysis=“False” DL:DeWorkCopyLoopGER,“C:\程序文件\微软Team Foundation Server 2010 \Too\\微软.Team Foundation .Bug .Server .Logg.dll”;“详细性=正常;构建URI=vstfs:///Build/Build/53;InformationNodeId=10631;TFSUrl=http://sachin-pc:8080/tfs/DefaultCollection“* WorkflowForwardingLogger,”C:\程序文件\微软Team Foundation Server 2010 \工具\微软.Team Foundation .Bug .Server .Logg.dll”;“冗长=正常;” MSBUILD:错误MSB1008:只能指定一个项目。 开关:Source=SACHIN-PC%3Buser=sa%3Bpwd=M0nday!; DefaultDataPath=C:\Program Files\Microsoft SQL Server\MSSQLS10.MSSQLSERVER\MSSQL\DATA;DeployToDatabase=true 对于开关语法,键入“MSBuild/help” TF270015:“MSBuild.exe”返回了意外的退出代码。应为“0”;实际“1”。
请帮助我

为了在MsBuild中运行.dbproj,计算机需要安装带有数据库项目组件的VisualStudio,这与许可有关。我无法从您提供的错误转储中判断这是否是导致问题的原因,但它在构建服务器上构建时解决了我们的问题。

您的命令行中有冲突的引号:

/p:TargetDatabase="ePlanner3";"TargetConnectionString="Data Source=SACHIN-PC%3Buser=sa%3Bpwd=M0nday!";"DefaultDataPath="C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA";DeployToDatabase=true

TargetConnectionString
属性完全用双引号括起来,但随后可以使用双引号指定连接字符串。尝试转义连接字符串的引号。

考虑将项目转换为.sqlproj。此新格式提供“发布”MSBuild目标。您只需要在SqlPublishProfilePath属性处指定一个包含部署选项的发布配置文件

看看这个例子:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="ProjectsBuild">
  <ItemGroup>
    <!-- Defines a collection of projects to deploy -->
    <ProjectsToPublish Include="SQLServer.sqlproj">
      <Properties>SqlPublishProfilePath=myprofile.publish.xml</Properties>
    </ProjectsToPublish>
    <!-- Runs the target Publish -->
    <MSBuild Projects="@(ProjectsToPublish)" Targets="Publish"/>
  </ItemGroup>
</Project>

SqlPublishProfilePath=myprofile.publish.xml
VisualStudio2010/2012需要安装SSDT(SQLServer数据工具)才能理解.sqlproj。您的构建服务器也是如此。它将安装包含目标“发布”的MSBuild.targets扩展

发布配置文件示例(它是MSBuild项目):


真的
DB1
数据源=server1\dev;综合安全=真实;池=假
假的
假的
假的
真的
假的
db1.sql
1.

您从哪里得到错误信息?构建服务器,本地计算机?
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <CreateNewDatabase>True</CreateNewDatabase>
    <TargetDatabaseName>DB1</TargetDatabaseName>
    <TargetConnectionString>Data Source=server1\dev;Integrated Security=True;Pooling=False</TargetConnectionString>
    <BackupDatabaseBeforeChanges>False</BackupDatabaseBeforeChanges>
    <BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
    <NoAlterStatementsToChangeCLRTypes>False</NoAlterStatementsToChangeCLRTypes>
    <DropObjectsNotInSource>True</DropObjectsNotInSource>
    <DeployDatabaseInSingleUserMode>False</DeployDatabaseInSingleUserMode>
    <DeployScriptFileName>db1.sql</DeployScriptFileName>
    <ProfileVersionNumber>1</ProfileVersionNumber>
  </PropertyGroup>
</Project>