2012-03-31 26 views
5

我試圖部署裏面自動生成服務器處理數據庫項目(dbproj格式,而不是新的SSDT sqlproj)。我發現:爲什麼MSBuild任務無法部署數據庫,但Exec的做工精細

當我打電話與Exec的任務,我的MSBuild腳本部署 - 一切做工精細:

<Exec Command="$(MSBuildPath)\MSBuild.exe $(SourceFilesPath)\$(DeployDatabaseProjectName)\$(DeployDatabaseProjectName).dbproj 
/t:Deploy 
/p:OutputPath=$(BaseOutput)\$(DeployDatabaseProjectName)\ 
/p:TargetDatabase=$(DeployDatabaseName) 
/p:TargetConnectionString=$(DeployDatabaseConnectionString)" /> 

但是,當我試圖用MSBuild任務重複這一點 - 它的行爲是不同的:

<MSBuild Projects="$(SourceFilesPath)\$(DeployDatabaseProjectName)\$(DeployDatabaseProjectName).dbproj" 
      Targets="Deploy" 
      Properties="Configuration=$(BuildConfiguration); 
      TargetDatabase=$(DeployDatabaseName); 
      TargetConnectionString=&quot;$(DeployDatabaseConnectionString)&quot;; 
      OutputPath=$(BaseOutput)\$(DeployDatabaseProjectName)\; 
      " /> 

MSBuild任務在DeployDatabaseConnectionString上分號朗聲道:

<DeployDatabaseConnectionString>Data Source=$(DeployDatabaseServer);Integrated Security=True;Pooling=False</DeployDatabaseConnectionString> 

它會報告如下:

名稱「集成安全性」包含無效字符「」

但是如果我更換編碼百分比值分號 - %3B - 這將打破裏面SqlDeployTask:

錯誤MSB4018:在 「SqlDeployTask」 任務意外失敗。

什麼是通過TargetConnectionString部署SqlProject的目標的正確方法?

PS:我能活以exec任務很好,但撥打電話的MSBuild腳本里面msbuild.exe只是傷害了我的內心追求完美的人。

回答

4

我找到了正確的方法 - 新的Msbuild允許在item上定義AdditionalProperties元數據。所以用這個功能一切正常工作,並與逃逸\編碼沒有問題

<ItemGroup> 
    <DbProjectToBuild Include="$(SourceFilesPath)\$(DeployDatabaseProjectName)\$(DeployDatabaseProjectName).dbproj"> 
     <AdditionalProperties>Configuration=$(BuildConfiguration)</AdditionalProperties> 
     <AdditionalProperties>OutputPath=$(BaseOutput)\$(DeployDatabaseProjectName)\</AdditionalProperties> 
     <AdditionalProperties>TargetDatabase=$(DeployDatabaseName)</AdditionalProperties> 
     <AdditionalProperties>TargetConnectionString="Data Source=$(DeployDatabaseServer);Integrated Security=True;Pooling=False"</AdditionalProperties> 
    </DbProjectToBuild> 
</ItemGroup>   
<MSBuild Projects="%(DbProjectToBuild.Identity)" Targets="Build;Deploy" /> 
相關問題