web-dev-qa-db-fra.com

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

Construire ma solution Jenkins/MSBuild me donne cette erreur

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): error : 
The OutputPath property is not set for project '<projectname>.csproj'.  Please check to
make sure that you have specified a valid combination of Configuration and Platform 
for this project.  Configuration='Latest'  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. 
[C:\<path>\<projectname>.csproj]

Des idées?

MODIFIER

J'ai ceci dans mon fichier .csproj

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Latest|AnyCPU'">
    <OutputPath>bin\Latest\</OutputPath>
  </PropertyGroup>
49
Sachin Kainth

Ouvrez votre csproj dans un éditeur de texte et voyez si vous avez une section de groupe de propriétés. Cela devrait ressembler à ceci:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Latest|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Latest\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>Prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  </PropertyGroup>

Avez-vous une dernière configuration de construction? Sinon, ajoutez la section ci-dessus au csproj.

47
James Woolfenden

J'ai compris comment cela fonctionne (sans changer les propriétés de sln/csproj dans VS2013/2015).

  1. si vous souhaitez générer un fichier .sln ----/p:ConfigurationPlatforms=Release/p: Platform = "Tout processeur" si vous souhaitez générer un fichier .csproj ----/p : Configuration = Version /p:Platform=AnyCPUnotice "Any CPU" vs AnyCPU

  2. vérifiez les codes d'analyse, fxcop, cible de couverture (NCover). ainsi que le MSBUILD doivent être situés correctement. dans mon cas, c’est "C:\Windows\Microsoft.NET\Framework64\v4.0.30319" mais cela peut être différent car vous pouvez voir que Microsoft a donné 6 options de cmd pour construire le code base :: AMD (avec croix plt , x86 et x64) et Windows (croix, x86, x64) et cela également lorsque le développement de code a eu lieu avec JIT par défaut (il peut s'agir de PreJIT ngen.exe, econoJIT)

Je pense que plus que ce dépannage peut être manipulé en utilisant power Shell + msbuild. Peut être utile pour quelqu'un ...

24
Saurabh

Comme mentionné par perlyking, plutôt que d’éditer le XML csproj, voici ce qui a fonctionné pour moi. Voici les étapes que j'ai utilisées.

  1. Ouvrez les propriétés du projet.
  2. Sélectionnez l'onglet Construire.
  3. Sous la section Sortie, vérifiez qu'un chemin de sortie est défini. (si vous n'en avez pas défini un, enregistrez le projet et cela devrait fonctionner).
  4. S'il est défini, cliquez sur le bouton "Parcourir ..." du chemin de sortie.
  5. Lorsque la boîte de dialogue de sélection de dossier s'ouvre, remontez d'un niveau dans le navigateur de fichiers , Sélectionnez de nouveau le dossier de sortie et cliquez sur le bouton "Sélectionner un dossier".
  6. Enregistrez les propriétés du projet et cela devrait fonctionner.
11
Bevan

Pour ajouter à ce que @James a dit, j’ai constaté que, si j’examinais les propriétés du projet Compile dans VS2013, le chemin de sortie de la construction était spécifié. Mais lorsque j'ai examiné le fichier .csproj directement, l'élément OutputPath était manquant pour la configuration de construction appropriée. Ainsi, dans VS, j’ai simplement créé et inversé une modification mineure dans le chemin de sortie, je l’ai sauvegardé, puis jeté la valeur dans le fichier de projet, puis j’ai pu construire.

5
perlyking

J'ai eu le même problème. J'ai mis à jour ma plate-forme Windows à l'aide de la ligne de commande. Actuellement, je suis mis à jour vers la version [email protected]. Ensuite, vous devez rechercher le nom de fichier "SQLite3.UWP.vcxproj". Essayez de remplacer "v141" par "v140". J'utilise actuellement Visual Studio 2015 Professional. S'il s'agit de Visual Studio 2017, il n'est pas nécessaire de changer de version dans le fichier SQLite3.UWP.vcxproj.

