Erreur "la propriété outputpath n'est pas définie pour ce projet"

90

J'ai une solution multi-projets dans Visual Studio 2008. Je viens d'ajouter une nouvelle configuration appelée Release-VersionIncrement à la solution, en spécifiant la configuration "use release" comme référence. Tous les fichiers de projet ont été mis à jour avec cette configuration. Cependant, lorsque j'essaie de compiler un projet spécifique en utilisant cette configuration, j'obtiens l'erreur suivante:

Erreur 5 La propriété OutputPath n'est pas définie pour ce projet. Veuillez vérifier que vous avez spécifié une combinaison Configuration / Plateforme valide. Configuration = 'Release-VersionIncrement' Platform = 'AnyCPU' C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets 539 9 DataConversion

Qu'est-ce qu'il se passe ici? Le projet se compile correctement dans la configuration Release ou Debug.

laconicdev
la source
6
J'ai eu du mal avec ça pendant des heures jusqu'à ce que je réalise que la liste déroulante dans la définition de construction TFS a "Any CPU" plutôt que "AnyCPU" !!!!
The Muffin Man
1
Dans VS2012, la liste déroulante dans la configuration de construction est "Any CPU", mais à l'intérieur du fichier .csproj se trouve "AnyCPU", donc dans Jenkins ou en ligne de commande, utilisez "AnyCPU" fonctionnera.
Jirong Hu

Réponses:

94

Cela se produit généralement lorsque la propriété OutputPath du fichier projet est vide. Les fichiers de projet ne sont que des fichiers MSBuild . Pour éditer dans Visual Studio: Faites un clic droit sur le projet, choisissez "Décharger le projet" puis faites un clic droit sur le projet déchargé et sélectionnez "Modifier ...".

Recherchez le groupe de propriétés Release-Versionincrement. Cela devrait ressembler à quelque chose comme

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-VersionIncrement|AnyCPU' ">
  <OutputPath>bin\Release-VersionIncrement\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <Optimize>true</Optimize>
  <DebugType>pdbonly</DebugType>
  <PlatformTarget>AnyCPU</PlatformTarget>
  <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
  <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
  <ErrorReport>prompt</ErrorReport>
</PropertyGroup>

L'important est-il le OutputPath, existe-t-il pour votre fichier projet? Sinon, ajoutez-le et réessayez.

