我有一个MSBuild脚本,它使用自定义任务从AssemblyInfo文件中提取版本信息:
<GetAssemblyInfo
AssemblyInfoFiles="@(WebProject->
'%(RootDir)%(Directory)Properties\AssemblyInfo.cs')">
<Output TaskParameter="AssemblyInfo" ItemName="AssemblyInfo"/>
</GetAssemblyInfo>
这会生成一组新项目,其中包含我需要的信息作为进一步的元数据。
此时,我不知道如何将元数据关联回源项WebProject
。从概念上讲,它们通过路径相互关联,由原始变换%(RootDir)%(Directory)Properties\AssemblyInfo.cs
表示。
我尝试使用MSBuild批处理语法的各种组合,但每一个似乎都比我想要的更远。
我很擅长使用MSBuild进行批处理,所以任何例子都会受到赞赏。
答案 0 :(得分:0)
我无法在一步中获得我想要的设备,但是这个解决方案确实产生了我需要的输出。
创建所有项目和程序集版本的交叉连接产品。另外包括AssemblyInfo文件所在的目录。
<ItemGroup>
<VersionedProject Include="@(WebProject)">
<Version>%(AssemblyInfo.AssemblyFileVersion)</Version>
<AssemblyInfoDir>
%(AssemblyInfo.RootDir)%(AssemblyInfo.Directory)
</AssemblyInfoDir>
</VersionedProject>
然后删除属性目录不是AssemblyInfo文件位置的所有项目。
<VersionedProject
Remove="@(VersionedProject)"
Condition="'%(RootDir)%(Directory)Properties\' != '%(AssemblyInfoDir)'"/>
</ItemGroup>
以下输出正确的项目名称和版本号列表。
<Message Text="%(VersionedProject.Filename): %(VersionedProject.Version)" />