Использование AssemblyInfo для автоматического обновления нескольких файлов AssemblyInfo.cs
-
02-07-2019 - |
Вопрос
У меня есть несколько файлов 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.
Кто-нибудь знает, как заставить это работать?
Решение
Попробуйте изменить @ на %, как показано ниже.
<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.
Посмотрите и эту статью, должно помочь.
Другие советы
Мы используем «связанные» файлы в проекте.Обозреватель решений -> Добавить существующий элемент -> ..выберите файл ..-> стрелка_on_left_of_add_button -> Добавить как ссылку
Тогда выбранный файл (на данный момент AssemblyInfo.cs) не копируется в каталог проекта, а связывается только с указанным путем.