Sayed Ibrahim Hashimi
la source
33
Si le chemin de sortie est correct et que vous recevez toujours cette erreur, vous pouvez avoir des références à des assemblys ou à d'autres projets qui n'existent plus. Nettoyez les anciennes références. C'était mon expérience.
John K
3
Je suis juste tombé sur cette erreur et j'ai dû modifier le fichier de projet directement. Même si la page de propriétés du projet indiquait "Tout processeur", la propriété était initialement vide et j'ai choisi un paramètre Platform = BPC dans mes variables d'environnement. Après avoir corrigé cela et défini / réinitialisé la page de propriétés de Any CPU vers x86 et inversement, il ne se construisait toujours pas, affirmant que la plate-forme était maintenant `` x86 '' (?!?). Effectivement, j'ai suivi les étapes ici et j'ai trouvé qu'il était maintenant réglé sur x86, donc je l'ai modifié manuellement et maintenant tout le monde est à nouveau heureux. Merci les gars!
DaveN59
2
Mon fichier de projet avait le PropertyGroup attendu, avec un OutputPath non vide, et j'obtenais cette erreur. La seule chose que j'ai remarquée était que le PropertyGroup pour cette configuration particulière était le premier élément sous le nœud racine du fichier, et l'attribut Condition n'avait pas d'espace de début et de fin, contrairement à toutes les autres conditions de configuration. À ce stade, j'ai déplacé cet élément sous certaines des autres configurations (je ne sais pas pourquoi cela importerait, j'essayais juste des choses) et j'ai ajouté l'espace blanc dans la condition. Après cela, cela a fonctionné. Je ne sais pas ce qui a fait la différence.
Seth Flowers du
2
J'ai eu un autre problème. J'ai utilisé SlowCheetah pour créer mes transformations de configuration pour mon projet Windows. Les configurations n'avaient pas d'espace blanc comme le suggérait @sethflowers. J'ai ajouté ceux-ci mais cela n'a pas aidé. J'ai vu qu'il y avait un autre groupe de propriétés entre les configurations. Donc trié cela (il suffit de placer le groupe de propriétés sous les groupes de propriétés de configuration du projet), puis le problème a disparu. Merci pour toutes les suggestions ici. Cela m'a fait gagner du temps !!!
Ralph Jansen
7
Deffo l'essayer avec \ p: Platform = "AnyCPU" au lieu de \ p: Platform = "Any CPU". Cela a fonctionné de moi! Regardait ça depuis des lustres!
Lee Englestone
78

J'ai également vu cette erreur lorsque notre agent de build a été configuré pour exécuter la plate-forme " Any CPU " (avec des espaces comme affiché dans Visual Studio) plutôt que " AnyCPU " (un mot comme spécifié dans le fichier de projet).

Richard Dingwall
la source
5
J'ai rencontré le même problème, il semble qu'au niveau de la solution, "Any CPU" est valide, mais au niveau du projet, c'est "AnyCPU". En d'autres termes, msbuild myproj.sln /p:Configuration=Debug /p:Platform="Any CPU"c'était bien, mais lors de la construction du projet, j'ai dû omettre l'espace dans Any CPU: msbuild myproj.proj1.csproj /p:Configuration=Debug /p:Platform=AnyCPUpour supprimer l'erreur de propriété Outputpath.
Emil G
2
Incroyable, et quel PITA pour la configuration CI. Je me débat avec ça depuis des jours.
Jeremy Holovacs
J'ai eu cette erreur lorsque je ne pouvais pas construire sur le serveur de construction principal et que l'alternative que j'avais sélectionnée passait "Any CPU" au lieu de "AnyCPU". Après vérification, il y avait des différences dans les numéros de version de MSBUILD et d'autres logiciels. Merci pour votre réponse,
Gilles
1
Je ne peux pas croire que l'espace était le coupable!
Alexandra
36

J'ai eu le même problème lorsque j'ai utilisé MSBuild pour la première fois. Ma solution est la suivante: utilisez définitivement la propriété OutputPath. Comme ça:

msbuild XXX.csproj /p:OutputPath=bin\Debug.
Peter Mortensen
la source
Cela a résolu mon problème pour une version de TeamCity Azure Cloud Service. +1
starmandeluxe
De même pour moi avec CI Build de VSO.
StriplingWarrior
11

Dans notre cas, nous exécutions un script de construction sur nos boîtes de développement HP. HP a quelques variables d'environnement qu'ils ont configurées pour leurs propres besoins et l'une d'elles est PLATFORM (utilisée, apparemment, pour «HP Easy Setup»).

La suppression de la variable d'environnement PLATFORM a fonctionné.

Vous pouvez également pérenniser votre script de construction en spécifiant la plate-forme, c'est-à-dire
msbuild /p:Platform=AnyCPU.

Boggin
la source
Cela m'a attrapé sur mon nouvel ordinateur portable HP - merci @Boggin - cela ne m'est pas venu à l'esprit.
Rob Cooper
9

Si Visual Studio se plaint spécifiquement que «Platform = 'BPC'», vous pouvez facilement résoudre ce problème en supprimant la variable d'environnement «Platform».

Supprimez ce mauvais garçon.

Maintenant, redémarrez Visual Studio et vous êtes prêt à partir.

Scott S
la source
6

Comme l' indique " Richard Dingwall ", le problème est lié à VS utilisant la version d' affichage de " Any CPU " au lieu de la version MSBuild qui lit en fait " AnyCPU "

Allez dans Build / New Build Definition ou Edit Build Definition -> Process -> Configurations to build, ouvrez la boîte de dialogue de sélection de configuration et dans " Platform " au lieu de sélectionner " Any CPU ", ajoutez manuellement " AnyCPU "

Robert Hoffmann
la source
6

Comme on l'a dit, OutputPath doit être défini ET il doit être placé avant <Import Project="$(WixTargetsPath)" /> dans le fichier .wixproj

OlegMax
la source
Celui-ci était lié à mon problème, j'ai ajouté une nouvelle configuration pour un projet wix après l'avoir créé et la nouvelle configuration a été ajoutée à la fin du fichier afin que tous les PropertyGroups liés à cette nouvelle configuration aient été placés APRÈS cette importation, les déplaçant vers le haut, juste à côté des autres, a fait en sorte que cela fonctionne pour moi.
Eugenio Miró
4

J'ai supprimé Platformla variable d'environnement (était BNB ou smth comme ça). Le problème a disparu.

épine
la source
1
Malheureusement, même après avoir supprimé la variable d'environnement Platform, un redémarrage complet est nécessaire!
79E09796
4

J'ajoutais la plate-forme x64 à ma solution aujourd'hui, lorsque j'ai rencontré ce problème.

Dans mon cas, l'erreur se lit comme suit:

Construit $ / ProjectDirectory / ProjectName.csproj pour les cibles par défaut. c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (484): la propriété OutputPath n'est pas définie pour le projet ProjectName.csproj '. Veuillez vérifier que vous avez spécifié une combinaison valide de configuration et de plate-forme pour ce projet. Configuration = Plateforme 'Debug' = 'x64'. Vous voyez peut-être ce message parce que vous essayez de créer un projet sans fichier de solution et que vous avez spécifié une configuration ou une plate-forme non par défaut qui n'existe pas pour ce projet.

Je connaissais le OutputPath devrait aller, car il s'agissait d'une solution VS existante et fonctionnelle. Je suis donc passé au conseil suivant - "une combinaison valide de configuration et de plate-forme".

Ah! Visual Studio essaie de générer Configuration='Debug', Platform='x64'. En regardant mon fichier de projet, j'ai réalisé que x64 n'était pas répertorié comme l'une des plates-formes possibles. En d'autres termes, j'avais les entrées ci-dessous (raccourcies):

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

Solution facile alors: ajoutez simplement des entrées x64!

J'ai copié / collé les entrées x86 et les ai modifiées pour utiliser x64. Notez que j'ai également modifié les chemins pour qu'ils n'écrasent pas les versions x86:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Debug\</OutputPath>    
      . . .
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Release\</OutputPath>    
      . . .
  </PropertyGroup>
Gustavo Mori
la source
3

J'ai lutté avec cela pendant un certain temps, puis j'ai également déchargé, créé, puis rechargé le projet incriminé dans la solution, puis MSBuild a fonctionné correctement.

Glenn
la source
3

En tant que Scott S, j'ai dû supprimer la variable d'environnement "Platform" .

Puis redémarrez VS, et c'est ok: plus de message d'erreur ...

M Denis
la source
Cela a fonctionné pour moi lorsque j'ai supprimé la plate-forme que j'avais spécifiée dans mon étape Build vNext MSBuild également.
4imble
2

Le problème était lié à la configuration de mon projet. Voici le scénario:

Références de la solution A:

Projet X fait référence au projet Y
Projet Y

Références de la solution B (celle que j'essaie de construire):

Projet X Projet Z

Ma solution consistait à créer une configuration portant le même nom pour la solution A, à la reconstruire, puis à reconstruire la solution B. Cela a résolu le problème.

laconicdev
la source
1
Je rencontrais la même erreur et cette solution de contournement était la seule chose qui fonctionnait pour moi. Fondamentalement, j'avais une configuration de plate-forme de solution "Win32" qui construit un projet silverlight avec la configuration de plate-forme "Any CPU" et aussi un projet d'application Web avec la configuration de plate-forme "x86" qui héberge le projet silverlight. J'ai dû ajouter une nouvelle configuration de plate-forme de projet au projet silverlight, "x86" (et conserver l'ancienne comme configuration par défaut) pour que msbuild fonctionne comme prévu.
Rami A.
2

J'ai eu ce même message d'erreur. Cela était dû à une référence à un projet déchargé et non requis par l'éditeur de liens (sinon, il aurait échoué au moment de la compilation). La suppression de la référence incriminée a résolu le problème.

Gishe
la source
2

Dans mon cas (VS2010), j'ai supprimé la chaîne dans la zone "OutputPath" qui se trouve sur l'onglet "Build" et l'ai laissée vide. Ensuite, j'ai reconstruit la solution. La construction a réussi et VS a inséré le répertoire courant "./" dans le "OutputPath". J'ai remplacé le répertoire actuel "./" par mon chemin ("bin \ x64 \ Release \" - il suffit de dire que c'est le chemin exact du dossier qui se plaignait VS en premier lieu) et la reconstruction a réussi à nouveau.

