2015-11-19 26 views
1

当我使用TFS Build(TFS 2013.4)构建网站时,我在Drop文件夹中获得了每个网站的BuildInfo.config文件。为控制台应用程序生成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?

+0

为什么要在一个控制台应用程序创建构建清单(BuildInfo.config文件)?通常,我们设置构建过程为web项目创建构建清单(BuildInfo.config文件),并在发布中包含此清单。 –

+0

我们在一个单独的文件夹中将控制台应用程序部署到网站。它由Windows Server计划任务执行。我使用PowerShell脚本通过比较构建信息知道这是否是包含网站的文件夹(例如,从下拉菜单文件夹和服务器比较'ProjectName')的网站部署和如果它是一个较新的版本标签。我想为控制台应用程序使用相同的设置。我可以看到它的用途是用于Visual Studio等,但它肯定可以从任何版本输出,而不仅仅是一个网站? – user917170

+0

我检测了两个控制台应用程序和Web应用程序,但事实证明控制台应用程序是不能够输出BuildInfo.config文件。 GenerateBuildInfoConfigFile仅适用于Web应用程序。 –

回答

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

通常,我们设置构建过程为web项目创建构建清单(BuildInfo.config文件),并将此清单包含在发布中。此清单包含有关用于创建特定构建的项目,源代码控制和构建系统的信息。这些信息可帮助Visual Studio在打开Web应用程序诊断日志以查看记录的事件后找到匹配的来源和符号。

Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets在应用程序中启用Application Insights部署标记。检查:http://blogs.msdn.com/b/visualstudioalm/archive/2013/11/14/implementing-deployment-markers-in-application-insights.aspx

+0

这有助于了解它的用途是,但我想稍微用它的东西不同 - 我已经添加了评论到您的评论我的问题。 – user917170

相关问题