avertissement: tous les projets référençant MyProject.csproj doivent installer le package nuget Microsoft.Bcl.Build


90

J'ai une application ASP.NET MVC 4 développée dans VS 2012. L'application se compose d'un projet principal (MyProject), d'un projet de test unitaire (MyProject.Tests), d'un projet de déploiement Azure (MyProject.Azure) et de quelques projets de bibliothèque à usage général.

Lorsque je clique avec le bouton droit sur la solution ou le projet principal et que je sélectionne Gérer les packages NuGet, je vois un tas de mises à jour Microsoft qui sont apparemment devenues disponibles au cours du dernier mois environ. Si je clique sur le bouton Tout mettre à jour, les mises à jour sont apparemment installées sans aucun problème évident, mais lorsque je construis la solution, j'obtiens ce message d'erreur DEUX FOIS:

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

Ok, j'ai donc deux projets qui font référence à MyProject: MyProject.Tests et MyProject.Azure. Je peux cliquer avec le bouton droit sur MyProject.Tests, sélectionner ManageNuGet Packages et ajouter Microsoft.Bcl.Build. Cela supprime l'un des deux avertissements. Mais VS ne me donne pas la possibilité de gérer les packages NuGet pour le projet MyProject.Azure .

Comment ajouter le package Microsoft.Bcl.Build au projet de déploiement Azure?

ÉDITER:

Grâce au gonflement des utilisateurs , je sais maintenant qu'un problème Microsoft Connect pour ce problème a été ouvert ici .


2
Merci pour la référence au problème de connexion, c'est un problème ennuyeux.
Paul Keister

1
Lié à l'avertissement lors de la construction du projet de déploiement, il existe également un bogue qui provoque un faux avertissement lors de la publication du projet. Le bogue lié à la publication est également signalé sur Connect . Je ne connais pas de solution de contournement.
Edward Brey

3
Le même problème m'arrive pour les projets WiX qui ont des références à d'autres projets (dans le but de récolter la sortie du projet aka. "Chaleur"). Cela n'a aucun sens pour un projet d'installation WiX d'installer des packages NuGet! Argh !!
Jaans

1
Le lien vers le problème de connexion renvoie maintenant 404 connect.microsoft.com/VisualStudio/feedback/details/789839/…
Ryan Gates

Réponses:


54

Si vous double-cliquez sur l'avertissement, il vous donne des instructions pour désactiver l'avertissement.

Il est prudent de désactiver les références de projet des projets qui ne prennent pas encore en charge Nuget.

Voir la partie ci-dessous en gras copiée à partir de Microsoft.Bcl.Build.targets.

BclBuildValidateNugetPackageRéférences

Cette cible peut être désactivée pour une référence de projet en définissant SkipValidatePackageReferences = true pour la référence:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>

4
Arthur, pouvez-vous essayer de définir la valeur de métadonnées AdditionalPropertes au lieu de Propriétés?
TheESJ

5
@TheESJ J'avais ce problème avec un projet WiX et on dirait que la définition de AdditionalProperties au lieu de Properties fonctionne. Je suis intéressé de savoir pourquoi
lc.

3
Cela fonctionne uniquement pour créer la solution, mais lorsque vous utilisez réellement `` Exécuter '' avec le projet azure comme projet de démarrage, vous verrez à nouveau les avertissements.
eoleary

2
Ne travaillez même pas sur build. Édition communautaire VS 2015.
Artyom

2
Ne fonctionne pas dans VS2015 Professional. J'ai le même problème en ajoutant cette ligne.
aclalex

63

La réponse fournie par TheESJ est correcte, mais le libellé n'était pas clair pour moi. Comme je ne peux pas commenter la réponse, je fournirai plus de détails ici. Plus précisément, j'avais ce problème avec un projet Azure et la solution de contournement suivante était nécessaire pour que l'avertissement disparaisse:

Lorsque vous double-cliquez sur l'avertissement dans VisualStudio, vous serez redirigé vers la cible BclBuildValidateNugetPackageReferences dans le fichier Microsoft.BclBuild.targets. Au-dessus de l'élément cible réel, vous devriez trouver un grand bloc de commentaires qui parle de la désactivation des vérifications de référence du projet. Étant donné que les projets Azure ne peuvent pas avoir de références de bibliothèque, il est impossible pour ces projets Azure de répondre aux exigences de cette cible de build particulière.

La solution? Désactivez la vérification des références à partir du projet Azure car il est impossible d'ajouter réellement une référence de package nuget.

EXEMPLE

Supposons donc que nous ayons deux projets: MyAzureProject.ccproj qui fait référence à MyProject.csproj . Suivez ces étapes:

  1. Cliquez avec le bouton droit sur "MyAzureProject" dans l'Explorateur de solutions et sélectionnez "Modifier le fichier de projet".
  2. Recherchez la référence du projet à «MyProject». Cela devrait ressembler à quelque chose comme:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. Ajoutez l'élément suivant à l'intérieur de l'élément ProjectReference:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. La référence de votre projet devrait maintenant ressembler à ceci:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Cliquez avec le bouton droit sur "MyAzureProject" dans l'Explorateur de solutions et choisissez "Recharger le projet".

Vous devriez maintenant pouvoir reconstruire et l'erreur devrait disparaître.


17
Dans ma version de VS, je dois d'abord cliquer avec le bouton droit de la souris et "Décharger le projet" avant de pouvoir cliquer avec le bouton droit de la souris pour modifier le fichier de projet
pius

2
Vouliez-vous dire MyAzureProject.ccprojplutôt que MyAzureProject.csproj?
Edward Brey

Cela ne fonctionne que si j'ajoute «<Properties> SkipValidatePackageReferences = true </Properties>» au fichier de projet référencé * .csproj. Le simple fait de modifier * .ccproj ne fonctionne pas.
alexey

1
@pius C'est une petite fonctionnalité, mais il y a une option de menu contextuel «Modifier le fichier de projet» sous «Commandes d'alimentation» dans Productivity Power Tools , disponible pour plusieurs éditions de VS. Il déchargera le projet et ouvrira le fichier de projet pour vous en un clic.
Jeff le

16

J'ai rencontré le même problème et j'essayais de mettre à jour Microsoft.Bcl.Build.targets; ce qui n'a pas aidé.

Après une enquête, il a été constaté que le fichier .csproj du projet Azure Service doit être modifié pour inclure <Properties>SkipValidatePackageReferences=true</Properties>.

Cela n'apparaissait pas dans la réponse de @TheESJ et a donc décidé de publier une réponse distincte. Merci à @TheESJ.


2

J'ai rencontré ce problème à plusieurs reprises et la méthode Properties fonctionne effectivement, mais lorsque j'ai affaire à un projet Wix, j'ai dû faire ce qui suit à la place:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Lorsque j'ai utilisé le nœud Properties Xml, j'ai eu une nouvelle erreur:

La propriété OutputPath n'est pas définie pour le projet «MyInstallerProject.csproj». Veuillez vérifier que vous avez spécifié une combinaison valide de configuration et de plate-forme pour ce projet. Configuration = Plateforme 'Debug' = 'x86'. Cette erreur peut également apparaître si un autre projet essaie 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érencement ne génère pas le même ou un équivalent Configuration ou plate-forme.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.