web-dev-qa-db-fra.com

avertissement: Tous les projets faisant référence à MyProject.csproj doivent installer le package de nuget Microsoft.Bcl.Build

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

Lorsque je clique avec le bouton droit de la souris sur la solution ou sur le projet principal et que je sélectionne Gérer les packages NuGet, je vois un ensemble de mises à jour Microsoft qui sont apparemment devenues disponibles au cours du dernier mois. Si je clique sur le bouton Tout mettre à jour, les mises à jour sont apparemment installées sans aucun problème évident, mais lorsque je crée la solution, je reçois 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 les packages ManageNuGet 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?

MODIFIER:

Grâce à l’utilisateur swell , je sais maintenant qu’un problème lié à Microsoft Connect a été ouvert pour ce problème ici .

82

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

Il est sûr de désactiver pour les références de projet des projets qui ne supportent pas encore Nuget. 

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

BclBuildValidateNugetPackageReferences

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>
52
TheESJ

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, je rencontrais ce problème avec un projet Azure et la solution de contournement suivante était requise pour que l'avertissement disparaisse:

Lorsque vous double-cliquez sur l'avertissement dans VisualStudio, vous accédez à 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 de 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 construction particulière.

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

EXEMPLE

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

  1. Cliquez-droit sur "MyAzureProject" dans l'Explorateur de solutions et sélectionnez "Modifier le fichier de projet".
  2. Trouvez 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. Votre référence de 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-droit sur "MyAzureProject" dans l'Explorateur de solutions et choisissez "Recharger le projet".

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

59
AggieEric

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

Après enquête, nous avons constaté que le fichier .csproj du projet de service Azure doit être modifié pour inclure <Properties>SkipValidatePackageReferences=true</Properties>.

Cela ne ressort pas de la réponse de @TheESJ et a donc décidé de poster une réponse séparée. Merci à @TheESJ.

15
Santosh

J'ai rencontré ce problème plusieurs fois et la méthode Properties fonctionne, mais lorsque je traitais avec un projet Wix, je devais plutôt procéder comme suit:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Lorsque j'ai utilisé le nœud Propriétés XML, j'ai eu une nouvelle erreur:

La propriété OutputPath n'est pas définie pour le projet 'MyInstallerProject.csproj'. S'il vous plaît vérifier pour vous assurer que vous ont spécifié une combinaison valide de Configuration et de plate-forme pour ce projet. Configuration = 'Plateforme de débogage' = 'x86'. Cette erreur peut apparaît également si un autre projet essaie de suivre un référence de projet à projet à ce projet, ce projet a été déchargé ou n'est pas inclus dans la solution, et le référencement le projet ne construit pas en utilisant la même configuration ou une configuration équivalente ou plate-forme.

0
ozz