Tomasz Stypich
la source
1

Dans mon cas, la propriété OutputPath a été définie dans les fichiers de projet. Mais le déchargement, le rechargement puis la reconstruction ont résolu le problème.

Farkashon
la source
1

Lorsque j'ai ajouté une nouvelle configuration de solution dans ma solution, j'ai reçu une erreur, "La propriété OutputPath n'est pas définie pour le projet X. Veuillez vérifier que vous avez spécifié une combinaison valide de configuration et de plate-forme pour ce projet. Configuration = 'QA 'Platform =' AnyCPU '. Cette erreur peut également apparaître si un autre projet tente de suivre une référence de projet à projet à ce projet, ce projet a été déchargé ou n'est pas inclus dans la solution et le projet de référence ne le fait pas build en utilisant la même configuration ou une plate-forme équivalente. ProjectY ".

Dans mon cas, le problème était dû à une partie en surbrillance de la description de l'erreur. Une partie du projet X de ma solution consistait à avoir une référence de projet à ProjectY d'une autre solution (branche différente).

J'ai résolu ce problème en modifiant le projet X pour utiliser la référence de projet à ProjectY dans la solution actuelle. J'espère que cela aide quelqu'un ayant un problème similaire.

BNJ
la source
0

Dans mon cas, le nouveau bloc XML "PropertyGroup" a été généré au bas du document. Je viens de le remplacer après d'autres balises "PropertyGroup" et cela a résolu le problème.

