2010-09-24 8 views
0

Ceci est similaire à ces 2 questions:Faire CruiseControl.NET MSBuild travail Tâche Identique à VS 2008 Construire

Why does MSBuild fail from the command line where VS2008 succeeds?

How to get cmd line build command for VS solution?

Lorsque je construis à partir de Visual Studio 2008, la génération réussit. Si je compile à partir de la ligne de commande à l'aide de MSBuild fourni avec l'installation .NET Framework 3.5, il échoue normalement. Toutefois, si j'utilise l'invite de commandes Visual Studio 2008 qui est installée avec VS2008, elle réussit. Les réponses (que j'ai partiellement comprises) aux deux premières questions auxquelles je suis lié semblent être la raison pour laquelle cela échoue à partir de la ligne de commande. Ma question est spécifique à CruiseControl.NET. Comment puis-je appliquer leurs réponses pour qu'une tâche CruiseControl.Net MSBuild soit toujours réussie même après de futurs changements tant qu'elle se construit correctement dans VS 2008?

Merci d'avance pour l'aide!

+0

Pourriez-vous envoyer l'erreur à laquelle vous êtes confronté avec la ligne de commande msbuild? L'utilisation de la tâche devenv est-elle possible dans votre cas? (voir http://confluence.public.thoughtworks.org/display/CCNET/Visual+Studio+Task) –

+0

Les erreurs étaient trop importantes pour être publiées. Je voulais éviter d'installer VS sur le serveur CI. Je l'ai fonctionné maintenant. Merci. –

Répondre

0

La première étape est d'obtenir votre projet de construction en utilisant correctement MSBuild à partir de la ligne de commande. Pour moi, il s'agissait d'installer des dépendances manquantes sur le serveur CI que je vais maintenant lister.

1) Je avais besoin pour télécharger et installer Power Toys pour Compact Framework 3.5 pour permettre la construction d'un projet .NET Compact Framwork 3.5. Sinon, j'aurais pu installer Visual Studio 2008 Professional Edition.

2) Je ne manquait SQL Server Compact 3.5. Après le téléchargement et l'installation pour Windows Mobile, la dépendance n'a toujours pas pu être trouvée. Je résolu ce problème en incluant une copie du fichier SqlServerCe.dll dans le dépôt de mon projet et changer toutes les références à ce fichier pour utiliser celui téléchargé à partir du référentiel au lieu d'attendre le système de savoir où trouver ce fichier. Alternativement, l'installation de Visual Studio 2008 Professional Edition peut avoir résolu ce problème sans que j'aie besoin d'inclure une copie de la DLL dans mon dépôt, mais je ne sais pas avec certitude. Depuis que mon projet est compilé en utilisant MSBuild à partir de la ligne de commande sans avoir besoin d'initialisation spéciale ou d'utiliser des invites de commandes spécialisées, la tâche MSBuild dans CruiseControl.Net fonctionne sans rien faire de spécial. J'espère que l'utilisation de MSBuild à partir d'une invite de commande continuera à être aussi simple pour moi, mais d'autres ne semblent pas avoir été si chanceux selon les 2 questions auxquelles je suis lié en haut de ma question.

0

à mon humble avis, si vous ne pouvez pas obtenir votre application pour faire une construction propre de la ligne de commande, je suggère la fixation de ce problème au lieu de fixer le symptôme du problème.

Voici ce que je l'ai fait pour résoudre un problème similaire mais en utilisant VS2010:

installé VS2010 Pro sur la construction serveur

A partir de la ligne de commande, sur mon serveur de build, j'ai couru msbuild sur fichier .sln de mon projet:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild \\build-share\dev\projects\TestProject\trunk\TestProject.sln /t:Rebuild /v:diag /p:Configuration=Release 

note: \ build-share \ est un partage de fichiers réseau utilisé seulement pour construit.

Une fois que fonctionnait la façon dont je le voulais, j'ai ajouté la tâche à mon CCNet.config:

<project ...> 
    ... 
    <tasks> 
    ... 
    <msbuild> 
     <executable>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe</executable> 
     <workingDirectory>\\build-share\dev\projects\TestProject\trunk</workingDirectory> 
     <projectFile>TestProject.sln</projectFile> 
     <buildArgs>/p:Configuration=Release /v:diag /t:rebuild</buildArgs> 
     <timeout>300</timeout> 
    </msbuild> 
    ... 
    </tasks> 
</project> 
Questions connexes