MSBuild передающие параметры к CallTarget

Это - в значительной степени это - который даст Вам прошедшее время высокого разрешения. Если, конечно, кто-то не смешивает с системными часами.

63
задан oɔɯǝɹ 22 July 2015 в 22:28
поделиться

3 ответа

Целевые объекты MSBuild не предназначены для получения параметров. Вместо этого они используют свойства, которые вы для них определяете.

<PropertyGroup>
    <Environment>myValue</Environment>
</PropertyGroup>

<Target Name="Deploy">
    <!-- Use the Environment property -->
</Target>

Однако распространенным сценарием является вызов Target несколько раз с разными параметрами (например, развертывание нескольких веб-сайтов). В этом случае я использую задачу MSBuild MSBuild и отправляю параметры как свойства:

<Target Name="DoDeployments">
    <MSBuild Projects ="$(MSBuildProjectFullPath)"
             Properties="VDir=MyWebsite;Path=C:\MyWebsite;Environment=$(Environment)"
             Targets="Deploy" />

    <MSBuild Projects ="$(MSBuildProjectFullPath)"
             Properties="VDir=MyWebsite2;Path=C:\MyWebsite2;Environment=$(Environment)"
             Targets="Deploy" />
</Target>

$ (MSBuildProjectFullPath) - это полный путь к текущему сценарию MSBuild на случай, если вы не хотите отправлять «Развернуть» в другой файл.

Надеюсь, это поможет!

75
ответ дан 24 November 2019 в 16:25
поделиться

Возможно, лучший способ сделать это в MSBuild, но в Ant я бы использовал глобальные свойства для передачи информации от одной задачи к другой. Это было паршивое решение, но в то время я не видел лучшего пути. У вас должна быть возможность сделать это в MSBuild, но имейте в виду, что вам нужно будет использовать задачу CreateProperty для динамического назначения свойства.

С другой стороны, довольно легко реализовать задачи в C # (или VB, или что-то еще). Может быть, это лучшее решение для вас.

0
ответ дан 24 November 2019 в 16:25
поделиться
    <CreateProperty
        Value="file1">
        <Output
            TaskParameter="Value"
            PropertyName="filename" />
    </CreateProperty>
    <CallTarget Targets="Deploy"/>
    <Message Text="$(filename)"/>
    <CreateProperty
        Value="file2">
        <Output
            TaskParameter="Value"
            PropertyName="filename" />
    </CreateProperty>
    <Message Text="$(filename)"/>   
    <CallTarget Targets="Deploy"/>
0
ответ дан 24 November 2019 в 16:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: