web-dev-qa-db-fra.com

FileNotFound tente de charger la version 14.0.0.0 de "Microsoft.VisualStudio.Web.PageInspector.Runtime"

J'ai un projet MVC qui fonctionne parfaitement jusqu'à ce que je mette à jour ma machine il y a une semaine. Je reçois maintenant une erreur de liaison lorsque j'essaie d'exécuter le projet

L'assistant de débogage géré "BindingFailure" a détecté un problème dans "C:\Program Files (x86)\IIS Express\iisexpress.exe".

Informations supplémentaires: l'assembly avec le nom d'affichage "Microsoft.VisualStudio.Web.PageInspector.Runtime" n'a pas pu se charger dans le contexte de liaison "LoadFrom" de l'AppDomain avec l'ID 2. La cause de l'échec était: System.IO.FileNotFoundException: pourrait ne charge pas le fichier ou l'assembly "Microsoft.VisualStudio.Web.PageInspector.Runtime, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Si je continue après l'erreur, le projet se charge correctement. Cependant, lorsque j'exécute le projet en tant que rôle Web dans un service cloud, il ne s'exécute pas car il continue d'apparaître avec le rôle prend plus de temps que prévu .... message

Je suppose que cela a à voir avec le problème de liaison lors de l'exécution en tant que projet autonome

Est-ce que quelqu'un à déjà rencontré cela avant?


EDIT J'ai recherché la référence de l'assembly dans les fichiers de configuration, rien ne s'est produit. Finalement, je viens de réinstaller le nouveau SDK Azure. Le message d'erreur de liaison avec le pageinspector apparaît toujours à la charge, mais si je continue le projet, cela fonctionne bien. Pour le moment, je devrai vivre avec ce message ennuyeux jusqu'à ce que je trouve une solution

29
Zee18

j'ai observé cela sur une machine avec Visual Studio 2013 installé.

cela a commencé à se produire, pour autant que je sache, après la mise à jour VS2013 4.

(cela s'est peut-être produit auparavant, mais c'est nouveau pour mon environnement)

