2017-03-17 16 views
1

プロジェクトディレクトリにuser.configという名前のファイルを作成するという単純な要件がありますが、存在しない場合にのみ必要です。MSBuildが存在しない場合、ファイルをコピーまたは作成する

初の試み:

<Target Name="BeforeBuild"> 
    <ItemGroup> 
     <Line Include="line01"><Text>&lt;appSettings&gt;&lt;/appSettings&gt;</Text></Line> 
     <LineText Include="%(Line.Text)" /> 
    </ItemGroup> 
    <WriteLinesToFile File="user.config" Lines="@(LineText)" Overwrite="false" /> 
    </Target> 
それがファイルに追加するので

は動作しません

第二の試み:

<Target Name="BeforeBuild"> 
    <CreateItem Include="user_example.config"> 
     <Output ItemName="ItemsThatNeedToBeCopied" TaskParameter="Include" /> 
    </CreateItem> 
    <Copy SourceFiles="@(ItemsThatNeedToBeCopied)" DestinationFolder="$(ProjectDir)" Condition="!Exists('%(RootDir)%(Directory)%(Filename)%(Extension)')" /> 
    </Target> 

何が起こるように思わないのでが機能せず、理由について何も教えてくれない冗長なmsbuildの出力には何もありません

任意のMSBuildの専門家は、簡単に最初の試みはかなりこれを行うための標準的な方法であり、あなたは基本的に右に不足している状態(すべてのMSBuildのを除いて、それを持って...私が間違ってやっている

+1

! .config ') "/>'?また、2つ目がうまくいかない理由を調べるには、コマンドラインでpass/v:dを実行するか、%(RootDir)%(Directory)%(Filename)のようなものを表示するMessageタスクを追加します。 )%(Extension) – stijn

+0

@Stijn、最初の試みで最後の行を変更することは、魅力的なように機能しました。あなたはそれを答えとして追加することができ、私はここで正解をあなたに報います。 – Trygve

+0

@stijn。あなたがこれを見ることを願っています。 – Trygve

答えて

2

が表示されますタスク)がサポートされています。

最初の試みで、最後の行の変更について ` <WriteLinesToFile File="user.config" Lines="@(LineText)" Overwrite="True" Condition="!Exists('user.config')"/>
関連する問題