2011-11-11 20 views
0

我有一个使用自定义任务从程序集信息文件中提取的版本信息的脚本的MSBuild:如何将已转换批次的结果添加到原始项目集?

<GetAssemblyInfo 
    AssemblyInfoFiles="@(WebProject-> 
     '%(RootDir)%(Directory)Properties\AssemblyInfo.cs')"> 
    <Output TaskParameter="AssemblyInfo" ItemName="AssemblyInfo"/> 
</GetAssemblyInfo> 

这将产生一个新的一套包含我需要进一步的元数据信息项。

在这一点上,我不知道如何将元数据关联到源项目WebProject。从概念上讲,它们通过路径彼此相关,如原始变换%(RootDir)%(Directory)Properties\AssemblyInfo.cs所表达的。

我试过使用MSBuild批处理语法的各种组合,但每个人似乎都比我最想要的位置更远。

我很新来批量使用MSBuild,所以任何示例都表示赞赏。

回答

0

我一直无法获得我想要的设置,但此解决方案确实会生成我需要的输出。

创建所有项目和程序集版本的交叉连接产品。另外包括目录定位于集信息文件。

<ItemGroup> 
    <VersionedProject Include="@(WebProject)"> 
     <Version>%(AssemblyInfo.AssemblyFileVersion)</Version> 
     <AssemblyInfoDir> 
      %(AssemblyInfo.RootDir)%(AssemblyInfo.Directory) 
     </AssemblyInfoDir> 
    </VersionedProject> 

然后删除所有项目,其中属性目录不是集信息文件的位置。

<VersionedProject 
     Remove="@(VersionedProject)" 
     Condition="'%(RootDir)%(Directory)Properties\' != '%(AssemblyInfoDir)'"/> 
</ItemGroup> 

以下输出正确的项目名称和版本号列表。

<Message Text="%(VersionedProject.Filename): %(VersionedProject.Version)" /> 
相关问题