2010-04-27 5 views
9

J'ai migré une solution VS2008 ASP.NET MVC vers VS2010/MVC2/.NET 4.0 La solution se construit localement et tous les tests unitaires passent.Échec de construction - Solution VS2010 sur TFS2008

Notre serveur TFS est toujours TFS2008 et je n'arrive pas à faire passer le build CI.

Les projets sont tous construits avec succès, l'unité teste tous les tests et réussit mais l'exécution des tests échoue.

J'ai suivi this blog post sur comment faire fonctionner la construction et je suis presque arrivé.

peigner le fichier journal des défaillances j'ai trouvé ce qui suit:

Test Run Completed. 
Passed 1101 
------------ 
Total 1101 
Results file: C:\Documents and Settings\apptemetrybuild\Local Settings\Temp\Client Portal 3\CI\TestResults\apptemetrybuild_ATT15DEV01 2010-04-27 09_09_59_Any CPU_Release.trx 
Test Settings: Default Test Settings 
Waiting to publish... 
Publishing results of test run [email protected] 2010-04-27 09:09:59_Any CPU_Release to http://att15tfs01:8080/... 
.....Publish completed successfully. 
Command: 
D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe /nologo /searchpathroot:"C:\Documents and Settings\apptemetrybuild\Local Settings\Temp\Client Portal 3\CI\Binaries\Release" /resultsfileroot:"C:\Documents and Settings\apptemetrybuild\Local Settings\Temp\Client Portal 3\CI\TestResults" /testcontainer:"C:\Documents and Settings\apptemetrybuild\Local Settings\Temp\Client Portal 3\CI\Binaries\Release\\Attenda.Stargate.Security.Tests.dll" /publish:"http://att15tfs01:8080/" /publishbuild:"vstfs:///Build/Build/149" /teamproject:"Client Portal 3" /platform:"Any CPU" /flavor:"Release" 
The "TestToolsTask" task is using "MSTest.exe" from "D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe". 
Loading C:\Documents and Settings\apptemetrybuild\Local Settings\Temp\Client Portal 3\CI\Binaries\Release\\Attenda.Stargate.Security.Tests.dll... 
C:\Documents and Settings\apptemetrybuild\Local Settings\Temp\Client Portal 3\CI\Binaries\Release\\Attenda.Stargate.Security.Tests.dll 
Could not load file or assembly 'file:///C:\Documents and Settings\apptemetrybuild\Local Settings\Temp\Client Portal 3\CI\Binaries\Release\Attenda.Stargate.Security.Tests.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded. MSBUILD : warning MSB6006: "MSTest.exe" exited with code 1. [C:\Documents and Settings\apptemetrybuild\Local Settings\Temp\Client Portal 3\CI\BuildType\TFSBuild.proj] 
The previous error was converted to a warning because the task was called with ContinueOnError=true. 
Build continuing because "ContinueOnError" on the task "TestToolsTask" is set to "true". 
Done executing task "TestToolsTask" -- FAILED. 

On dirait qu'il essaie d'utiliser l'outil MSTest 2008, même si je l'ai indiqué ToolsVersion = « 4.0 » dans le TFSBuild.proj et changé le MSBuildPath dans le TfsBuildService.exe.config sur le serveur de construction.

Est-ce que quelqu'un peut me diriger dans la bonne direction pour que ça se passe bien?

Un grand merci, Nick

