web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'Microsoft.Web.Infrastructure,

J'ai essayé de télécharger mon site Web sur un serveur. Cela fonctionnait bien avec mon hôte local, j'ai donc téléchargé tout le contenu de mon dossier localhost wwwroot sur le serveur et modifié la chaîne de connexion.

Mais il y a cette erreur: 

Exception information: 
    Exception type: InvalidOperationException 
    Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or Assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
   at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
   at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
   at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

Could not load file or Assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
   at RouteDebug.PreApplicationStart.Start()

Le projet était nopcommerce.

Que devrait-on faire pour résoudre cette erreur?

68
user1348351

Vous devrez inclure la dll avec votre projet et y ajouter une référence.

Voici un lien vers un problème similaire déjà sur Stack: MVC3 Deployment Dependency Problems

54
Colin Pear

J'ai trouvé que même si cela fonctionnait sur ma boîte de dev, l'Assemblée n'était pas ajoutée au projet. Recherchez Microsoft.Web.Infrastructure dans NuGet et installez-le à partir de là. Ensuite, assurez-vous que l'option Copie locale est sélectionnée.

25
jwrightmail

Après un nettoyage de référence, il a finalement supprimé Microsoft.Web.Infrastructure, mais pas du fichier packages.config. Après avoir essayé de l'ajouter à nouveau à l'aide du Package Manager Console, Visual Studio indique qu'il est déjà installé, ce qui est faux car il a été supprimé.

J'ai ensuite supprimé la ligne de code dans le fichier packages.config 

<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />

et a lancé la commande à nouveau

PM> Install-Package Microsoft.Web.Infrastructure

Après cela, maintenant cela fonctionne bien.

24
riaandl

Installer AspNetMVC3ToolsUpdateSetup téléchargé depuis ici résoudrait ce problème sans ajouter de référence 

23
Sgurijala

Resharper a détecté Microsoft.Web.Infrastructure comme une référence inutilisée et je l'ai donc supprimée. Localement, cela fonctionnait bien, mais j'ai eu la même erreur après la publication sur dev.

Conclusion, faites attention lorsque vous supprimez des références marquées comme inutilisées par Resharper

5
Javier

Essayez d’installer Web Platform à partir de https://www.Microsoft.com/web/platform/

J'espère que ça aide.

4
Ivo

Problème rencontré sur un nouvel ordinateur Windows 10 sous VS2015 avec un projet existant . Package Manager 3.4.4 . Restauration des packages activée.

La restauration ne semble pas fonctionner complètement . Il a fallu exécuter ce qui suit sur la ligne de commande du gestionnaire de packages.

Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall

Cela a apporté les modifications suivantes à mon fichier de solution La restauration n'a PAS été effectuée.

<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
  <Private>True</Private>
</Reference>

Ajouter simplement les éléments ci-dessus à la section ItemGroup dans votre fichier de solution résoudra ÉGALEMENT le problème à condition que ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll existe.

Il est plus facile de simplement effectuer la réinstallation, mais il est bon de comprendre ce que cela fait différemment de la restauration du paquet.

3
Rohan

J'avais un problème similaire. NuGet a montré que le paquet a été installé avec succès, mais la référence n'a pas été ajoutée à mon projet.

Exécuter <PM> Install-Package Microsoft.Web.InfraStructure n'a également pas aidé car le gestionnaire de paquets disait qu'il était déjà installé

Je l'ai finalement ajouté manuellement en éditant le fichier csproj et en ajoutant ces lignes:

 <Reference Include="Microsoft.Web.Infrastructure">
  <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
  <Private>True</Private>
</Reference>

Cela a résolu le problème.

3
memory of a dream

Pour moi, Microsoft.Web.Infrastructure.dll était absent du dossier bin, il n'était pas configuré pour copier en local dans le projet . Copié la DLL d'un autre projet dans la solution et la page se charge.

1
Alex Hedley

Vous devez télécharger le framework ASP.NET MVC sur le serveur hébergeant votre application. C'est une solution rapide, il suffit de télécharger et d'installer à partir d'ici (Ceci est le framework MVC 3 http://www.asp.net/mvc/mvc3 ), alors vous êtes prêt à partir.

1
KickerKeeper

Sur ma machine, la dépendance Nuget n'a pas été téléchargée correctement, le dossier lib du paquet nuget n'existe pas, d'où l'erreur. 

Avant

 enter image description here

J'ai renommé le package Nuget dans le dossier packages et Nuget l'a retéléchargé correctement avec le dossier lib nécessaire.

Après enter image description here

0
Morgan Kenyon

Je ne sais pas ce qui s'est passé avec mon projet, mais celui-ci faisait référence au mauvais chemin d'accès à la DLL. Nuget l'a installé correctement et c'était bien sur mon système de fichiers avec les autres packages, mais juste référencé de manière incorrecte. 

Le dossier packages existe deux répertoires en haut de mon projet et il ne s’en élevait qu’un en commençant le chemin par ..\packages\. J'ai changé le chemin pour commencer avec ..\..\packages\ et cela a résolu mon problème.

0
jlafay

Commencez par supprimer Microsoft.Web.Infrastructure de package.config.

et a de nouveau exécuté la commande

PM> Install-Package Microsoft.Web.Infrastructure Et assurez-vous que la propriété Copier en local doit être vraie.

0
Amrendra

Solution très simple:

Dans Visual Studio, accédez à Outils/Gestionnaire de packages de bibliothèque/Console du gestionnaire de packages.

<PM> Install-Package Microsoft.Web.InfraStructure

Passez un bon moment

0
Omid Rahimi

Voici mon scénario.

J'ai eu une solution multi projet contenant les projets A, B, C .. N.

Le projet B était une bibliothèque de code contenant une fabrique pour les objets selectlist.

Le projet se déroulerait comme prévu en développement, mais lors de la publication dans notre environnement de test, l'erreur que vous rencontriez se présentait:

Could not load file or Assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Ce qui s’était passé était par le biais du gestionnaire de paquets Nuget; j’avais accidentellement installé "Microsoft ASP.NET MVC" qui installait des dépendances pour:

  • Microsoft.AspNet.Razor
  • Microsoft.AspNet.WebPages

Bas et voici, Microsoft.AspNet.WebPages dépend de "Microsoft.Web.Infrastructure".

Ma solution consistait à désinstaller les trois packages mentionnés ci-dessus (MVC, Razor, WebPages), puis à cliquer avec le bouton droit sur références> ajouter une référence> Assemblages> Extensions> System.Web.MVC.

0
Rob

Dans certains cas, nettoyer le projet/la solution, retirer physiquement bin/ et obj/ et reconstruire permettrait de résoudre ces erreurs. Cela peut arriver lorsque, par exemple, des packages et des références sont installés/ajoutés puis supprimés, laissant ainsi des artefacts.

Cela m'est arrivé à Microsoft.Web.Infrastructure: au début, le projet ne nécessitait pas cet assemblage. Après quelques expériences dont l’effet net était supposé être nul à la fin, j’ai eu cette exception. Les étapes ci-dessus l'ont résolu sans qu'il soit nécessaire d'installer une dépendance inutilisée.

0
Oleg Shirokikh