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

时间:2008-09-22 17:08:17

标签: msbuild continuous-integration teamcity

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

为了使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,因此它无法正常工作。

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

2 个答案:

答案 0 :(得分:16)

我们在项目中使用“链接”文件。 Solution Explorer - &gt;添加Existin项目 - &gt; .. select_file .. - &gt; arrow_on_left_of_add_button - &gt;添加为链接

然后,所选文件(现在为AssemblyInfo.cs)不会复制到项目的目标,而芽仅从指定路径链接。

答案 1 :(得分: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