web-dev-qa-db-fra.com

Références .Net 2015 avec triangle jaune pour les paquets Nuget sur les bibliothèques portables

Je sais que la question a déjà été posée, mais aucune des résolutions suggérées ne fonctionne pour moi, donc je vais la poser à nouveau et, espérons-le, obtenir de nouvelles suggestions. Certains articles que j'ai lus:

VS Références .Net avec triangle jaunePourquoi une icône d’avertissement apparaît-elle lorsque j’ajoute une référence à un projet de plug-in MEF?Le point d'exclamation dans l'icône en forme de triangle jaune (dans l'Explorateur de solutions)

Mes 5 bibliothèques portables visent toutes les mêmes frameworks (j'ai vérifié et revérifié car c'était l'une des suggestions!):

  • .NET Framework 4.5
  • ASP.NET Core 1.0
  • Windows Phone 8
  • Windows Phone 8.1
  • Windows Phone Silverlight 8
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.iOS (classique)

Ce que j'ai essayé/fait jusqu'à présent:

  • Supprimez les références de package Nuget manuellement de tous les projets.
  • Vérifiez chaque .csproj et assurez-vous que les références ont bien été supprimées.
  • Supprimer le dossier des packages à la racine de ma solution
  • J'ai essayé de réinstaller tous les paquets via le gestionnaire de console. Pas encore d'erreur Le triangle jaune est toujours affiché.
  • J'ai essayé de ré-installer tous les paquets via le gestionnaire Nuget. Pas encore d'erreur Le triangle jaune est toujours affiché.

Voici la section d'une de mes bibliothèques de classes portables:

<ItemGroup>
    <Reference Include="crypto">
      <HintPath>..\..\..\packages\Portable.BouncyCastle.1.8.1\lib\portable-
        net4+sl5+wp8+win8+wpa81+MonoTouch10+MonoAndroid10+xamarinmac20+xamarinios10
        \crypto.dll
      </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json">
  <HintPath>..\..\..\packages\Newtonsoft.Json.8.0.3\lib\portable-
      net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Extensions">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Primitives">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll
  </HintPath>
  <Private>True</Private>
</Reference>

Mon chemin de projet physique est:

C:\xxxx\xxxxxx\xxxxx-xxxxxxx

donc, en prenant Bouncycastle comme exemple et basé sur ce qui précède, je suppose que le chemin complet ressemblerait à ceci:

C:\xxxx\xxxxxx\xxxxx-xxxxxxx\packages\Portable.BouncyCastle.1.8.1\lib\portable-net4 + sl5 + wp8 + win8 + wpa81 + MonoTouch10 + MonoAndroid10 + xamarinmac20 + xamarinios10\crypto.dll

Cela semble être un problème uniquement sur mes bibliothèques portables, car j'ai réinstallé tous les paquets Nuget sur ma solution uwp et ils ont tous fonctionné comme prévu. Ce qui est frustrant, c’est que mon projet, qui se trouve toujours à son emplacement d’origine, fonctionne parfaitement bien. J'ai désinstallé les paquets et les ai réinstallés et tout fonctionne à 100% comme prévu.

Quelqu'un a-t-il d'autres suggestions?

23
Thierry

J'ai compris quel était le problème!

Comme mentionné à @Gusman, mon avertissement a été désactivé. Une fois que je les ai activés, les éléments suivants sont affichés pour mes projets portables:

Warning: IDE0006 - Error encountered while loading the project. Some project
features, such as full solution analysis for the failed project and projects
that depend on it, have been disabled

et il a fourni un lien vers cet article Diagnostiquer les erreurs de construction du système de projet

Après avoir suivi les instructions fournies et inspecté les nombreux fichiers se terminant par designtime.log, j’ai remarqué qu’ils portaient tous un FAIL faisant référence à un paquet Nuget, mais comme je l’avais mentionné, je les ai tous supprimés de mes différents projets. le .csproj de l'un d'eux et c'est à ce moment-là que j'ai repéré le (s) problème (s)!

Il y a en fait 2 problèmes:

  1. La référence Microsoft.BCL.Build pour Nuget ne sera pas supprimée correctement !!

  2. Lors de la ré-addition du package Microsoft.BCL.Build Nuget, il ne définit pas le chemin correctement dans le .csproj

Voici un exemple de la faute:

<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21
       \build\Microsoft.Bcl.Build.targets" Condition="Exists
       ('..\..\..\packages\Microsoft.Bcl.Build.1.0.21
       \build\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.Microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\
        Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format
        ('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21
        \build\Microsoft.Bcl.Build.targets'))" />
    <Error Condition="!Exists('..\..\..\packages\Microsoft.Bcl.Build.1.0.21\build\
        Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format
        ('$(ErrorText)', '..\..\..\packages\Microsoft.Bcl.Build.1.0.21\
        build\Microsoft.Bcl.Build.targets'))" />
</Target>

Comme vous pouvez le voir, la première ligne, c.-à-d. <Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21> ne devrait pas être là et pourtant, elle semble rester dans le projet même si Microsoft.BCL.Build a été supprimé.

Si vous en avez besoin, laissez-le et corrigez la deuxième entrée car c'est ce que j'ai fait. Comme vous pouvez le constater, deux entrées vérifient le package Microsoft.BCL.BuildNuget. Dans mon cas, j'ai simplement enlevé le premier:

`<Error Condition="!Exists('..\packages\`

et gardé celui-ci:

`<Error Condition="!Exists('..\..\..\packages\`

Une fois que j'ai fini de modifier le .csproj, j'ai rechargé le projet dans ma solution et non seulement le problème Microsoft.BCL.Build a été résolu, mais il a également résolu toutes les autres dépendances Nuget marquées du triangle jaune.

J'ai passé la majeure partie de ma journée à ce sujet, mais j'espère que cela aidera les autres.

22
Thierry

Si vous n'avez reçu aucune erreur de sortie lors de l'installation et qu'il n'y a pas Avertissements on build/rebuild Simplement:

  1. Redémarrer Visual Studio
50
pimbrouwers

J'ai rencontré le même problème sur une solution dans vs2017 avec 2 projets pour l'infrastructure DotNetCoreApp 1.1. Tous mes paquets ont montré le signe d'exclamation/triangles jaunes. Une fois que j'ai couru vs2017 en tant qu'administrateur, le problème a été résolu.

5
Remco

J'ai eu le même problème lorsque j'ai cloné un projet sur mon ordinateur portable à partir de GitHub. Des triangles jaunes sont également affichés sur mes EntityFramework et AspNet.Identity. Ce que j'ai fait pour résoudre le problème dans mon cas a été de supprimer le dossier des packages (qui contient les packages de Nuget) et de restaurer les packages une fois le projet ouvert. En conséquence, ces avertissements ont été désactivés après le redémarrage de VS2017.

2
Jason Ho
  1. Copiez vos fichiers de projet dans un autre dossier
  2. Supprimer le dossier avec le projet de la solution
  3. Créer un nouveau projet avec le même nom
  4. Copier les fichiers de l'étape 1 dans le nouveau projet
  5. Restaurer les paquets
0
shop350

Je sais que c’est un vieux billet mais récemment, j’ai eu cette erreur d’avertissement après avoir changé de genoux. J'ai fait un get avec TFS (dans Visual Studio 2017) et toutes mes références portaient soudain une icône d'avertissement. Ce que j’ai trouvé à travailler pour moi est la suivante: allez dans le navigateur d’objets, puis sélectionnez la liste déroulante "Tous les composants" et sélectionnez enfin votre framework. Pour moi, cela a fonctionné comme un charme.

 Resolve warning references error

0
Nehoss