2015-11-19 4 views
1

Когда я создаю сайты с использованием TFS Build (TFS 2013.4), я получаю файл BuildInfo.config с каждым веб-сайтом в папке с выпадающими списками.Сгенерировать BuildInfo.config для Console App

Однако я не могу создать такой же файл для консольного приложения. Я добавил такие вещи, как

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\BuildInfo\Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets" /> 

И

<!-- Build info --> 
    <PropertyGroup> 
    <!-- Generate the BuildInfo.config file --> 
    <GenerateBuildInfoConfigFile>True</GenerateBuildInfoConfigFile> 
    <!-- Include server name in build info --> 
    <IncludeServerNameInBuildInfo>True</IncludeServerNameInBuildInfo> 
    <!-- Include the symbols path so Visual Studio can find the matching deployed code when you start debugging. --> 
    <!--<BuildSymbolStorePath> 
     <path to="" symbols=""> 
    </BuildSymbolStorePath>--> 
    </PropertyGroup> 

Однако файл не отображается. Может ли кто-нибудь сказать мне, что необходимо для создания BuildInfo.config?

+0

Почему вы хотите создать манифест сборки (файл BuildInfo.config) в консольном приложении? Обычно мы создаем процесс сборки для создания манифеста сборки (файл BuildInfo.config) для веб-проекта и включаем этот манифест с выпуском. –

+0

Развертывание консольного приложения в отдельной папке на веб-сайте. Он выполняется запланированной задачей Windows Server. Я использую сценарий PowerShell для развертывания веб-сайта, сравнивая информацию о сборке, чтобы узнать, является ли она папкой, содержащей этот веб-сайт (например, сравнение «Имя_проекта» из папки сбрасывания и сервера), и если это новый ярлык сборки. Я хочу использовать ту же настройку для консольного приложения. Я вижу, что это предназначено для Visual Studio и т. Д., Но, безусловно, оно может быть выведено из любой сборки, а не только из веб-сайта? – user917170

+0

Я тестировал как консольное приложение, так и веб-приложение, но доказанное консольное приложение не может выводить файл BuildInfo.config. GenerateBuildInfoConfigFile работает только в веб-приложениях. –

ответ

4

BuildInfo.config генерирует только проекты WebApplication, но с небольшой настройкой в ​​ваши .proj-файлы вы можете включить BuildInfo.config для любого проекта, в котором вы нуждаетесь. Мы создаем его для всех наших консольных приложений, так как он содержит ценную информацию о сборке и фиксации.

В PropertyGroup добавить:

<GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile> 

Я обычно только добавить его в конфигурацию, которую я использую, чтобы выпустить под. Это приводит к тому, что файл создается только при выпуске продукта, а не для отладочных сборников. Он живет внутри этого PropertyGroup в наших .proj файлов:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseBuild|AnyCPU'"> 

Кроме того, необходимо PropertyGroup указать VSToolsPath и WebProjectOutputDir, если эти свойства не содержат каких-либо значений.

<PropertyGroup> 
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
<WebProjectOutputDir Condition="'$(WebProjectOutputDir)' == ''">$(OutputPath)</WebProjectOutputDir></PropertyGroup> 

При добавлении этого файла следует создать BuildInfo.config.

Если он все еще не сгенерирован, добавьте следующий импорт. Возможно, сначала проверьте, не был ли импорт уже выполнен. Если вы импортируете его дважды, во время сборки вы получите предупреждение.

<Import Condition="'$(Configuration)' == 'ReleaseBuild'" Project="$(VSToolsPath)\BuildInfo\Microsoft.VisualStudio.ReleaseManagement.BuildInfo.Targets" /> 

Строка будет по умолчанию содержать имя файла как [$ AssemblyName] .BuildInfo.config. Если вы хотите быть BuildInfo.config (чтобы AppInsights забрать его ...), переопределить свойство BuildInfoFileName в вашем проекте или когда вы Сложение:

<BuildInfoFileName>BuildInfo.config</BuildInfoFileName> 

или

/p:BuildInfoFileName=BuildInfo.config 

Также обратите внимание на Условие, которое я импортирую только при создании конкретной конфигурации, поскольку целевая функция ReleaseManagement не существует на машинах разработчиков ...

Это должно поставить вас на ваш путь ...

+0

Чтобы создать buildInfo.config, я добавил все упомянутое здесь, за исключением того, что '' мне не было нужно. – BrettJ

2

Обычно мы создаем процесс сборки для создания манифеста сборки (файл BuildInfo.config) для веб-проекта и включаем этот манифест с выпуском. Этот манифест содержит информацию о проекте, контроле источника и системе сборки, которые использовались для создания конкретной сборки. Эта информация помогает Visual Studio найти соответствующий источник и символы после открытия журнала диагностики веб-приложений для просмотра записанных событий.

Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets - включить маркеры развертывания Application Insights в приложении. Check: http://blogs.msdn.com/b/visualstudioalm/archive/2013/11/14/implementing-deployment-markers-in-application-insights.aspx

+0

Это полезно для понимания того, что предназначено для использования, но я хочу использовать его для чего-то слегка другой - я добавил комментарий к вашему комментарию к моему вопросу. – user917170