2017-01-31 20 views
0

the MSDN documentationによると、MSBuild Messageタスクはプロパティの内容をコンソールに出力できるはずです。プロパティを表示するにはMSBuild Messageタスクを取得するにはどうすればよいですか?

これは、次の行で、非常に簡単に証明することができる。

<Message Text=" MSBuildProjectDirectory = $(MSBuildProjectDirectory)" /> 

私は、ビルドターゲットの一環として、上記の行を実行すると、私はこのような何かを得る:私のビルド内

[exec] MSBuildProjectDirectory = .../somefolderpath 

をスクリプト実行可能ファイルへのパスを定義するプロパティがあります。定義は次のようになります。

<MyDir Condition="'$(MyDir)' == ''">somepath</MyDir> 
<MyEXE Condition="'$(MyEXE)' == ''">$(MyDir)\somefile.exe</MyEXE> 

$(MyEXE)の内容を出力したいと思います。

<Message Text=" MyEXE= $(MyEXE)" /> 

...しかし、それはしていません: 私の期待は、これが働くだろうということでした。実際には、それはまったくそこになかったかのように振る舞います。以下の場合

<Message Text="TEMP START"/> 
<Message Text=" MSBuildProjectDirectory = $(MSBuildProjectDirectory)" /> 

<Message Text='dollar1 "$(MyEXE)"'/> 
<Message Text="dollar2 '$(MyEXE)'"/> 
<Message Text='dollar3 $(MyEXE)'/> 
<Message Text="dollar4 $(MyEXE)"/> 

<Message Text='at1 "@(MyEXE)"'/> 
<Message Text="at2 '@(MyEXE)'"/> 
<Message Text='at3 @(MyEXE)'/> 
<Message Text="at4 @(MyEXE)"/> 

<Exec Command='echo "$(MyEXE)"' /> 
<Exec Command='echo FOO' /> 

<Message Text="TEMP END"/> 

...私は次のような出力が得られます。

[exec] TEMP START 
[exec] MSBuildProjectDirectory = .../somepath 
[exec] at1 "" 
[exec] at2 '' 
[exec] at3 
[exec] at4 
[exec] echo FOO 
[exec] FOO 
[exec] TEMP END 

非常に次の行には、exeファイルを実行

<Exec Command='"$(MyEXE)" /someparameter' /> 

...ですそれは明らかに価値を含んでいます。

私が@(MyEXE)を使用していることは、わたしの知らないことです。

誰もが$(MyEXE)の内容をコンソールに印刷する方法を知っていますか?

+2

ここで正しい出力が得られます( '[exec]'部分はありませんが、どこから来たのですか?)次に、表示されているものは有効なmsbuildではありません。ターゲット)。私はあなたがそれらを持っていると思う場所を追加しましたが、私は確信が持てません。あなたが使っている完全なコードと、それをどのように呼び出すかを表示してください。 – stijn

答えて

0

私の場合、MSBuild.exeはant exec taskから呼び出されています。このステップが削除され、MSBuildがコマンドラインから直接呼び出されると、問題は解決しません。

アップデート2017.02.08: さらに、私はantビルドスクリプトが、msbuildのコンソール出力を解析して、正規表現ベースの文字列置換の配列を使用して「役に立たない」コンテンツを削除することを発見しました。

私が質問に投稿した出力の冒頭の '[exec]'はantによって追加されています。

関連する問題