如何动态定义属性并将它们传递给msbuild中的另一个目标?

Grz*_*nio 4 .net c# msbuild properties

我试图以Ant方式重用任务:

   <Target Name="Release">
        <Message Text="Env: $(Env)"/>
   </Target>
   <Target Name="ReleaseIntegration">
    <CreateProperty Value="Development">
      <Output TaskParameter="Value" PropertyName="Env" />
    </CreateProperty>
    <Message Text="Env: $(Env)"/>
    <CallTarget Targets="Release"/>
  </Target>
Run Code Online (Sandbox Code Playgroud)

我得到:

Env: Development
Env: 
Run Code Online (Sandbox Code Playgroud)

有关如何将此属性转换为Release目标的任何想法?

Jul*_*rau 7

动态项和属性存在错误:

问题与在目标执行实际完成之前无法访问目标中创建的项和属性有关

(更多信息在这里).

解决方法很简单:使用一个单独的目标来创建属性.

<Target Name="Release">
  <Message Text="Env: $(Env)"/>
</Target>

<Target Name="CreateProperty">
  <CreateProperty Value="Development">
    <Output TaskParameter="Value" PropertyName="Env" />
  </CreateProperty>      
</Target>

<Target Name="ReleaseIntegration" DependsOnTargets="CreateProperty">
  <Message Text="Env: $(Env)"/>
  <CallTarget Targets="Release"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

你会得到:

Env: Development
Env: Development
Run Code Online (Sandbox Code Playgroud)