MSBuildをコマンドラインから実行する際、/p:スイッチにより任意のプロパティに値を設定することができます。 https://msdn.microsoft.com/ja-jp/library/ms164311.aspx
これを利用して、接続文字列的な文字列を渡そうと思い少し試行錯誤したのでメモ。
プロパティに渡したい文字列の例としてはこんな感じ:
Data Source=(localdb)\ProjectsV12;Initial Catalog=MyDataBase;Integrated Security=True;Connect Timeout=30;Encrypt=False;
空白やらイコールやら円マークやら入ってるのでそのまま渡して大丈夫か不安になりますね。 安心してください、大丈夫じゃありません。
cmd編
コマンドプロンプト(cmd)から実行する場合は特に悩むことはないと思います。接続文字列全体を"(ダブルクォート)
でクォートしてやれば良いですね。
C:\ > msbuild /t:myTask /p:myProerty="Data Source=(localdb)\ProjectsV12;Initial Catalog=MyDataBase;Integrated Security=True;Connect Timeout=30;Encrypt=False;"
PowerShell編
こちらは悩みましたが(PowerShell力が足りない)、以下でうまくいきました
- 接続文字列を
"(ダブルクォート)
でくくる - さらにその外側を
'(シングルクォート)
でくくる - 半角スペースを
%20
に置換する
PS > msbuild /t:myTask /p:myProerty='"Data%20Source=(localdb)\ProjectsV12;Initial%20Catalog=MyDataBase;Integrated%20Security=True;Connect%20Timeout=30;Encrypt=False;"'
参考:
How to escape space in property in msbuild while executing thorugh cmd prompt