Mam następujący fragment kodu MSBuild:Jak wywołać ten sam cel msbuild dwa razy z różnymi parametrami od wewnątrz msbuild samego pliku projektu
<PropertyGroup>
<DirA>C:\DirA\</DirA>
<DirB>C:\DirB\</DirB>
</PropertyGroup>
<Target Name="CopyToDirA"
Condition="Exists('$(DirA)') AND '@(FilesToCopy)' != ''"
Inputs="@(FilesToCopy)"
Outputs="@(FilesToCopy -> '$(DirA)%(Filename)%(Extension)')">
<Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(DirA)" />
</Target>
<Target Name="CopyToDirB"
Condition="Exists('$(DirB)') AND '@(FilesToCopy)' != ''"
Inputs="@(FilesToCopy)"
Outputs="@(FilesToCopy -> '$(DirB)%(Filename)%(Extension)')">
<Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(DirB)" />
</Target>
<Target Name="CopyFiles" DependsOnTargets="CopyToDirA;CopyToDirB"/>
Więc powołując się celem CopyFiles
kopie odpowiednich dokumentów do $(DirA)
i $(DirB)
, pod warunkiem, że nie są już dostępne i aktualne.
Ale cele CopyToDirA
i CopyToDirB
wyglądają identycznie, z wyjątkiem jednej kopii na $(DirA)
, a drugą - na $(DirB)
. Czy możliwe jest zunifikowanie ich do jednego celu po raz pierwszy wywołanego przez $(DirA)
, a następnie z $(DirB)
?
Dzięki.
Hi Ruben. Czy mógłbyś rozwinąć ... w swojej odpowiedzi? Nie jestem zaznajomiony z sparametryzowanymi celami, aby zrozumieć, co masz na myśli. Dzięki. – mark
@mark: done.Powód, dla którego nie robiłem tego wcześniej, jest dwojaki 1. Nie miałem miłego edytora do ręki. 2. nie wiem na temat składni pierwszej próbki. Mam nadzieję że to pomoże. Bardzo polecam książkę Inside MSBuild –
@ruben: LOL @ # 3 –