У меня есть следующие простые задачи:
<Exec Command=" icacls "$( [System.IO.Path]::Combine( $(_tempPublishUrl), Logs ))" /grant Users:(CI)(OI)M /T " ContinueOnError="true" />
<Exec Command=" icacls "$( [System.IO.Path]::Combine( $(_tempPublishUrl), Logs ))" /grant IIS_IUSRS:(CI)(OI)M /T " ContinueOnError="true" />
<Exec Command=" icacls "$( [System.IO.Path]::Combine( $(_tempPublishUrl), ReportResults ))" /grant Users:(CI)(OI)M /T " ContinueOnError="true" />
<Exec Command=" icacls "$( [System.IO.Path]::Combine( $(_tempPublishUrl), ReportResults ))" /grant IIS_IUSRS:(CI)(OI)M /T " ContinueOnError="true" />
<Exec Command=" icacls "$( [System.IO.Path]::Combine( $(_tempPublishUrl), ReportTemplates ))" /grant Users:(CI)(OI)M /T " ContinueOnError="true" />
<Exec Command=" icacls "$( [System.IO.Path]::Combine( $(_tempPublishUrl), ReportTemplates ))" /grant IIS_IUSRS:(CI)(OI)M /T " ContinueOnError="true" />
Я хочу создать повторно используемую задачу, которая параметризует "_tempPublishUrl" этих exec-задач, потому что я хочу повторноиспользуйте их в разных частях скрипта msbuild (он же устраняет дублирование кода).Я знаю, что могу создавать простые задачи на C #, например, так:
<UsingTask
TaskName="RenameDirectory"
TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"
>
<ParameterGroup>
<PathToDirToRename ParameterType="System.String" Required="true" />
<PathToNewDirectoryName ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Code Type="Fragment" Language="cs">
<![CDATA[
System.IO.Directory.Move(PathToDirToRename, PathToNewDirectoryName);
]]>
</Code>
</Task>
</UsingTask>
Но как я могу использовать для группировки моих задач , чтобы создать повторно используемую задачу (функции мышления)?Я не могу найти пример, который показывает витрины что-то вроде этого.