【问题标题】:Team Foundation Build (2008) minus the .sln files?Team Foundation Build (2008) 减去 .sln 文件?
【发布时间】:2010-12-20 10:28:29
【问题描述】:

在 tfs build 2008 中设置新的团队构建,您必须为构建定义选择一个 .sln 文件。

我已通读 Microsoft.TeamFoundation.Build.Targets,据我了解,团队构建所做的所有工作都是在 tfsbuild.proj 中即时将愚蠢的 .sln 格式转换为 msbuild,然后进行构建。所以你最终得到的是 tfsbuild.proj 调用 mysolution.sln 然后调用 myproject.csproj。

我希望 tfsproj 导入 myproject.csproj,覆盖一些目标,然后跳过整个 .sln=>msbuild 黑盒。

有人做过吗?什么是正确的目标可以覆盖干净地截断 .sln 混乱?我认为 CoreCompileConfiguration 需要被覆盖。

删除 .sln 功能会失去什么?

【问题讨论】:

    标签: .net tfs tfsbuild


    【解决方案1】:

    TFS 2008 可以构建解决方案项目。您只需在 SolutionsToBuild 属性中指定要构建的项目(例如 .csproj)文件,并确保要构建的配置和平台与您的项目匹配。

    这里有来龙去脉的讨论: How to build a .csproj using TFS 2008 and MSBuild

    【讨论】:

      【解决方案2】:

      这是我们在项目中使用的东西。它并不完美,但可以解决问题。

      <Target Name="CoreCompile"
          DependsOnTargets="$(_CoreCompileDependsOn)"
          Outputs="@(CompilationOutputs)">
      
        <MakeDir Directories="$(BinariesRoot)" Condition="!Exists('$(BinariesRoot)')" />
      
        <MSBuild Projects="$(SolutionRoot)\$(SrcBranch)\WholeProject.proj"
                   StopOnFirstFailure="$(StopOnFirstFailure)">
          <Output TaskParameter="TargetOutputs" ItemName="CompilationOutputs" />
        </MSBuild>
      </Target>
      

      WholeProject.proj 是在开发机器构建和构建机器上使用的文件。

      我现在不确定为什么必须覆盖 CoreCompile,很可能是因为原来的总是寻找某个属性并期望它存在并包含有效的 .sln 文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多