Alexandre Pavlenko
la source
0

J'ai créé un nouveau projet dans une nouvelle solution qui fait référence à des projets existants. Cette erreur se produit lorsque j'ajoute un projet existant (par exemple, projet 1) et que j'essaie de créer sans ajouter d'autres projets auxquels le projet 1 fait référence.

Assurez-vous simplement que tous les projets relatifs sont ajoutés à la nouvelle solution et que l'erreur disparaît.

Ike
la source
0

J'ai eu la même erreur, j'ai donc regardé les paramètres du projet et là, dans la section "Construire", il y a l'option "Construire le chemin de sortie". Et la valeur était vide. J'ai donc rempli la valeur "bin \" une erreur a disparu. Cela a résolu mon problème.

Lukas Dvorak
la source
0

Si vous décidez de définir OutputPath comme paramètre, et que votre chemin est comme: bin\Release\\alors n'oubliez pas d'ajouter \à la fin comme ça: /p:OutputPath=bin\Release\\\\il m'a fallu un certain temps pour réaliser que c'était le cas

Marysia
la source
0

J'ai eu le même problème. Je l'ai réparé en nettoyant et reconstruisant les projets.

user5920105
la source
0

J'ai eu le même problème, et la seule solution qui m'aide était de définir manuellement la configuration de construction dans chaque projet NCrunch.

Ouvrez la fenêtre NCrunch, où vous pouvez voir le statut de chaque build et où vous pouvez voir que la build échoue. Faites un clic droit sur le projet qui ne parvient pas à construire et cliquez sur "Configurer le composant sélectionné". Vous voyez sous "Paramètres de construction" la propriété "Utiliser la configuration de la construction". par exemple "AnyCPU". (Veuillez noter que les paramètres de construction et de configuration que vous définissez doivent exister dans vos paramètres de konfigration)

Faites cela pour tous vos projets, mais pas pour votre projet de test. Après cela, tout fonctionne bien pour moi.

squadwuschel
la source
0

J'ai eu le même problème, je l'ai résolu en ajoutant des configurations manquantes au projet qui échouait.

BUILD -> Gestionnaire de configuration ->

Sous la colonne de configuration Ajouter

Remarque: cela s'est produit uniquement parce que j'ai une configuration personnalisée et que les projets nouvellement créés n'avaient pas la configuration.

pmeyer
la source
0

Si quelqu'un obtient celui-ci dans ses journaux NCrunch, vérifiez si les PropertyGroupvaleurs de définition «Debug» / «Release» et «AnyCPU» / «x86» situées avant les groupes de propriétés utilisent ces valeurs dans leur condition.

<PropertyGroup>
    <!-- this one first -->
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <XXX>...</XXX>
  </PropertyGroup>

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

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

A travaillé pour moi.

Waescher
la source
0

Dans mon cas, j'ai essayé de déplacer le groupe de propriétés qui contenait ma configuration personnalisée en dessous de ceux standard. Cela a résolu le problème pour moi.

ermenegild0
la source
0

Je viens de l'avoir avec VS2015 Professional:

La propriété OutputPath n'est pas définie pour le projet «xxxxx.csproj». Veuillez vérifier que vous avez spécifié une combinaison valide de configuration et de plate-forme pour ce projet.

C'est aussi un jonglage multi-projets entre le débogage / la publication et différentes cibles. J'avais joué avec les configurations de construction à un moment donné et je sais que cela peut gâcher VS, alors je les ai retirés du repo. Toujours pas bon. OutputPath a été défini, il n'y avait plus de diffs avec un bon état connu, donc il y avait définitivement un problème avec mon installation locale.

Ouvre le programme d'installation de VS2015 et clique sur "Réparer", et le tour est joué ... retour à la normale (du moins jusqu'à présent!)

Etherman
la source