2011-12-15 16 views
0

私はx、y、zプロパティファイルを持っていて、master.propertiesファイルを持っていますアイテムを別のmsbuildタスクに1つずつ渡す方法は?

私はmaster.propertiesファイルに次のようないくつかのitemgroupを書いて、このアイテムグループをmsbuildターゲットに渡しますforeachのように。

アイテムのグループ:

<Components Include="Y:\Build\X.Properties"> 
     <ComponentName>X</ComponentName> 
    </Components> 

    <Components Include="Y:\Build\Y.Properties"> 
     <ComponentName>Y</ComponentName> 
    </Components> 

    <Components Include="Y:\Build\Z.Properties"> 
     <ComponentName>Z</ComponentName> 
    </Components> 



<Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy"> 

    <MSBuild Projects="@(Components)" 

      Targets="BuildComponent" /> 

    </Target> 

は、今私はコンポーネント名は、それだけでは唯一のXとYを構築する必要があり、この

X Y

のように与えられますtxtファイルを持っていると思います。

私はReadLinesFromFileで試していましたが、1つずつコンポーネントを渡すことができません。 EXのために

<ReadLinesFromFile File="Allcomponent.txt"> 
     <Output TaskParameter="Lines" ItemName="AllComponent" /> 
    </ReadLinesFromFile> 

それから私はのMSBuildタスクを呼び出すために1でitemgroup 1でコンポーネントを渡したいです。

これを解決するにはどうすればよいですか?

+0

ここでは、PowerShellにはどのような機能がありますか? – Abbas

+0

@Abbas:この質問からpowershellタグを削除しました... – Aacini

答えて

0

は最終的に私は解決策を見つけました。解決策は次のとおりです

コンポーネント名でプロパティを作成する必要があります。

<X>Y:\Build\X.Properties</X> 
<Y>Y:\Build\Y.Properties</Y> 
<Z>Y:\Build\Z.Properties</Z> 

とのMSBuildタスクでは、私は今では私は、テキストファイルを通過するコンポーネントを構築します

<Target Name="BuildAll" > 

    <ReadLinesFromFile File="$(AllComponents)"> 
     <Output TaskParameter="Lines" ItemName="AllComponents"/> 
    </ReadLinesFromFile> 

    <MSBuild Projects="$(%(AllComponents.Identity))" 

      Targets="BuildComponent" /> 

</Target> 

次のように従ってください。

0

あなたの質問はあまり明確ではありません。特に「私は1つずつコンポーネントを渡すことができません。

あなたはこのようItemGroupに各項目のカスタムメタデータにアクセスすることができます。

<Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy"> 
    <MSBuild Projects="%(Identity)" 
      Targets="%(ComponentName)" /> 
</Target> 
関連する問題