1
FrontEndOnDemand

Dans mon cas, cette erreur s'est produite car le dossier de sortie contenait un point pour le rendre relatif au répertoire en cours. Le problème a été résolu en supprimant le point.

Le Build output path incriminé était:

.\bin\Output

Le problème a été résolu en le changeant en 

bin\Output

Le chemin de sortie de la construction se trouve dans l'onglet Build des propriétés du projet. Il existe un chemin différent pour chaque combinaison de Configuration et Platform.

1
JotaBe

Je viens d'avoir le problème pour certains problèmes de structure de service dans MSBuild.

La première étape consistait à cliquer avec le bouton droit de la souris sur chaque projet affecté et à extraire ses propriétés, en sélectionnant l'onglet Construire, puis en définissant la cible de la plate-forme sur x64.

La deuxième étape consistait à accéder au gestionnaire de configuration et à configurer chaque projet afin qu'il utilise également x64 pour Debug et Release.

C'était pour un projet VS2017.

1
MattD

Je n'ai eu cette erreur que lorsque je publiais mon projet Web. J'avais choisi par erreur la mauvaise configuration de construction lors de la configuration du profil de publication.

1
raterus

J'utilisais MSBuild pour créer plusieurs fichiers .sln et j'avais également ajouté une nouvelle étape à la création d'un fichier .csproj lorsque j'ai rencontré cette erreur.

@ Saurabh's answer a souligné la racine du problème. Cependant, lors de la correction, l'ajout de /p:Platform=AnyCPU à la section Arguments de MSBuild n'a pas résolu le problème. En fait, j'avais besoin de mettre à jour la valeur de la plate-forme à l'étape de construction.

Toutes les autres étapes de construction utilisaient la valeur de la variable $(BuildPlatform) (qui se trouvait être "n'importe quel cpu", avec un espace dedans).

(Si j'avais construit plusieurs fichiers .csproj, j'aurais probablement créé une deuxième variable pour la plate-forme AnyCPU.)

 Screenshot of Visual Studio Build step

0
Keiki

J'ai eu deux configs de projet, Debug et Release. Lorsque la construction Release a été utilisée, cette erreur s'est produite. Le problème que j’ai constaté est que, dans le fichier csproj, la configuration Debug était presque en haut et que la configuration Release était entièrement en bas.

Déplacer manuellement la version Release juste en dessous de la version Debug l'a corrigé.

Je suppose que j'ai mal fait quelque chose lors de la configuration de mes configurations de build, car cela ne me semble pas quelque chose que j'aurais dû avoir à ajuster manuellement.

0
MM-MikeSauce

La propriété OutputPath n'est pas définie pour projet le message d'erreur apparaît si une variable d'environnement Platform existe (comme cela semble se produire sur les ordinateurs portables HP) et que la cible de MSBuild contient une référence à un autre projet Visual Studio. 

Après avoir renommé la variable d'environnement Platform, ma construction fonctionne maintenant.

Il semble que le paramètre /p:Platform="Any CPU" soit appliqué à la solution cible mais ne «reporte» pas aux projets référencés. Dans mon cas, le message d'erreur indiquait que les projets référencés utilisaient la variable d'environnement Platform=MCD.

0
jtc

Cette erreur est trompeuse et peut être causée par un problème différent. Vérifiez le message entier:

The OutputPath property is not set for project 'myproject'.  Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='myconfig'  Platform='AnyCPU'.  This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform.

Ma configuration de construction manquait ce noeud dans le csproj:

<PlatformTarget>AnyCPU</PlatformTarget>

Bien que AnyCPU soit la plate-forme sélectionnée dans la liste déroulante, le code XML réel n'y était pas. L'ajouter corrige l'inadéquation entre le projet et l'autre projet auquel il faisait référence.

0
user3063448