2009-01-23 8 views
2

Je rencontre un problème étrange avec MSBuild, et je pense qu'il pourrait s'agir simplement d'un problème d'environnement. Nous utilisons MSBuild pour construire un certain nombre de solutions séparées, et cela semble fonctionner sur ma machine. Mais sur quelques autres machines, ça ne marche pas.MSBuild task - La construction échoue car une solution est en cours de développement au lieu de déboguer

J'ai repéré le problème, et il semble que l'une des solutions (ou l'un des projets de cette solution) soit en construction dans "Release" lorsque tout le reste est en cours de construction dans "Debug". Cela entraîne l'absence de certaines références, ce qui empêche la construction de la solution en cours de création. Je veux que toutes les solutions soient construites dans "Debug". Dans ce qui suit est notre fichier TFSBuild.proj actuel - qu'est-ce que nous faisons mal?

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <!-- TO EDIT BUILD TYPE DEFINITION 

     To edit the build type, you will need to edit 
     this file which was generated by the Create New 
     Build Type wizard. This file is under source 
     control and needs to be checked out before 
     making any changes. 

     The file is available at - 

      $/{TeamProjectName}/TeamBuildTypes/{BuildTypeName} 

     where you will need to replace TeamProjectName 
     and BuildTypeName with your Team Project and 
     Build Type name that you created 

     Checkout the file 

      1. Open Source Control Explorer by selecting 
      View -> Other Windows -> Source Control Explorer 

      2. Ensure that your current workspace has a mapping for 
      the $/{TeamProjectName}/TeamBuildTypes folder and 
      that you have done a "Get Latest Version" on that 
      folder 

      3. Browse through the folders to 
      {TeamProjectName}->TeamBuildTypes->{BuildTypeName} folder 

      4. From the list of files available in this folder, right 
      click on TfsBuild.Proj. Select 'Check Out For Edit...' 

     Make the required changes to the file and save 

     Checkin the file 
      1. Right click on the TfsBuild.Proj file 
      selected in Step 3 above and select 
      'Checkin Pending Changes' 

      2. Use the pending checkin dialog to save your 
      changes to the source control 

     Once the file is checked in with the 
     modifications, all future builds using this 
     build type will use the modified settings 
    --> 

    <!-- Do not edit this --> 
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\TeamBuild\Microsoft.TeamFoundation.Build.targets" /> 
    <ProjectExtensions> 

     <!-- DESCRIPTION 
      The description is associated with a build 
      type. Edit the value for making changes. 
     --> 
     <Description> 
     </Description> 

     <!-- BUILD MACHINE 
      Name of the machine which will be used to 
      build the solutions selected. 
     --> 
     <BuildMachine>xxxx-test</BuildMachine> 
    </ProjectExtensions> 
    <PropertyGroup> 

     <!-- TEAM PROJECT 
      The team project which will be built using 
      this build type. 
     --> 
     <TeamProject>CFAST</TeamProject> 

     <!-- BUILD DIRECTORY 
      The directory on the build machine that will 
      be used to build the selected solutions. The 
      directory must be a local path on the build 
      machine (e.g. c:\build). 
     --> 
     <BuildDirectoryPath>C:\Build\brtcn</BuildDirectoryPath> 
     <SolutionRoot Condition=" '$(IsDesktopBuild)'!='true' " 
     >$(BuildDirectoryPath)\w</SolutionRoot> 

     <!-- DROP LOCATION 
      The location to drop (copy) the built binaries 
      and the log files after the build is complete. 
      This location has to be a valid UNC path of 
      the form \\Server\Share. The build machine 
      service account and application tier account 
      need to have read write permission on this 
      share. 
     --> 
     <DropLocation>\\my-files\xx-files\Build Drop\xx</DropLocation> 

     <!-- TESTING 
      Set this flag to enable/disable running tests 
      as a post build step. 
     --> 
     <RunTest>false</RunTest> 
     <!-- WorkItemFieldValues 
      Add/edit key value pairs to set values for 
      fields in the work item created during the 
      build process. Please make sure the field 
      names are valid for the work item type being 
      used. 
     --> 
     <WorkItemFieldValues>Symptom=build break;Steps To Reproduce=Start the build using Team Build</WorkItemFieldValues> 
     <!-- CODE ANALYSIS 
      To change CodeAnalysis behavior edit this 
      value. Valid values for this can be 
      Default,Always or Never. 

      Default - To perform code analysis as per the individual project settings 
      Always - To always perform code analysis irrespective of project settings 
      Never - To never perform code analysis irrespective of project settings 
     --> 
     <RunCodeAnalysis>Never</RunCodeAnalysis> 

     <!-- UPDATE ASSOCIATED WORK ITEMS 
     Set this flag to enable/disable updating associated workitems on a successful build 
     --> 
     <UpdateAssociatedWorkItems>true</UpdateAssociatedWorkItems> 
     <!-- Title for the work item created on build failure --> 
     <WorkItemTitle>Build failure in build:</WorkItemTitle> 
     <!-- Description for the work item created on build failure --> 
     <DescriptionText>This work item was created by Team Build on a build failure.</DescriptionText> 
     <!-- Text pointing to log file location on build failure --> 
     <BuildlogText>The build log file is at:</BuildlogText> 
     <!-- Text pointing to error/warnings file location on build failure --> 
     <ErrorWarningLogText>The errors/warnings log file is at:</ErrorWarningLogText> 
    </PropertyGroup> 
    <ItemGroup> 
     <!-- SOLUTIONS 
      The path of the solutions to build. To 
      add/delete solutions, edit this value. For 
      example, to add a solution MySolution.sln, 
      add following line - 
      <SolutionToBuild Include="C:\Project Files\path\MySolution.sln" /> 

      To change the order in which the solutions are build, modify the order in 
      which the solutions appear below. 
     --> 
     <SolutionToBuild Include="..\..\xx1\xxx\Solution\xxx Solution.sln" /> 
     <SolutionToBuild Include="..\..\xx2\Build Solutions\xx xx xx Build\Data Port Common Build.sln" /> 
     <SolutionToBuild Include="..\..\xx3\Build Solutions\xxx Build\xxx Build.sln" /> 
    </ItemGroup> 
    <ItemGroup> 
     <!-- CONFIGURATIONS 
      The list of configurations to build. To 
      add/delete configurations, edit this value. 
      For example, to add a new configuration, add 
      following lines - 
       <ConfigurationToBuild Include="Debug|x86"> 
        <FlavorToBuild>Debug</FlavorToBuild> 
        <PlatformToBuild>x86</PlatformToBuild> 
       </ConfigurationToBuild> 

      The Include attribute value should be unique 
      for each ConfigurationToBuild node. 
     --> 
     <ConfigurationToBuild Include="Debug|Any CPU"> 
      <FlavorToBuild>Debug</FlavorToBuild> 
      <PlatformToBuild>Any CPU</PlatformToBuild> 
     </ConfigurationToBuild> 
    </ItemGroup> 
    <ItemGroup> 
     <!-- TEST ARGUMENTS 
      If the RunTest is set to true then the 
      following test arguments will be used to run 
      tests. 

      To add/delete new testlist or to choose a 
      metadata file (.vsmdi) file, edit this 
      value. For e.g. to run BVT1 and BVT2 type 
      tests mentioned in the Helloworld.vsmdi 
      file, add the following - 

      <MetaDataFile Include="C:\Project Files\HelloWorld\HelloWorld.vsmdi"> 
       <TestList>BVT1;BVT2</TestList> 
      </MetaDataFile> 

      Where BVT1 and BVT2 are valid test types 
      defined in the HelloWorld.vsmdi file. 

       MetaDataFile - Full path to test metadata file. 
       TestList - The test list in the selected metadata file to run. 

      Please note that you need to specify the 
      vsmdi file relative to $(SolutionRoot) 
     --> 
     <MetaDataFile Include=" "> 
      <TestList> </TestList> 
     </MetaDataFile> 
    </ItemGroup> 
    <ItemGroup> 
     <!-- ADDITIONAL REFERENCE PATH 
      The list of additional reference paths to use 
      while resolving references. 

      For example, 
       <AdditionalReferencePath Include="C:\MyFolder\" /> 
       <AdditionalReferencePath Include="C:\MyFolder2\" /> 
     --> 
     <AdditionalReferencePath Include="..\..\xxxx\Reference Files" /> 
     <AdditionalReferencePath Include="..\..\xxxx\Build Support\SomeCoolLibrary" /> 
     <AdditionalReferencePath Include="..\..\xxxx1.1\Reference Files " /> 
    </ItemGroup> 
</Project> 

Répondre

1

Assurez-vous que tous vos scripts de compilation ont cette section:

<ConfigurationToBuild Include="Debug|Any CPU"> 
    <FlavorToBuild>Debug</FlavorToBuild> 
    <PlatformToBuild>Any CPU</PlatformToBuild> 
</ConfigurationToBuild> 

et qu'il est réglé sur "Debug".

+0

Cette section doit-elle être dans le même "ItemGroup" que les instructions "SolutionToBuild"? – leftend

0

Voici un échantillon de notre fichier de construction qui oblige la construction à effectuer dans la version ou le mode débogage <

MSBuild Projects="$(RootPath)\Source\Website.csproj" 
       Targets="ResolveReferences;_CopyWebApplication" Properties="Configuration=$(BuildConfiguration);WebProjectOutputDir=$(DeploymentFolder);OutDir=$(DeploymentFolder)\bin\" /> 

Configuration = $ (BuildConfiguration) est la clé dans l'exemple ci-dessus. Remplacez le $ BuildConfiguration avec votre environnement de construction ou fournissez-le à partir de la ligne de commande (ce que nous faisons). Cela forcera la construction dans le mode que vous voulez. J'espère que cela t'aides.