用TFS 2013替换TFSBuild.proj文件

时间:2015-02-09 16:37:36

标签: c# tfs2013

我正在尝试将我们的TFS服务器升级到2013年。我们目前正在使用2012年,但我们也一直坚持使用升级模板来度过亲爱的生活。在2013年,我们想要转到默认模板并尽可能少地修改它。

当您考虑默认模板要求您添加要构建的每个.csproj或.sln文件时,会出现此问题。关于tfsbuild.proj文件的好处是你不仅可以在服务器上构建,而且你可以通过将tfsbuild.proj文件传递给msbuild.exe来检查整个分支并在命令行上在本地构建所有内容。 。此外,开发人员可以拥有tfsbuild.proj文件而无需具有写入权限来更改构建定义。

TFS 2013中TFSBuild.proj文件的替代品是什么?

我的要求是: 清理构建配置。 可以在本地轻松构建所有内容。

TFS 2013中此问题的解决方案是什么?

1 个答案:

答案 0 :(得分:2)

创建TFS构建定义使用的包装器MSBuild .proj。我们将此技术用于NuGet包恢复,但它同样可以用于将多个解决方案文件链接在一起。

对于本地构建,您可以使用带有.proj包装器的msbuild作为目标(我只是直接构建.sln文件,因为只有1)。

.proj文件(不建议你应该使用这个确切的.proj文件,只是一个例子)

     

<PropertyGroup>
  <OutDir Condition=" '$(OutDir)'=='' ">$(MSBuildThisFileDirectory)bin\</OutDir>
  <Configuration Condition=" '$(Configuration)'=='' ">Release</Configuration>
  <SourceHome Condition=" '$(SourceHome)'=='' ">$(MSBuildThisFileDirectory)</SourceHome>
  <ToolsHome Condition=" '$(ToolsHome)'=='' ">$(MSBuildThisFileDirectory)tools\</ToolsHome>
</PropertyGroup>

<ItemGroup>
  <Solution Include="$(SourceHome)*.sln">
    <AdditionalProperties>OutDir=$(OutDir);Configuration=$(Configuration)</AdditionalProperties>
  </Solution>
</ItemGroup>

<Target Name="RestorePackages">
  <Exec Command="&quot;$(ToolsHome)NuGet\NuGet.exe&quot; restore &quot;%(Solution.Identity)&quot;" />
</Target>

<Target Name="Clean">
  <MSBuild Targets="Clean"
           Projects="@(Solution)" />
</Target>

<Target Name="Build" DependsOnTargets="RestorePackages">
  <MSBuild Targets="Build"
           Projects="@(Solution)" />
</Target>

<Target Name="Rebuild" DependsOnTargets="RestorePackages">
  <MSBuild Targets="Rebuild"
           Projects="@(Solution)" />
</Target>