MSBuild有点新鲜。我有一个robots.txt
文件夹,它使用configuration
将其中一个文件复制到项目的根文件夹中。这是按预期工作的。但是,当我想运行Debug
它找不到文件时,b / c显然我不需要一个用于调试。我没有添加这个虚拟文件,而是如果configuration
是列出的一个或另一个,我想将它从构建过程中排除,如下所示:
<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" />
答案 0 :(得分:1)
MSbuild&#34;或条款&#34;被写为Or
而不是为||
,否则您的方法对我来说似乎没问题。 (fwiw,我真的不熟悉MSBuild。)
此外,我写条件的方式(尽管可能部分是货物崇拜)是Condition="'$(Bla)' == 'Value'"
,即我引用条件中的值。
您可以在q文字中尝试Condition="'$(Configuration)' != 'Debug'"
?