Мы используем Team Foundation Server Team Build и добавили блок в цель AfterCompile
TFSBuild.proj, чтобы вызвать публикацию ClickOnce с нашим предпочтительным номером версии:
<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
Properties="PublishDir=$(OutDir)\myProjectPublish\;
ApplicationVersion=$(PublishApplicationVersion);
Configuration=$(Configuration);Platform=$(Platform)"
Targets="Publish" />
Переменная PublishApplicationVersion
создается пользовательской задачей MSBuild для использования номера набора изменений TFS, но вы можете использовать свою собственную пользовательскую задачу или существующее решение , чтобы получить версию номер из файла AssemblyInfo.
Теоретически это можно сделать в файле проекта (в любом случае это просто скрипт MSBuild), но я бы рекомендовал не развертывать его с компьютера разработчика.
Я уверен, что другие решения непрерывной интеграции (CI) могут справиться с этим аналогичным образом.
Редактировать: Извините, получил ваш вопрос задом наперед. Переход от номера версии ClickOnce к файлу AssemblyInfo должен быть выполнимым. Я уверен, что в Задачах сообщества MSBuild (ссылка выше) есть задача обновления файла AssemblyInfo, поэтому вам просто понадобится пользовательская задача для извлечения номера версии из XML-файла конфигурации ClickOnce.
Однако вы можете также рассмотреть возможность изменения в отчете об ошибках, чтобы включить также версию публикации ClickOnce:
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
Debug.WriteLine(System.Deployment.Application.ApplicationDeployment.
CurrentDeployment.CurrentVersion);
}