web-dev-qa-db-ja.com

FileNotFoundが「Microsoft.VisualStudio.Web.PageInspector.Runtime」のv14.0.0.0をロードしようとしています

1週間前にマシンを更新するまで、完璧に機能しているMVCプロジェクトがあります。プロジェクトを実行しようとすると、バインドエラーが表示されるようになりました

マネージデバッグアシスタント「BindingFailure」は、「C:\ Program Files(x86)\ IIS Express\iisexpress.exe」で問題を検出しました。

追加情報:表示名「Microsoft.VisualStudio.Web.PageInspector.Runtime」のアセンブリは、ID 2のAppDomainの「LoadFrom」バインディングコンテキストでのロードに失敗しました。失敗の原因は次のとおりです。System.IO.FileNotFoundException:Couldファイルまたはアセンブリ「Microsoft.VisualStudio.Web.PageInspector.Runtime、Version = 14.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a」またはその依存関係の1つをロードしないでください。システムは、指定されたファイルを見つけることができません。

エラーを過ぎて続行すると、プロジェクトは正しくロードされます。ただし、クラウドサービスでプロジェクトをWebロールとして実行すると、ロールがポップアップし続けるため、プロジェクトが実行されません。

これは、スタンドアロンプ​​ロジェクトとして実行する場合のバインディングの問題に関係していると思います

誰もこれに遭遇したことがありますか?


編集設定ファイルでアセンブリ参照を検索しましたが、何も表示されませんでした。最終的に、新しいAzure SDKを再インストールしました。 pageinspectorのバインディングエラーメッセージはロード時にポップアップしますが、プロジェクトを続行すると正常に機能します。現時点では、解決策が見つかるまで、この迷惑なメッセージに耐えなければなりません。

29
Zee18

visual Studio 2013がインストールされたマシンでこれが発生するのを観察しました。

vS2013アップデート4の後、私が知る限り、それは起こり始めました。

(以前に発生した可能性がありますが、これは私の環境にとっては新しいものです)

このアセンブリをGACに配置しました(VS2012用、VS2013用の2つのバージョン)が、これらのバージョンの名前は(明らかに)バージョンが「12.3.0.0」であることに注意してください(上記の解像度エラーはバージョン「 14 "アセンブリ。)

この特定の例外の最初のインスタンスの呼び出しスタックは次のとおりです。

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]  

これは、問題がMicrosoftのものであることを示唆しています(アセンブリ、アプリケーション、マシン構成などで私がやったことではありません)。

すべての構成(文字通り、すべて、プロジェクトのweb.configおよびすべての.NETランタイムマシン構成、すべてのバージョン/プラットフォーム)をスポットチェックしましたが、このアセンブリへの参照はどこにも見つかりませんでした。

このミス(Microsoftが対処する必要がある)を回避するために、次のようにweb.configにAssemblyバインディングリダイレクトを追加しました(マシン構成ではありません)。

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

これは、MicrosoftがVisual Studioまたは類似のビルドをリリースしたことを示唆しています。これは、これらのアセンブリの将来のリリースされていないバージョンに対するバインドです。

これが他の誰かに役立つことを願っています!

28
Shaun Wilson

例外オプションで[例外をスローする]をオフにすると、プロンプトが表示されなくなります。私はそれが通常の操作の一部だと推測しています。同じことに気づきました。

8
Michael Rogers

フレームワークファイルを変更する代わりに、これを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