La propriété OutputPath n'est pas définie pour ce projet

120

Lorsque j'essaye de compiler mon projet à partir du mode de débogage x86 dans Visual Studio 2008. J'obtiens cette erreur. Quand j'ai regardé le groupe de propriétés du projet qui s'est plaint, je vois que le chemin de sortie est défini.

Voici la section du groupe de propriétés pour ce fichier .csproj

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
  <DebugSymbols>true</DebugSymbols>
  <OutputPath>bin\x86\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <BaseAddress>285212672</BaseAddress>
  <FileAlignment>4096</FileAlignment>
  <DebugType>full</DebugType>
  <PlatformTarget>x86</PlatformTarget>
 <ErrorReport>prompt</ErrorReport>

Quelqu'un peut-il faire la lumière là-dessus?

REMARQUE: lorsque j'ai compilé ce débogage et tout processeur, cela a fonctionné.

MISE À JOUR: Erreur 1 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 = Plateforme 'Debug' = 'x86'

Amzath
la source
Ok et quelle configuration et plateforme utilisez-vous? Debug + x86 ou autre chose?
Ondrej Tucny
Oui Gestionnaire de configuration VS je choisis debug + x86
Amzath
@DmitryShkuropatsky message d'erreur mis à jour
Amzath
1
Cela semble correct. Y a-t-il un autre projet dans la solution qui peut provoquer l'erreur?
Dmitry Shkuropatsky
@DmitryShkuropatsky vous avez raison, c'était un autre projet qui avait un problème. Mais VS s'est plaint du projet en cours de compilation
Amzath

Réponses:

214

J'ai eu exactement la même erreur après avoir ajouté une nouvelle configuration via ConfigurationManager dans Visual Studio.

Il s'est avéré que lorsque la configuration 'Production' a été ajoutée pour l'ensemble de la solution (et chaque projet), l'élément OutputPath n'était pas ajouté aux fichiers .csproj.

Pour corriger, je suis allé à l'onglet Construire dans les propriétés du projet, j'ai changé OutputPath de \bin\Production\à \bin\Production(fin supprimé \) et j'ai enregistré les modifications. Cette création forcée de l'élément OutputPath dans le fichier .csproj et le projet a été généré avec succès.

Cela me semble être un problème.

Roman Gudkov
la source
7
Belle prise sur cette erreur mercurielle. Je n'aurais jamais deviné qu'une seule barre oblique pouvait faire une telle différence. Ayez un badge de bonne réponse.
ouflak
8
Dans mon cas, la création d'un fichier proj, la différence entre any cpuet anycpuétait le problème, mais votre message m'a aidé à voir cela.
Joshua Drake
2
Merci Roman, vous m'avez sauvé la journée ... si seulement je pouvais voter 100 fois! :)
Martin
2
Je viens de rencontrer cela dans VS 2017 v15.6.6, bacon sauvé, merci!
Angrist
1
@Joshua Drake, c'est un problème important lors de l'utilisation de VSTS. Visual Studio Online utilise «any cpu», tandis que le studio visuel local utilise «anycpy». Important pour les scripts de construction.
FrankyHollywood
27

Vous pouvez voir cette erreur dans VS 2008 si vous avez un projet dans votre solution qui fait référence à un assembly introuvable. Cela peut se produire si l'assembly provient d'un autre projet qui ne fait pas partie de votre solution mais qui devrait l'être. Dans ce cas, le simple fait d'ajouter le bon projet à la solution le résoudra.

Consultez la section Références de chaque projet de votre solution. Si l'un d'entre eux a une référence avec un x rouge à côté, c'est que vous avez trouvé votre problème. Cette référence d'assembly ne peut pas être trouvée par la solution.

Le message d'erreur est un peu déroutant, mais je l'ai vu plusieurs fois.

dblood
la source
2
Dans mon cas, c'était un "avertissement jaune"
AXMIM
26

Si vous utilisez WiX, regardez ceci (il y a un bug) http://www.cnblogs.com/xixifusigao/archive/2012/03/20/2407651.html

Parfois, de nouvelles configurations de construction sont ajoutées au .wixprojfichier plus loin dans le fichier, c'est-à-dire séparées de leurs définitions de configuration sœurs par d'autres éléments XML non liés.

Modifiez simplement le .wixprojfichier pour que toutes les <PropertyGroup>sections qui définissent vos configurations de construction soient adjacentes les unes aux autres. (Pour modifier le .wixprojdans VS2013, cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions, Déchargez le projet, cliquez à nouveau avec le bouton droit de la souris -> Modifier votre projet.wixproj. Rechargez après avoir modifié le fichier.)

George
la source
1
merci, cela l'a corrigé pour moi. J'avais beaucoup de comportement bizarre à mesure que j'ajoutais de configurations au projet. Dès que j'ai nettoyé le fichier du projet, tout a bien fonctionné. (Ce bug a été signalé pour la première fois en 2012? Super ...)
Kirschi
Merci, cela a résolu le
problème
15