EDIT: Ajout de fichier TFSBuild.proj

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 
    <!-- Do not edit this --> 
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" /> 
    <ProjectExtensions> 
    <!-- Team Foundation Build Version - DO NOT CHANGE --> 
    <ProjectFileVersion>3</ProjectFileVersion> 
    <Description></Description> 
    <BuildMachine>ATT15DEV01</BuildMachine> 
    </ProjectExtensions> 

    <PropertyGroup> 
    <TeamProject>Client Portal 3</TeamProject> 
    <BuildDirectoryPath>C:\Documents and Settings\nfoster\Local Settings\Temp\Client Portal 3\CI</BuildDirectoryPath> 
    <DropLocation>\\att15dev01\Builds\Client Portal 3</DropLocation> 
    <RunTest>true</RunTest> 
    <RunCodeAnalysis>Never</RunCodeAnalysis> 
    <WorkItemType>Bug</WorkItemType> 
    <WorkItemFieldValues>System.Description=Start the build using Team Build</WorkItemFieldValues> 
    <WorkItemTitle>Build failure in build:</WorkItemTitle> 
    <DescriptionText>This work item was created by Team Build on a build failure.</DescriptionText> 
    <BuildlogText>The build log file is at:</BuildlogText> 
    <ErrorWarningLogText>The errors/warnings log file is at:</ErrorWarningLogText> 
    <UpdateAssociatedWorkItems>true</UpdateAssociatedWorkItems> 
    <AdditionalVCOverrides></AdditionalVCOverrides> 
    <CustomPropertiesForClean></CustomPropertiesForClean> 
    <CustomPropertiesForBuild></CustomPropertiesForBuild> 
    </PropertyGroup> 

    <ItemGroup> 
    <!-- SOLUTIONS --> 
    <SolutionToBuild Include="$(BuildProjectFolderPath)/../../Trunk/Client Portal 3 CI Build.sln"> 
     <Targets></Targets> 
     <Properties></Properties> 
    </SolutionToBuild> 
    </ItemGroup> 

    <ItemGroup> 
    <!-- CONFIGURATIONS --> 
    <ConfigurationToBuild Include="Release|Any CPU"> 
     <FlavorToBuild>Release</FlavorToBuild> 
     <PlatformToBuild>Any CPU</PlatformToBuild> 
    </ConfigurationToBuild> 
    </ItemGroup> 

    <ItemGroup> 
    <!-- TEST ARGUMENTS --> 
    <TestContainer Include="$(OutDir)\%2aTests.dll" /> 
    </ItemGroup> 

    <PropertyGroup> 
    <!-- TEST ARGUMENTS --> 
    <TestToolsTaskToolPath>C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe</TestToolsTaskToolPath> 
    </PropertyGroup> 

    <ItemGroup> 
    <!-- ADDITIONAL REFERENCE PATH --> 
    </ItemGroup> 

    <Target Name="AfterTest"> 
    <GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
         BuildUri="$(BuildUri)" 
         Condition=" '$(IsDesktopBuild)' != 'true' "> 
     <Output TaskParameter="TestSuccess" PropertyName="TestSuccess"/> 
    </GetBuildProperties> 
    <SetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
         BuildUri="$(BuildUri)" 
         CompilationStatus="Failed" 
         Condition=" '$(IsDesktopBuild)' != 'true' and '$(TestSuccess)' != 'true' "> 
    </SetBuildProperties> 
    </Target> 

</Project> 

Répondre

1

je pense que vous devez avoir la bonne version de MSTest installé sur votre serveur CI pour que cela fonctionne.

Si vous avez déjà la bonne version de MSTest assurez-vous que votre projet de test référence Microsoft.VisualStudio.QualityTools.UnitTestFramework v10.0.0.0

Pour déterminer le chemin MSTest, tâche TestToolsTask:

  • vérifie la version de l'assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework référencé par le projet de test
  • Obtenez le installDir de ma Visual studio tching la version en regardant dans le registre dans HKEY_LOCAL_MACHINE \ Software \ Microsoft \ VisualStudio \ $ (VERSION) .0. Si la clé n'existe pas, elle prendra le chemin de la version par défaut (9.0 pour tfs2008)

Si votre projet de test référence la version 10 et si Visual Studio 2010 est installé, MSTest doit être appelé automatiquement.


Si vous avez la version TeamBuild 3 installé (fichier C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ TeamBuild \ Microsoft.TeamFoundation.Build.targets ont la propriété TeamBuildVersion set à 3) vous peut remplacer la propriété MSBuild TestToolsTaskToolPath de la tâche TestToolsTask à la nouvelle version de MSTest.

<PropertyGroup> 
    <TestToolsTaskToolPath>C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe</TestToolsTaskToolPath> 
</PropertyGroup> 

Vous devez également vérifier que la propriété ProjectFileVersion, dans votre tfsbuild.proj est supérieur à 2.

<ProjectExtensions> 
    ... 
    <ProjectFileVersion>3</ProjectFileVersion> 
    ... 
</ProjectExtensions> 
+0

Je VS2008 et VS2010 installé sur le serveur de construction. Où puis-je spécifier quelle version de MSTest utiliser? – Nick

+0

Essayez de remplacer la propriété TestToolsTaskToolPath dans votre fichier tfsbuild.proj par le chemin d'accès à la nouvelle version de MSTest. –

+0

Ok, où cela est-il ajouté dans le fichier proj? La plupart des résultats de Google semblent être en chinois :(J'ai mis à jour ma question avec mon contenu du fichier tfsbuild.proj ... merci beaucoup pour votre aide jusqu'à maintenant – Nick

2

Vous devez ouvrir le fichier de configuration dans "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ TeamBuild \ Microsoft.TeamFoundation.Build.targets",

supprimer les 2 entrées suivantes:

<UsingTask TaskName="Microsoft.TeamFoundation.Build.Tasks.TestToolsTask"... 

et

<UsingTaskTaskName="TestToolsTask"... 

et ajoutez l'entrée suivante (qui remplacera les entrées précédentes et la force à utiliser MSTest v10.0):

<UsingTaskTaskName="Microsoft.TeamFoundation.Build.Tasks.TestToolsTask" 
     AssemblyFile="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Build.ProcessComponents.dll" 
     Condition=" '$(ProjectFileVersion)' == '2' /> 

Cela a fonctionné pour moi

Vive

+0

entrée fixe devrait lire: isNaN1247

+0

Cela semble à l'erreur, mais y at-il une meilleure façon de résoudre ce problème? Cela semble un peu extrême. – paulio

Questions connexes