为控制台应用程序生成 BuildInfo.config
Generate BuildInfo.config for Console App
当我使用 TFS Build (TFS 2013.4) 构建网站时,我在拖放文件夹中得到一个包含每个网站的 BuildInfo.config 文件。
但是我似乎无法为控制台应用程序生成相同的文件。我添加了
之类的东西
<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 需要什么?
通常,我们设置构建过程来为 Web 项目创建构建清单(BuildInfo.config 文件),并将此清单包含在发布中。此清单包含有关用于创建特定构建的项目、源代码管理和构建系统的信息。在我们打开 Web 应用程序诊断日志查看记录的事件后,此信息有助于 Visual Studio 找到匹配的源和符号。
Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets 是在应用程序中启用 Application Insights 部署标记。检查:http://blogs.msdn.com/b/visualstudioalm/archive/2013/11/14/implementing-deployment-markers-in-application-insights.aspx
BuildInfo.config 仅为 WebApplication 项目生成,但通过对 .proj 文件进行小的调整,您可以为任何需要它的项目包含 BuildInfo.config。我们为所有控制台应用程序生成它,因为它包含有关构建和提交的宝贵信息。
在 PropertyGroup 中添加:
<GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile>
我一般只加到我用来release下的配置里。这导致文件仅在我们发布产品时生成,而不是用于调试版本。它位于我们的 .proj 文件中的这个 PropertyGroup 中:
<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。也许只是先检查导入是否尚未完成。如果你导入它两次,你会在构建过程中得到一个警告。
<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 目标在开发人员机器上不存在...
这应该让您踏上前进的道路...
当我使用 TFS Build (TFS 2013.4) 构建网站时,我在拖放文件夹中得到一个包含每个网站的 BuildInfo.config 文件。
但是我似乎无法为控制台应用程序生成相同的文件。我添加了
之类的东西 <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 需要什么?
通常,我们设置构建过程来为 Web 项目创建构建清单(BuildInfo.config 文件),并将此清单包含在发布中。此清单包含有关用于创建特定构建的项目、源代码管理和构建系统的信息。在我们打开 Web 应用程序诊断日志查看记录的事件后,此信息有助于 Visual Studio 找到匹配的源和符号。
Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets 是在应用程序中启用 Application Insights 部署标记。检查:http://blogs.msdn.com/b/visualstudioalm/archive/2013/11/14/implementing-deployment-markers-in-application-insights.aspx
BuildInfo.config 仅为 WebApplication 项目生成,但通过对 .proj 文件进行小的调整,您可以为任何需要它的项目包含 BuildInfo.config。我们为所有控制台应用程序生成它,因为它包含有关构建和提交的宝贵信息。
在 PropertyGroup 中添加:
<GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile>
我一般只加到我用来release下的配置里。这导致文件仅在我们发布产品时生成,而不是用于调试版本。它位于我们的 .proj 文件中的这个 PropertyGroup 中:
<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。也许只是先检查导入是否尚未完成。如果你导入它两次,你会在构建过程中得到一个警告。
<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 目标在开发人员机器上不存在...
这应该让您踏上前进的道路...