Cela m'est arrivé parce que j'avais déplacé la ligne suivante près du début du fichier .csproj:

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

Il doit être placé après les PropertyGroups qui définissent votre Configuration | Plateforme.

Philip Atz
la source
11

L'erreur affichée dans Visual Studio pour le projet (disons A) n'a pas de problèmes. Quand j'ai regardé la fenêtre de sortie pour la construction ligne par ligne pour chaque projet, j'ai vu qu'il se plaignait d'un autre projet (B) qui avait été appelé assemblage dans le projet A. Projet B ajouté à la solution. Mais il n'avait pas été référencé dans le projet A comme référence de projet à la place comme référence d'assemblage à partir d'un emplacement différent. Cet emplacement contient l'assembly qui a été compilé pour Platform AnyCpu. Ensuite, j'ai supprimé la référence d'assemblage du projet A et ajouté le projet B comme référence. Il a commencé la compilation. Je ne sais pas comment ce correctif a fonctionné.

Amzath
la source
15
Deffo essayez avec \ p: Platform = "AnyCPU" au lieu de \ p: Platform = "Any CPU". Cela a fonctionné de moi! Regardait ça depuis des lustres!
Lee Englestone
AnyCPU (sans l'espace) a également fonctionné pour moi. Merci Lee.
willem
1
J'ai rencontré l'erreur lors de l'exécution d'un processus de construction sur TFS 2017, après avoir changé le "Chemin vers la solution ou packages.config" d'un .sln à un .vbproj. Changer BuildPlatform en AnyCPU a également fonctionné pour moi. Voir la note sous "Plateforme" ici: docs.microsoft.com/en-us/vsts/build-release/tasks/build/…
Mr.Zzyzzx
2
Dans mon cas, lors du lancement de la compilation à partir de TFS, "any cpu"était la valeur par défaut pour BuildPlatform. Changer pour "AnyCPU"résoudre le problème.
XouDo
Nous sommes en 2020 - AnyCPU vs Any CPU est toujours un fauteur de troubles. J'utilise VS2019 et je reçois toujours cela sur de nouveaux projets. MS pourquoi punissez-vous la communauté des développeurs?
Christian
9

J'ai rencontré la même erreur mais le problème s'est avéré être parce que j'avais créé une nouvelle configuration dans ma solution qui n'existait pas dans les assemblys référencés d'une autre solution.

Cela peut être résolu en ouvrant la solution associée et en y ajoutant également la nouvelle configuration.

Cet article m'a donné l'idée de vérifier les assemblages référencés après avoir déjà confirmé que tous les projets de ma solution avaient la bonne configuration:

http://gabrielmagana.com/2010/04/solution-to-the-outputpath-property-is-not-set-for-this-project/

BK
la source
7

eu ce problème en tant que sortie d'Azure DevOps après avoir défini pour générer le .csproj au lieu du .sln dans le pipeline de génération.

La solution pour moi: éditez .csproj du projet concerné, puis copiez votre ensemble

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCpu' ">

Nœud, collez-le, puis modifiez la première ligne comme suit:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|any cpu' ">

La raison en est que, dans mon cas, l'erreur dit

Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='release'  Platform='any cpu'.  

Pourquoi Azure veut utiliser "n'importe quel processeur" au lieu du "AnyCpu" par défaut est un mystère pour moi, mais ce hack fonctionne.

Jens Caasen
la source
En suivant votre idée, j'ai découvert que dans mon cas, je n'avais pas besoin d'apporter de modifications au projet, mais à la place, dans mon étape Visual Studio Build dans DevOps, j'ai configuré le champ Confguration pour utiliser la variable avec la valeur AnyCpu.
donatasj87 le
@ donatasj87 pourriez-vous afficher la valeur totale de ce champ s'il vous plaît?
Jay
1
La valeur totale est exactement la même, cela devrait également fonctionner dans la version TFS. Il doit simplement correspondre à la valeur définie dans votre fichier .csproj. Vous pouvez le voir dans cette image: pasteboard.co/JbdvBT5.png
donatasj87
4

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
3

J'ai:

  1. Cliquez avec le bouton droit sur le projet avec problème -> Décharger le projet
  2. Cliquez avec le bouton droit sur le projet et choisissez Modifier * .csproj
  3. Copiez-collez la configuration à partir de la configuration existante qui fonctionne avec un nom et une plate-forme de ciblage spécifiques (j'avais Release | x64 ):

    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
      <OutputPath>bin\x64\Release\</OutputPath>
      <DefineConstants>TRACE</DefineConstants>
      <Optimize>true</Optimize>
      <DebugType>pdbonly</DebugType>
      <PlatformTarget>x64</PlatformTarget>
      <ErrorReport>prompt</ErrorReport>
      <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
      <Prefer32Bit>true</Prefer32Bit>
    </PropertyGroup>
  4. Projet de clic droit -> Recharger le projet
  5. Projet / solution de reconstruction
Janis S.
la source
3

Si vous obtenez cette erreur uniquement lorsque vous essayez de compiler votre projet à partir de la ligne de commande à l'aide de MSBuild (comme dans mon cas), la solution consiste à passer manuellement le chemin de sortie à MSBuild avec un argument comme /p:OutputPath=MyFolder.

anion
la source
2

Une autre possibilité folle: si vous suivez un simple arrangement de contrôle de source consistant à placer Branch \ Main, Main et Release les uns à côté des autres et que vous finissez par ajouter un projet existant depuis Main au lieu de Branch \ Main (en supposant que votre solution de travail est Branch \ Main), vous pouvez voir cette erreur.

La solution est simple: référencer le bon projet!

Keith Hoffman
la source
2

J'ai rencontré ce problème en ajoutant un projet à une solution, puis en le référençant à partir d'un autre projet dans la même solution - j'ai obtenu l'icône d'avertissement jaune sur la référence, notez que le chemin était vide.

La solution était similaire à ce que @Amzath suggérait, mes projets étaient compilés avec différents cadres cibles, par exemple. .NET 4.0 contre 4.5.

StuTheDog
la source
2

Dans mon cas, l'adresse intégrée de mon application a été définie sur un autre ordinateur qui a été éteint, je l'ai donc allumé et redémarré VS et le problème est résolu.

Jésus Manuel
la source
2

Autre cause: vous ajoutez une référence de projet du projet A au projet B dans la solution X. Cependant, la solution Y qui contient déjà le projet A est maintenant interrompue, jusqu'à ce que vous ajoutiez également le projet B à la solution Y.

David White
la source
2

J'ai eu le même problème après avoir ajouté de nouvelles configurations et supprimé les configurations "debug" et "release". Dans mon cas, j'utilisais un fichier cmd pour exécuter le processus de construction et de publication, mais la même erreur a été générée. La solution pour moi: dans le fichier csproj, voici ce qui suit:

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

définissait la configuration sur «Debug» si je n'en spécifiais pas une explicite. Après avoir changé la valeur du nœud de "debug" à ma configuration personnalisée, tout a fonctionné sans problème. J'espère que cela aidera également quiconque lit ceci :)

MihaiB
la source
Les détails de cette solution sont mentionnés dans ce message du forum. social.msdn.microsoft.com/Forums/vstudio/en-US/…
Sunny Tambi
2

J'ai eu le même problème, il suffit de modifier le .wixproj pour que tous les <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ... >éléments soient côte à côte.

Cela a résolu mon problème

Sharon
la source
1

Le projet WiX que j'utilisais était défini en dur dans le gestionnaire de configuration pour x64tous les niveaux. Lors de la création du projet Action personnalisée pour la solution, tout a été placé par défaut x86dans le .csprojfichier. J'ai donc déchargé le projet, je l'ai édité en changeant toutx86 à x64, sauvé, rechargées, et il était bon d'aller après.

Je ne comprends pas pourquoi j'ai dû faire ça. Le gestionnaire de configuration a été configuré pour être construit en x64, mais ne serait tout simplement pas défini dans le csprojfichier :(

kayleeFrye_onDeck
la source
0

Après avoir essayé toutes les autres suggestions publiées ici, j'ai découvert que la solution pour moi était de supprimer la section suivante du .csprojfichier:

  <ItemGroup>
    <Service Include="{808359B6-6B82-4DF5-91FF-3FCBEEBAD811}" />
  </ItemGroup>

Apparemment, ce service du projet original (non disponible sur la machine locale) interrompait tout le processus de construction, même s'il n'était pas essentiel pour la compilation.

Sauce spéciale
la source
0

J'ai eu ce problème après avoir ajouté une nouvelle plateforme à mon projet. Dans mon cas, le fichier .csproj était sous le contrôle de source Perforce et était en lecture seule. Je l'ai vérifié mais VS n'a pas saisi le changement avant de le redémarrer.

Flot2011
la source
0

J'ai eu un problème similaire sur un projet Xamarin. C'est peut-être un cas rare, mais au cas où quelqu'un d'autre aurait le problème. la structure de mon projet était comme ci-dessous

  • Le projet xamarin.Android avait une référence du projet xamarin.android.library.
  • J'ai créé un plugin en utilisant du code du projet android.library.
  • Voici maintenant le problème. si vous ajoutez une référence de projet ou une installation nuget sur le projet de bibliothèque xamarin.android. Vous obtiendrez cette erreur. Les développeurs supposent que le code était à l'intérieur du projet Android.Library et je dois référencer le nouveau plugin sur ce projet. NON!
  • vous devez ajouter une référence sur le projet Android principal. parce que la sortie du projet principal plugin-> library-> n'est pas produite.
batmaci
la source