2014-08-27 12 views
29

Ich habe ein MVC-Projekt, das perfekt funktioniert, bis ich meine Maschine vor einer Woche aktualisiert habe. Ich erhalte jetzt einen Binding Error beim Versuch, das Projekt auszuführenFileNotFound versucht, v14.0.0.0 von "Microsoft.VisualStudio.Web.PageInspector.Runtime" zu laden

Managed Debugging-Assistent 'BindingFailure' hat ein Problem in 'C: \ Programme (x86) \ IIS Express \ iisexpress.exe' entdeckt.

Weitere Informationen: Die Assembly mit dem Anzeigenamen 'Microsoft.VisualStudio.Web.PageInspector.Runtime' konnte nicht im Bindungskontext 'LoadFrom' der AppDomain mit der ID 2 geladen werden. Ursache des Fehlers war: System.IO .FileNotFoundException: Datei oder Assembly konnte nicht geladen werden 'Microsoft.VisualStudio.Web.PageInspector.Runtime, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder eine seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden.

Wenn ich nach dem Fehler fortfahren wird das Projekt korrekt geladen. Allerdings, wenn ich das Projekt als Web-Rolle in einem Cloud-Service ausführen, wird es nicht ausgeführt, wie es mit der Rolle erscheint dauert länger als erwartet .... Nachricht

Ich nehme an, dies hat zu tun mit dem Bindungsproblem beim Ausführen als eigenständiges Projekt

Hat jemand schon mal darüber gestoßen?


EDIT ich für die Montage Referenz in den Konfigurationsdateien gesucht, kam nichts auf. Schließlich habe ich gerade das neue azure SDK neu installiert. Die verbindliche Fehlermeldung mit dem PageInspector erscheint immer noch beim Laden, aber wenn ich das Projekt fortsetze, funktioniert es gut. Im Moment muss ich mit dieser lästigen Nachricht leben, bis ich eine Lösung finde

Antwort

8

Wenn Sie Ausnahmen ausgelöst in den Ausnahmeoptionen deaktivieren, sollte es Sie nicht mehr auffordern. Ich nehme an, dass es Teil seiner normalen Operation ist. Ich habe das Gleiche bemerkt.

+4

dies ist keine Lösung/beheben, ist dies ein hackish Problem zu umgehen, als die Ausnahme nach wie vor, wenn Sie geworfen wird ignoriere es. Darüber hinaus ist dies nicht Teil des normalen Betriebs. Dies ist ein schwerwiegender Fehler von Microsoft bei der Bindung an eine Visual Studio-vNext-Assembly, die niemals mit VS2013 bereitgestellt wird. Sie müssen es reparieren. –

-2

Ein ähnliches Problem trat auf, wenn von ASP.NET generierte Assemblies von einer Entwicklungsmaschine in eine Produktionsumgebung implementiert wurden (bezogen auf Assemblys, die für ASCX- und ASPX-Steuerelemente generiert wurden, die zur Laufzeit kompiliert wurden).

Wir kopieren und persistieren solche laufzeitgenerierten Assemblies aus temporären ASP.NET-Kompilierordnern (dh "C:/Users/[USER]/AppData/Local/Temp/Temporäre ASP.NET-Dateien /") um zu vermeiden, dass das System neu kompiliert wird, wenn der Dienst gestartet wird, um die Leistung zu verbessern. Die Verwendung von Assemblys, die auf einem Dev-Computer kompiliert wurden, führt jedoch Abhängigkeiten zu VisualStudio-Assemblys ein

Wir haben es behoben, indem wir die Produktionsumgebung diese Baugruppen selbst erzeugen ließen. Wir kopieren und beharren stattdessen auf diesen Produktionseinheiten und das Problem verschwindet vollständig.

Stellen Sie sicher, dass Sie nicht solche umständliche Verwendung von ASP.NET-generierten Assemblys tun, und es wird es wahrscheinlich beheben.

28

Ich habe beobachtet, dass dies auf einer Maschine mit installiertem Visual Studio 2013 geschieht.

es begann, so gut ich kann sagen, nach dem VS2013 Update 4.

(es früher aufgetreten sein können, aber das ist neu für meine Umgebung)

ich dieses Assembly im GAC befindet (zwei Versionen, eine für VS2012, die andere für VS2013), aber diese Versionen sind stark benannt (offensichtlich) mit einer Version von „12.3.0.0“ (nehmen Sie die obige Auflösungsfehler für eine Version „14“ Montage ist zu beachten)

Hier ist der Call-Stack für die erste Instanz dieser besonderen Ausnahme:.

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] 

Dies deutet darauf hin, dass das Problem Microsof ist t (und nicht etwas, was ich getan habe, sagen wir, eine Assembly, Anwendung oder Maschinen-Konfiguration.)

Ich habe alle meine configs (buchstäblich, alle, mein Projekt web.config sowie alle .NET Runtime machine configs, alle Versionen/Plattformen) und ich konnte nirgends einen Verweis auf diese Assembly finden.

um diesen Fehler zu umgehen (die Microsoft angehen muss) Ich habe eine Assembly Bindung Umleitung wie folgt hinzugefügt, um meine web.config (nicht meine Maschine configs):

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

Dies legt nahe, Microsoft hat ein Build von Visual Studio oder ähnlichem veröffentlicht, das gegen eine zukünftige, unveröffentlichte Version dieser Assemblies bindet.

Hoffe das hilft jemand anderen da draußen!

+1

Gute Arbeit. Keine Notwendigkeit, Ausnahmen in den Einstellungen nach anderen Antworten zu deaktivieren. –

+5

Bestätigen, dass dies in meinem VS2010-Projekt nach der Installation von VS2013 Community Edition + Updates passiert ist. Bestätigt auch, dass diese Lösung funktioniert. Gute Arbeit! Vielen Dank! –

+0

@Shaun Wilson Sie sind fantastisch, danke für die "Addieren von Assembly Binding Redirect auf die web.config" arbeiten um. –

6

Statt die Framework-Dateien zu ändern, versuchen Sie dies zu der Datei web.config hinzufügen:

<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> 
+0

@ downvoter Es stört mich nicht, solange es mit einem " Warum". – Joel

+0

Während ich Ihre Antwort nicht abgelehnt habe, würde ich bemerken, dass dadurch die Unterstützung von PageInspector deaktiviert wird. Dies kann in Ordnung sein, wenn Sie nicht beabsichtigen, es zu verwenden. Weitere Informationen zu dieser Funktion finden Sie unter: http: //www.asp.net/mvc/overview/views/using-page-inspector-in-aspnet-mvc –

+0

Hinzufügen dieser Zeile "" ist perfekt für die Korrektur von Fehlern, die in Visual Studio 2010 ASP.Net 4.0-Websites nach Visual Studio 2013 Update 5 Pop-up ist Eingerichtet. Vielen Dank! – Medinoc

Verwandte Themen