2016-07-22 13 views
0

MSBuildの新機能です。 robots.txtのフォルダにconfigurationを使用して、ファイルの1つをプロジェクトのルートフォルダにコピーします。これは期待どおりに動作しています。しかし、私がDebugを実行したい場合、ファイルを見つけることができません.b/c明らかに私はデバッグには必要ありません。代わりに、このダミーファイルを追加するように、configurationが1であるか、他には記載されている場合、私は、ビルドプロセスから除外したい:あなたはその上で見ることができますMSBuildプロセスで(2)「条件」を持つ可能性があります

<Target Name="AfterBuild"> 
    <Copy SourceFiles="Web.temp.config" DestinationFiles="Web.config" OverwriteReadOnlyFiles="True" /> 
    <Delete Files="Web.temp.config" /> 
    <Copy SourceFiles="$(ProjectDir)Content\robots\robots.$(Configuration).txt" Condition="$(Configuration)==Staging" DestinationFiles="robots.txt" OverwriteReadOnlyFiles="True" /> 
    <Copy SourceFiles="$(ProjectDir)Content\robots\robots.$(Configuration).txt" Condition="$(Configuration)==Production" DestinationFiles="robots.txt" OverwriteReadOnlyFiles="True" /> 
    </Target> 

私は(2)個別の<Copy>の要素を持っています同じことをしています(robots.txtファイルに関する)。これで "OR"句を使用できますか?そしてもしそうなら、どうですか?これを行うより良い方法がありますか?

理想のアプローチ:

<Copy SourceFiles="$(ProjectDir)Content\robots\robots.$(Configuration).txt" Condition="$(Configuration)==Production || $(Configuration)==Staging" DestinationFiles="robots.txt" OverwriteReadOnlyFiles="True" /> 

答えて

1

のMSBuild "または句は、" そう、あなたのアプローチは、私には罰金だ、||としてOrないとして書かれています。 (私は本当にMSBuildに精通していません)

また、条件を書き込む方法は(部分的にカーゴカルトかもしれませんが)Condition="'$(Bla)' == 'Value'"です。つまり、条件の値を引用します。

qテキストから、Condition="'$(Configuration)' != 'Debug'"もお試しください。

+0

ニース私はちょうど '!='の代わりに 'Or'を使用しました。また、一重引用符も必要ではありませんでした。 Apprec! –

+0

ロブ、私の疑惑は、あなたがもう一度$(Foo)をテストするときに一重引用符が必要になることです。おそらく空である可能性があります。 (まあ、それはちょうどバッチファイル腸の感覚、多分MSBUILDはスマートです:-) –

関連する問題