2010-06-03 30 views
4

J'ai créé un projet MSBuild qui exécute simplement une tâche msbuild avec notre fichier de solution en tant que paramètre. J'ai défini une cible BeforeBuild dans laquelle j'ai défini certaines propriétés et une cible Build qui exécute la tâche msbuild.L'erreur "La propriété OutputPath n'est pas définie" se produit uniquement lors de l'appel de MSBuild dans CCNET

J'ai confirmé qu'aucune erreur ne s'est produite lors de la construction du script msbuild dans la console de ligne de commande. Cependant, quand je l'utilise dans la tâche msbuild dans mon projet CCNET, je continue à obtenir l'erreur suivante:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (483,9): error: The OutputPath property is not set for project 'MyProject.msbuild'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='Debug' Platform='AnyCPU'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project.

J'ai vérifié le journal de la construction et il semble que l'erreur se produit pendant _CheckForInvalidConfigurationAndPlatform. Il n'était même pas capable de continuer ma tâche de construction! Étant donné que le script est uniquement destiné à construire la solution sous Debug/Release et AnyCPU comme plate-forme, j'ai essayé d'ajouter les lignes suivantes à mon projet msbuild:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <OutputPath>.\bin\Debug\</OutputPath> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <OutputPath>.\bin\Release\</OutputPath> 
</PropertyGroup> 

je pouvais encore construire le projet sans erreurs dans la ligne de commande , mais CCNET renvoie la même erreur mentionnée ci-dessus. Je ne comprends pas pourquoi CCNET continue à recevoir l'erreur, et je ne sais pas quoi d'autre essayer.

Aidez-nous s'il vous plaît.

+1

Cela aide-t-il? http://blogs.msdn.com/b/brandonwerner/archive/2010/03/14/the-nasty-visual-studio-platform-mcd-error-in-visual-studio-2010-rc.aspx –

+0

Pouvez-vous publier la tâche msbuild utilisée dans CC.NET? – alexandrul

Répondre

10

J'ai trouvé que j'avais une situation similaire (mais en utilisant TeamCity comme environnement CI). Dans mon cas particulier, le projet était une application de ligne de commande. Pour le résoudre, j'ai dû éditer manuellement mon fichier de projet.

Trouver ces lignes:

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
<Platform Condition=" '$(Platform)' == '' ">x86</Platform> 

Modifier la deuxième ligne à:

<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 

Le trouver les autres lignes spécifiques à la plateforme dans le fichier de projet et de les changer. Exemple:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 

devient:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 

Je soupçonne nos serveurs de construction sont 64 bits et le type de projet d'application console dans Studio ne vous laissera pas faire intégrer le projet d'une plate-forme AnyCPU .. Après ces changements, TeamCity n'a eu aucun problème avec mon script de construction.

+1

C'était exactement ce dont j'avais besoin. Sans cette réponse, je doute fortement que j'aurais pu le retracer. –

+0

Si quelqu'un d'autre rencontre cela, les premières lignes appartiennent au groupe de propriétés initial et dans mon cas, la ligne de la plate-forme était complètement absente. L'ajout de ce problème a résolu le problème avec TeamCity – yieldvs

3

La réponse de David m'a aidé. Mais plus tard, j'ai trouvé la source réelle du problème pour mon ordinateur. La variable d'environnement PLATFORM est ajoutée sur les machines HP et affecte un certain nombre de scénarios différents avec Visual Studio. Allez dans Variables d'environnement-> Variables système et supprimez la "PLATE-FORME" de la liste.

Voir les détails supplémentaires ici: http://blogs.msdn.com/b/jnak/archive/2010/03/24/outputpath-property-is-not-set-for-project-error-when-building-a-windows-azure-cloud-service-in-vs-2010.aspx

+0

Merci pour les informations supplémentaires. Cela a dû être un vrai bugger à résoudre! –

+0

Dans mon cas, il s'agissait simplement de mettre plus de groupes de propriétés avec la plate-forme, parfois les gens le personnalisent (mettre un autre nom comme 'MyAcceptance') et puis le régulateur de vitesse déclenche cette erreur. Vous devez donc ajouter ce nom au code source du csproj –