English 中文(简体)
MSBuild 转参数
原标题:MSBuild passing parameters to CallTarget
  • 时间:2009-10-01 07:31:48
  •  标签:

我试图在我的小额信贷机构档案中提出一个可再利用的目标,因此我可以多次把它称为具有不同参数。

like:

<Target Name="Deploy">
    <!-- Deploy to a different location depending on parameters -->
</Target>

<Target Name="DoDeployments">
    <CallTarget Targets="Deploy">
        <!-- Somehow indicate I want to deploy to dev -->
    </CallTarget>

    <CallTarget Targets="Deploy">
        <!-- Somehow indicate I want to deploy to testing -->
    </CallTarget>
</Target>

但是,我可以研究如何允许将参数输入<条码> 。

最佳回答

MSBuild 目标是用来接收参数的。 相反,他们使用你为其确定的财产。

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

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

然而,一个共同的设想是,在不同的参数(即几个网站)下,多次援引目标。 在这种情况下,我使用MSBuildMSBuild的任务,并将参数作为财产:

<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>

$(MSBuild ProjectFullPath) is the fullpath of the current MSBuild script in cases You dos not wish to sent “Deploy” to another file.

问题回答

您只能以明确的方式在<代码>ItemGroup上签字。 甚至可以在项目上增加元数据。

<ItemGroup>
    <What Include="Dev">
        <How>With bugs</How>
    </What>
    <What Include="Test">
        <How>With tests</How>
    </What>
    <What Include="Chicken">
        <How>Deep fried</How>
    </What>
</ItemGroup>

<Target Name="Deploy">
    <Message Text="@(What), %(How)" />
</Target>

使用一个项目组作为标准数值@(什么),在指标内,参照每个项目的元数据。

它是一种在布道上做事的自然方式,例如,你可以在视力演播室生成的项目档案中发现任何地方的这种模式。

也许可以在国际会计准则理事会大厦里做得更好,但在安特,我将利用全球特性将信息从一个任务到另一个任务。 这是一种令人厌恶的解决办法,但我当时看不到更好的办法。 您应当能够在MSBuild中做到这一点,但铭记您需要使用http://msdn.microsoft.com/en-us/library/63ckb9s9.aspx” rel=“nofollow noreferer”CreateProperty。 积极分配财产的任务。

另一方面,执行C#(或VB)或一切任务非常容易。 也许这为你找到更好的解决办法。

    <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"/>




相关问题
热门标签