2008-09-22 32 views
8

我有几个AssemblyInfo.cs文件作为我作为TeamCity的一部分自动构建的单个解决方案中的许多项目的一部分。使用AssemblyInfo自动更新多个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,所以无法工作。

任何人都知道如何使这项工作?

回答

9

尝试改变@到%如下

<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)" /> 

这为在AllAssemblyInfos每个条目的电话。

看看这篇文章也应该帮忙。

http://blogs.msdn.com/aaronhallberg/archive/2006/09/05/msbuild-batching-generating-a-cross-product.aspx

16

我们在项目中使用“链接”文件。 解决方案管理器 - >添加Existin项目 - > .. select_file .. - > arrow_on_left_of_add_button - >添加链接

然后选定的文件不会被复制到项目的direcotry(现在的AssemblyInfo.cs),芽只从指定的路径链接。

+0

这是一个有趣的想法,我没有想到!如果我无法通过MSBuild找到解决方案,可以试一试。了解如何枚举其他用途的ItemGroup也不错。 – 2008-09-22 17:16:20

+0

我也这样做。您还可以包含特定于汇编的.CS文件,该文件看起来像您的平均assemblyinfo.cs文件,但包含程序集特定的位。 – Will 2008-09-22 17:51:06