English 中文(简体)
Team Foundation Build (2008) minus the .sln files?
原标题:

Setting up a new team build in tfs build 2008, you re forced to select a .sln file for your build definition.

I ve read through Microsoft.TeamFoundation.Build.Targets, and from what I understand, all team build does is convert the silly .sln format to msbuild in tfsbuild.proj on-the-fly, and then build that. So what you end up with is tfsbuild.proj calls mysolution.sln which then calls myproject.csproj.

What I would prefer would be to have tfsproj import myproject.csproj, override a few targets, and skip the whole .sln=>msbuild black box.

Has anyone done this? what are the right targets to override to cleanly amputate the .sln mess? I m thinking CoreCompileConfiguration will need to be overridden.

What would I be losing by cutting out the .sln functionality?

最佳回答

TFS 2008 can build solutions or projects. You just need to specify the project (e.g. .csproj) files to build in the SolutionsToBuild property and make sure the configurations and platforms to build match up with your project(s).

There s a discussion of the ins and outs here: How to build a .csproj using TFS 2008 and MSBuild

问题回答

Here is something we use in out project. It is not perfect, but does the trick.

<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>

the WholeProject.proj is the file used on developer machine builds and on the build machine.

I m not sure now why the CoreCompile must be overridden, most probably because the original one always looks for some property and expects it exists and contains valid .sln file





相关问题
Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How do I compare two decimals to 10 decimal places?

I m using decimal type (.net), and I want to see if two numbers are equal. But I only want to be accurate to 10 decimal places. For example take these three numbers. I want them all to be equal. 0....

Exception practices when creating a SynchronizationContext?

I m creating an STA version of the SynchronizationContext for use in Windows Workflow 4.0. I m wondering what to do about exceptions when Post-ing callbacks. The SynchronizationContext can be used ...

Show running instance in single instance application

I am building an application with C#. I managed to turn this into a single instance application by checking if the same process is already running. Process[] pname = Process.GetProcessesByName("...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签