ハマってます。
Test.proj
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="3.5" DefaultTargets="Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Test"> <MSBuild Projects="$(MSBuildProjectFile)" Targets="MSG" Properties="MSG_1=ABC;MSG_2="Data Source=local;Initial Catalog=Test;User ID=sa;Password=password"" /> </Target> <Target Name="MSG"> <Message Text="$(MSG_1)_$(MSG_2)" /> </Target> </Project>
な感じの プロジェクトファイルでコマンドプロンプトから、MSBuild タスクを使用する タスクを呼び出した場合エラーになる。
MSBuild Test.proj
でも、MSBuild タスクを使用せずにコマンドプロンプトから直接指定するとエラーにならない。
MSBuild Test.proj /t:MSG /p:MSG_1=ABC;MSG_2="Data Source=local;Initial Catalog=Test;User ID=sa;Password=password"
MSBuild タスク内の Properties の解析部分で、ダブルクォーテーションで囲まれてるのが考慮されていないのかな?
MSDN MSBuild タスク を見ると、MSBuild タスクの Properties プロパティはの指定の仕方は、<プロパティ名>=<値> を";"(セミコロン) で区切る。
これが、接続文字列の形式と同じなんだよな〜、さてどうしたら良いものか…。