2010-06-21 6 views
1

J'ai un projet qui se compile actuellement sur ma machine dev en utilisant VS 2010 (probablement en utilisant MSBUILD v4.0), mais il échoue sous MSBUILD v3.5 dans Team City (fonctionnant sur une VM basée sur le serveur Win 2003 avec .NET 2, 3.5 et 4 installé). Ce projet a été mis à jour en 2010 et échoue maintenant sur la version CI. J'ai googlé ceci et essayé tout évident (plus quelques choses qui n'ont pas de sens) et rien n'affecte le résultat.La construction de Team City échoue après la mise à niveau vers VS 2010

Le projet échoue avec une séquence d'erreurs comme ceci:

error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) 

Il existe de nombreux autres projets dans la solution qui utilisent System.Core, System.Data.Linq et System.Xml.Linq et ils ont tous semblent compiler sans problèmes. Le projet en question est une application web, et il a les paramètres suivants dans sa configuration/system.web/compilation/section ensembles:

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 

plus les avantages suivants dans le même fichier:

<system.codedom> 
    <compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> 
     <providerOption name="CompilerVersion" value="v3.5"/> 
     <providerOption name="WarnAsError" value="false"/> 
    </compiler> 
    </compilers> 
</system.codedom> 

Le projet en question est, IIRC, le seul projet de ma solution à la fois WebApplication et post-traité par PostSharp (v1.5). PostSharp est configuré dans le .csproj comme ceci:

<PropertyGroup> 
    <DontImportPostSharp>True</DontImportPostSharp> 
    <PostSharpUseCommandLine>True</PostSharpUseCommandLine> 
</PropertyGroup> 
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
<Import Project="$(POSTSHARP15)\PostSharp-1.5.targets" /> 

Je ne sais pas comment cela pourrait être lié, mais il est là juste au cas où.

Des idées sur les causes de cette erreur ou sur la façon de contourner le problème?

TIA

Répondre

7

Résolu: Problème

Ajout des références dans le fichier web.config est inutile, parce que PostSharp entre l'image avant ASP.NET a effectué une compilation de ses propres, donc l'absence d'une référence à la référence System.Core provoque l'échec du système (je ne sais pas pourquoi).

La solution consiste à éditer manuellement le fichier csproj pour le projet défaillant et à ajouter manuellement une référence à System.Core au projet. Vous ne pouvez pas le faire à partir de l'explorateur de solution, car il interdit l'ajout de références que devrait être ajouté automatiquement par MSBUILD.

Toujours pas sûr pourquoi il a échoué en premier lieu, mais au moins il compile maintenant et passe à nouveau des tests.

0

Est-ce que vous mettez le msbuild V4.0 sur TeamCity? Je ne pense pas que vous pouvez construire un projet 2010 avec .Net 4.0 en utilisant MSbuild 3.5 sur teamcity.

+0

Salut Mike, en fait j'ai choisi de garder le framework sur 3.5 et suis capable de construire mon toolset = "4.0" comme s'ils étaient toolset = "3.5" (le framework s'adapte en conséquence) –

Questions connexes