J'ai localisé cet assemblage dans le GAC (deux versions, une pour VS2012, l'autre pour VS2013) mais ces versions ont un nom fort (évidemment) avec une version de "12.3.0.0" (notez que l'erreur de résolution ci-dessus concerne une version " Assemblage de 14 ".)

Voici la pile d'appels pour la première instance de cette exception particulière:

mscorlib.dll!System.Reflection.RuntimeAssembly.nLoad(System.Reflection.AssemblyName fileName, string codeBase, System.Security.Policy.Evidence assemblySecurity, System.Reflection.RuntimeAssembly locationHint, ref System.Threading.StackCrawlMark stackMark, System.IntPtr pPrivHostBinder, bool throwOnFileNotFound, bool forIntrospection, bool suppressSecurityChecks) + 0x23 bytes   
mscorlib.dll!System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity, System.Reflection.RuntimeAssembly reqAssembly, ref System.Threading.StackCrawlMark stackMark, System.IntPtr pPrivHostBinder, bool throwOnFileNotFound, bool forIntrospection, bool suppressSecurityChecks) + 0x99 bytes   
mscorlib.dll!System.Reflection.Assembly.Load(System.Reflection.AssemblyName assemblyRef) + 0x25 bytes   
Microsoft.VisualStudio.Web.PageInspector.Loader.dll!Microsoft.VisualStudio.Web.PageInspector.Runtime.Loader.RuntimeLoader.GetRuntimeAssembly(out System.Reflection.Assembly runtime) + 0xdb bytes   
Microsoft.VisualStudio.Web.PageInspector.Loader.dll!Microsoft.VisualStudio.Web.PageInspector.Runtime.Loader.RuntimeLoader.LoadRuntime() + 0x2a bytes    
Microsoft.VisualStudio.Web.PageInspector.Loader.dll!Microsoft.VisualStudio.Web.PageInspector.Runtime.Loader.RuntimeLoader.PreApplicationStart() + 0x27 bytes    
[Native to Managed Transition]  
System.Web.dll!System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(System.Collections.Generic.ICollection<System.Reflection.MethodInfo> methods, System.Func<System.IDisposable> setHostingEnvironmentCultures) + 0x142 bytes 
System.Web.dll!System.Web.Compilation.BuildManager.InvokePreStartInitMethods(System.Collections.Generic.ICollection<System.Reflection.MethodInfo> methods) + 0x5a bytes 
System.Web.dll!System.Web.Compilation.BuildManager.CallPreStartInitMethods(string preStartInitListPath, out bool isRefAssemblyLoaded) + 0x67 bytes  
System.Web.dll!System.Web.Compilation.BuildManager.ExecutePreAppStart() + 0x9a bytes    
System.Web.dll!System.Web.Hosting.HostingEnvironment.Initialize(System.Web.Hosting.ApplicationManager appManager, System.Web.Hosting.IApplicationHost appHost, System.Web.Configuration.IConfigMapPathFactory configMapPathFactory, System.Web.Hosting.HostingEnvironmentParameters hostingParameters, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) + 0x20a bytes   
System.Web.dll!System.Web.Hosting.HostingEnvironment.Initialize(System.Web.Hosting.ApplicationManager appManager, System.Web.Hosting.IApplicationHost appHost, System.Web.Configuration.IConfigMapPathFactory configMapPathFactory, System.Web.Hosting.HostingEnvironmentParameters hostingParameters, System.Security.Policy.PolicyLevel policyLevel) + 0x16 bytes 
[Appdomain Transition]  
System.Web.dll!System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) + 0x12f3 bytes 
System.Web.dll!System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) + 0x25 bytes    
System.Web.dll!System.Web.Hosting.ApplicationManager.GetAppDomainWithHostingEnvironment(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) + 0x6c bytes  
System.Web.dll!System.Web.Hosting.ApplicationManager.CreateObjectInternal(string appId, System.Type type, System.Web.Hosting.IApplicationHost appHost, bool failIfExists, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) + 0x4d bytes   
System.Web.dll!System.Web.Hosting.ProcessHost.StartApplication(string appId, string appPath, out object runtimeInterface) + 0x18f bytes 
[Native to Managed Transition]  

Cela suggère que le problème est de Microsoft (et non quelque chose que j'ai fait dans, disons, un assemblage, une application ou une configuration de machine.)

J'ai vérifié toutes mes configurations (littéralement, toutes les configurations web.config de mon projet ainsi que toutes les configurations de machine d'exécution .NET, toutes les versions/plates-formes) et je n'ai trouvé aucune référence à cet assembly nulle part.

Pour contourner cette erreur (que Microsoft doit corriger), j'ai ajouté une redirection de liaison d'assembly, comme suit, à mon web.config (PAS mes configurations de machine):

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.VisualStudio.Web.PageInspector.Runtime" publicKeyToken="b03f5f7f11d50a3a" />
    <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="12.3.0.0" />
  </dependentAssembly>

Cela suggère que Microsoft a publié une version de Visual Studio, ou similaire, qui se lie à une future version non publiée de ces assemblys.

J'espère que cela aide quelqu'un d'autre!

28
Shaun Wilson

Si vous décochez Exceptions levées dans les options d'exception, il devrait cesser de vous y inviter. Je suppose que cela fait partie de son fonctionnement normal. J'ai remarqué la même chose.

8
Michael Rogers

Au lieu de modifier les fichiers de framework, essayez de les ajouter au fichier web.config:

<system.web>
    <httpRuntime targetFramework="4.5" />
        <compilation debug="true" targetFramework="4.5" >
          <assemblies>
            <remove Assembly="Microsoft.VisualStudio.Web.PageInspector.Loader, 
               Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
          </assemblies>
        </compilation>
    ...
</system.web>
7
Joel