вернуть свойства из цели, вызванной CallTarget в MSBuild - PullRequest
0 голосов
/ 12 апреля 2011

Я новичок в msbuild, но даже с Google я понятия не имею, как вернуть свойство из CallTarget в MSBuild (см. Ниже).Это невозможно или

   <Target Name="CreateDbStgExistsProp">
   <!-- See http://stackoverflow.com/questions/1373162/passing-property-group-value-from-one-msbuild-task-to-another why this workaround is needed -->
   <PropertyGroup>
    <db>$(dbStg)</db>
    <machine>$(dwhdbStgmachine)</machine>
   </PropertyGroup>
  </Target>

  <Target Name="CheckDbStgExists" DependsOnTargets="CreateDbStgExistsProp">
   <CallTarget Targets="DBExists"/>
   <!-- this should pass the Property DoesDbExist for further reference created in Target DBExists, but it does not seem to work --> 
   <Message Text="Test: $(DoesDbExist)"/> 
  </Target>

  <Target Name="DBExists"   >
    <MSBuild.ExtensionPack.Sql2008.Database TaskAction="CheckExists" MachineName="$(machine)" DatabaseItem="$(db)" LogExceptionStack="true">
    <Output TaskParameter="Exists" PropertyName="DoesExist"/>
   </MSBuild.ExtensionPack.Sql2008.Database>
   <Message Text="Database $(db) does NOT exists" Condition="!$(DoesExist)"/>
   <Message Text="Database $(db) does exist" Condition="$(DoesExist)"/>
   <PropertyGroup>
     <DoesDbExist>$(DoesExist)</DoesDbExist>
   </PropertyGroup>

 </Target>  

1 Ответ

0 голосов
/ 13 апреля 2011

Измените это:

<Target Name="CheckDbStgExists"
  DependsOnTargets="CreateDbStgExistsProp">
  <CallTarget Targets="DBExists" />

На это:

<Target Name="CheckDbStgExists"
  DependsOnTargets="CreateDbStgExistsProp;DBExists">

Когда цель выполняется с помощью CallTarget, любые созданные динамические свойства «публикуются» иначе, чем если бызапускается из-за DependsOnTargets.

...