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="$(DeployDatabaseConnectionString)";
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只是傷害了我的內心追求完美的人。