Où puis-je trouver un package NuGet pour la mise à niveau vers System.Web.Http v5.0.0.0?

125

Je viens de mettre à niveau un projet ASP.NET MVC4 pour utiliser Unity.WebApi version 5.0.0.0 et il nécessite System.Web.Http v 5.0.0.0 selon l'erreur suivante:

Assembly 'Unity.WebApi, Version=5.1.0.0, Culture=neutral, PublicKeyToken=43da31bc42a85347' uses 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'   

Je fais actuellement référence à System.Web.Http v4.0 mais j'ai les packages NuGet suivants mis à niveau vers leurs dernières versions respectives:

  • ANTLRv3

  • Fournisseurs universels Microsoft ASP.NET

  • Microsoft.Web.Infrastructure

  • Microsoft ASP.NET MVC

  • Rasoir Microsoft ASP.NET

  • Bibliothèques de base des fournisseurs universels Microsoft ASP.NET

  • Fournisseurs universels Microsoft ASP.NET

  • Client Microsoft ASP.NET Web API 2

  • API Web Microsoft ASP.NET 2 Core

  • Hôte Web de l'API Web Microsoft ASP.NET 2

  • API Web Microsoft ASP.NET 2

  • Page Web Microsoft ASP.NET

  • Microsoft.Web.Infrastructure

  • WebGrease

    via NuGet. Je n'ai pas répertorié les bibliothèques JavaScript pertinentes telles que Micrososft.jQuery.Unobtrusive Validation, etc.

Quel est le package NuGet pour mettre à niveau System.Web.Http ou dois-je le faire manuellement?

Klaus Nji
la source
Si vous sélectionnez "Inclure la version préliminaire" au lieu de "Stable" dans le gestionnaire de package NuGet, vous verrez System.Web.Http. C'est ça que tu cherches?
William
suis-je censé rechercher System.Web.Http après avoir sélectionné "Inclure la version préliminaire"? Ou où dois-je chercher?
Klaus Nji
Ne tenez pas compte de mon commentaire ci-dessus! Ce paquet est obsolète. Vous devriez essayer de suivre la suggestion de Stjin ci-dessous. Curieusement, lorsque j'installe Unity.WebApi dans mon projet MVC 4, il met à jour automatiquement la référence System.Web.Http vers la v5.0, donc je ne sais pas pourquoi cela ne fonctionne pas pour vous. Si tout le reste échoue, vous pouvez essayer de désinstaller le package Unity et de le réinstaller.
William

Réponses:

206

Vous avez besoin du package Microsoft.AspNet.WebApi.Core .

Vous pouvez le voir dans le fichier .csproj:

<Reference Include="System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45\System.Web.Http.dll</HintPath>
</Reference>
user247702
la source
J'ai Microsoft ASP.NET Web API 2 Core (id = Microsoft.AspNet.WebApi.Core) mis à niveau vers la v5.0.0.0 comme indiqué ci-dessus. Il semble que je doive les supprimer et les rajouter?
Klaus Nji
7
Dû également nettoyer, supprimer bin_deployableAssemblies et reconstruire.
Klaus Nji
Avoir presque exactement le même projet. Où se trouve le dossier bin_deployable Assemblies dont tout le monde parle?
nzondlo
@nzondlo Je crois que ce dossier est généré lors de la publication d'une application. Pas tout à fait sûr cependant.
user247702
1
@nzondlo bin_deployableAssembliesn'est qu'un dossier normal, mais il bénéficie d'un traitement spécial lorsqu'il existe dans le répertoire de votre projet. Tout fichier .dll de ce dossier est copié dans le répertoire bin lorsque vous publiez votre application Web. Il a été utilisé pour déployer la dll System.Web.Mvc (et d'autres) avec votre application Web avant que NuGet ne devienne courant.
Steven Liekens
9

J'ai plusieurs projets dans une solution. Pour certains projets, j'avais précédemment ajouté les références manuellement. Lorsque j'ai utilisé NuGet pour mettre à jour le package WebAPI, ces références n'étaient pas mises à jour automatiquement.

J'ai découvert que je pouvais soit mettre à jour manuellement ces références pour qu'elles pointent vers la DLL v5 dans le dossier Packages de ma solution, soit effectuer les opérations suivantes.

  1. Accédez à "Gérer les packages NuGet"
  2. Sélectionnez le package installé «Microsoft ASP.NET Web API 2.1»
  3. Cliquez sur Gérer et vérifiez les projets que j'ai ajoutés manuellement auparavant.
Tony
la source
Désinstaller le package, puis le réinstaller immédiatement, corrigez-le pour moi. Cela s'est produit lors de la mise en place du projet sur une machine de développement différente. La restauration automatique des packages a obtenu la mauvaise version d'une manière ou d'une autre.
Matt J.
1
Le problème principal est la mise à jour de Web.Api pour le projet principal, mais les projets référencés utilisent toujours une version plus ancienne de celui-ci. Il doit être mis à jour ensemble via un clic droit sur le nom de la solution et le menu Gérer les packages Nuget comme @Tony mentionné. à votre santé!
Orhaan
Install-Package Microsoft.AspNet.WebApi.Core
C Sharper