Использование AssemblyInfo для автоматического обновления нескольких файлов AssemblyInfo.cs

У меня есть несколько файлов 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.

Кто-нибудь знает, как заставить эту работу?


person Kieran Benton    schedule 22.09.2008    source источник


Ответы (2)


Попробуйте изменить @ на%, как показано ниже

<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

person evilhomer    schedule 22.09.2008
comment
Нет проблем, я раньше делал это для каждого цикла в NANT, в MSBuild он немного отличается, но он также во многих отношениях более мощный. Продолжайте в том же духе :-) - person evilhomer; 23.09.2008

В проекте мы используем «связанные» файлы. Обозреватель решений -> Добавить элемент Existin -> .. select_file .. -> arrow_on_left_of_add_button -> Добавить как ссылку

Тогда выбранный файл (на данный момент AssemblyInfo.cs) не копируется в директорию проекта, bud связывается только по указанному пути.

person TcKs    schedule 22.09.2008
comment
Это интересная идея, о которой я даже не догадывался! Могу попробовать, если не смогу найти решение через MSBuild. Было бы неплохо узнать, как перечислить ItemGroup для других целей. - person Kieran Benton; 22.09.2008
comment
Я тоже так делаю. Вы также можете включить файл .CS для конкретной сборки, который выглядит как обычный файл assemblyinfo.cs, но содержит биты, относящиеся к сборке. - person ; 22.09.2008