Msbuild 使用AssemblyInfo自动更新多个AssemblyInfo.cs文件

Msbuild 使用AssemblyInfo自动更新多个AssemblyInfo.cs文件,msbuild,continuous-integration,teamcity,Msbuild,Continuous Integration,Teamcity,作为TeamCity的一部分,我在一个解决方案中自动构建了多个AssemblyInfo.cs文件作为许多项目的一部分 为了使msbuild脚本更易于维护,我希望能够将AssemblyInfo社区任务与ItemGroup结合使用,例如 <ItemGroup> <AllAssemblyInfos Include="..\**\AssemblyInfo.cs" /> </ItemGroup> <AssemblyInfo AssemblyTitle=

作为TeamCity的一部分,我在一个解决方案中自动构建了多个AssemblyInfo.cs文件作为许多项目的一部分

为了使msbuild脚本更易于维护,我希望能够将AssemblyInfo社区任务与ItemGroup结合使用,例如

<ItemGroup>
     <AllAssemblyInfos Include="..\**\AssemblyInfo.cs" />
</ItemGroup>

<AssemblyInfo AssemblyTitle="" AssemblyProduct="$(Product)" AssemblyCompany="$(Company)" AssemblyCopyright="$(Copyright)" 
                  ComVisible="false" CLSCompliant="false" CodeLanguage="CS" AssemblyDescription="$(Revision)$(BranchName)" 
                  AssemblyVersion="$(FullVersion)" AssemblyFileVersion="$(FullVersion)" OutputFile="@(AllAssemblyInfos)" />

这显然不起作用,因为OutputFile不能是引用的ItemGroup

有人知道如何做到这一点吗?

我们在项目中使用“链接”文件。 解决方案资源管理器->添加现有项目->。。选择_文件..->添加按钮->添加为链接的左箭头


然后所选文件(目前为AssemblyInfo.cs)不会复制到project的目录中,bud仅从指定路径链接。

请尝试将@更改为%,如下所示

<ItemGroup>
 <AllAssemblyInfos Include="..\**\AssemblyInfo.cs" />
</ItemGroup>

<AssemblyInfo AssemblyTitle="" AssemblyProduct="$(Product)" AssemblyCompany="$(Company)" AssemblyCopyright="$(Copyright)" 
                              ComVisible="false" CLSCompliant="false" CodeLanguage="CS" AssemblyDescription="$(Revision)$(BranchName)" 
                              AssemblyVersion="$(FullVersion)" AssemblyFileVersion="$(FullVersion)" OutputFile="%(AllAssemblyInfos)" />


这是一个我没想到的有趣想法!如果我无法通过MSBuild找到解决方案,我可能会尝试一下。了解如何为其他用途枚举ItemGroup也很好。我也这样做。您还可以包含一个特定于程序集的.CS文件,该文件看起来像您的平均assemblyinfo.CS文件,但包含特定于程序集的位。没问题,我以前在NANT中对每个循环都这样做,它在MSBuild中有点不同,但在许多方面也更强大。继续问好问题:-)