Msbuild createproperty

时间:2014-01-09 11:32:16

标签: msbuild

我这样做了:

<Target Name="CreateProperties">                
    <GetAssemblyFileVersionTask strFilePathAssemblyInfo="$(AssemblyInfo)">
        <Output TaskParameter="strAssemblyFileVersion" PropertyName="strAssemblyFileVersion" />
    </GetAssemblyFileVersionTask>
    <Message Text="AssemblyFileVersion = $(strAssemblyFileVersion)" />

    <CreateProperty
      Value="$([System.Text.RegularExpressions.Regex]::Replace( $(strAssemblyFileVersion), '^(\d+)\.(.+)\.\d+$', '$1_$2' ) )">          
        <Output
            TaskParameter="Value"
            PropertyName="rev" />
    </CreateProperty>


    <CreateProperty
        Value="$(ProjName)">
        <Output
            TaskParameter="Value"
            PropertyName="proj" />
    </CreateProperty>
</Target>

当我运行msbuild时,我可以看到rev和proj在目标CreateProperties和同一个msbuild文件中的其他目标中都是活动的。

但是......当我在这个文件中使用另一个导入的msbuild文件时,就像它们不存在一样。专业人士是空的。知道为什么吗?

1 个答案:

答案 0 :(得分:3)

您必须将属性“传递”到“helper”proj文件。 (“SomeCommonLogic.proj”是我下面示例中的“帮助”文件)

注意我是如何通过下面示例中的“Properties”将属性从“outside”proj文件传递给“helper”proj文件。

  <Target Name="SomeCommonLogicTarget">
    <Message Text="    " />
    <Message Text="    " />
    <MSBuild Projects="..\..\MSBuildCommonLogic\SomeCommonLogic.proj" Targets="SomeTargetInTheHelperFile" Properties="Configuration=$(Configuration);RevisionNumber=$(SubVersionRevision)" />
  </Target>

此外,“帮助”文件像相对路径一样 NOT 您必须将任何相关文件转换为完整路径。

<ItemGroup>
  <WorkingCheckoutItemGroupForParameterPassing Include=".\MyFile.txt" />
</ItemGroup>
<CreateProperty Value="%(WorkingCheckoutItemGroupForParameterPassing.fullpath)">
  <!-- Use the .fullpath value to get the full path to push it into the xsl(document function)  -->
  <Output TaskParameter="Value" PropertyName="WorkingCheckoutFullPath" />
</CreateProperty>
<Message Text=" WorkingCheckoutFullPath = $(WorkingCheckoutFullPath)" />