ASP.NET vNext – MissingMethodException:找不到方法:Microsoft.CodeAnalysis.Diagnostic> EmitResult.get_Diagnostics()’

我今天早上升级到VS2015 RC,并使用ASP.NET 5模板 – 网站创建了一个新项目。 我有一个错误,我无法解决:

处理请求时发生未处理的exception。

MissingMethodException:找不到方法:’System .Collections.Immutable.ImmutableArray`1 Microsoft.CodeAnalysis.Emit.EmitResult.get_Diagnostics()’。

Microsoft.AspNet.Mvc.Razor.RoslynCompilationService.Compile(RelativeFileInfo fileInfo,String compilationContent)

这是完整的错误堆栈:

MissingMethodException:找不到方法:’System.Collections.Immutable.ImmutableArray`1 Microsoft.CodeAnalysis.Emit.EmitResult.get_Diagnostics()’。

Microsoft.AspNet.Mvc.Razor.RoslynCompilationService.Compile(RelativeFileInfo fileInfo,String compilationContent)

Microsoft.AspNet.Mvc.Razor.RazorCompilationService.Compile(RelativeFileInfo文件)

Microsoft.AspNet.Mvc.Razor.CompilerCache.OnCacheMiss(RelativeFileInfo文件,String normalizedPath,Func`2编译)

Microsoft.AspNet.Mvc.Razor.CompilerCache.GetOrAddCore(String relativePath,Func`2 compile)

Microsoft.AspNet.Mvc.Razor.CompilerCache.GetOrAdd(String relativePath,Func`2 compile)

Microsoft.AspNet.Mvc.Razor.VirtualPathRazorPageFactory.CreateInstance(String relativePath)

Microsoft.AspNet.Mvc.Razor.RazorViewEngine.LocatePageFromViewLocations(ActionContext context,String pageName,Boolean isPartial)

Microsoft.AspNet.Mvc.Razor.RazorViewEngine.GetRazorPageResult(ActionContext context,String pageName,Boolean isPartial)

Microsoft.AspNet.Mvc.Razor.RazorViewEngine.FindView(ActionContext context,String viewName)

Microsoft.AspNet.Mvc.Rendering.CompositeViewEngine.FindView(ActionContext context,String viewName,Boolean partial)

Microsoft.AspNet.Mvc.Rendering.CompositeViewEngine.FindView(ActionContext context,String viewName)

Microsoft.AspNet.Mvc.ViewResult.d__20.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__44.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__43.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__42.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__37.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__32.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Mvc.MvcRouteHandler.d__3.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Mvc.MvcRouteHandler.d__2.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Routing.Template.TemplateRoute.d__25.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Routing.RouteCollection.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Builder.RouterMiddleware.d__4.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.d__10.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

System.Threading.Tasks.EntityFrameworkTaskExtensions.CultureAwaiter.GetResult()

Microsoft.AspNet.Diagnostics.Entity.DatabaseErrorPageMiddleware.d__6.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Microsoft.AspNet.Diagnostics.Entity.DatabaseErrorPageMiddleware.d__6.MoveNext()

—从抛出exception的先前位置开始的堆栈跟踪结束—

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Microsoft.AspNet.Diagnostics.ErrorPageMiddleware.d__4.MoveNext()

我的project.json文件与模板中提供的文件相同:

{ "webroot": "wwwroot", "userSecretsId": "aspnet5-WebApplication2-2819f43f-7688-4637-89a0-d22341b36a64", "version": "1.0.0-*", "dependencies": { "EntityFramework.SqlServer": "7.0.0-beta4", "EntityFramework.Commands": "7.0.0-beta4", "Microsoft.AspNet.Mvc": "6.0.0-beta4", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta4", "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta4", "Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta4", "Microsoft.AspNet.Authentication.Google": "1.0.0-beta4", "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta4", "Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta4", "Microsoft.AspNet.Diagnostics": "1.0.0-beta4", "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta4", "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta4", "Microsoft.AspNet.Server.IIS": "1.0.0-beta4", "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4", "Microsoft.AspNet.StaticFiles": "1.0.0-beta4", "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta4", "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4", "Microsoft.Framework.ConfigurationModel.UserSecrets": "1.0.0-beta4", "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta4", "Microsoft.Framework.Logging": "1.0.0-beta4", "Microsoft.Framework.Logging.Console": "1.0.0-beta4", "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta4" }, "commands": { "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000", "gen": "Microsoft.Framework.CodeGeneration", "ef": "EntityFramework.Commands" }, "frameworks": { "dnx451": { }, "dnxcore50": { } }, "exclude": [ "wwwroot", "node_modules", "bower_components" ], "publishExclude": [ "node_modules", "bower_components", "**.xproj", "**.user", "**.vspscc" ], "scripts": { "postrestore": [ "npm install", "bower install" ], "prepare": [ "gulp copy" ] } } 

当我运行dnvm list命令时:

 > dnvm list Active Version Runtime Architecture Location Alias ------ ------- ------- ------------ -------- ----- 1.0.0-beta4 clr x64 \.dnx\packages 1.0.0-beta4 clr x86 \.dnx\packages 1.0.0-beta4 coreclr x64 \.dnx\packages 1.0.0-beta4 coreclr x86 \.dnx\packages 1.0.0-beta5-11596 clr x86 \.dnx\packages * 1.0.0-beta5-11624 clr x86 \.dnx\packages default 

我试图使用1.0.0-beta5-11596和1.0.0-beta4 clr,但我得到了相同的结果。

任何的想法?

谢谢。

我认为大卫是对的,我有同样的问题,我能够解决它:

  • 打开%USERPROFILE%\。dnx目录
  • 从packages目录中删除所有内容
  • 从运行时目录中删除beta5目录
  • 更改别名目录中defaults.txt的值以指向beta4运行时之一

一旦我这样做,我重新打开了项目,包成功恢复,我能够运行应用程序。 无论出于何种原因,无论出于何种原因,defaults.txt都指向beta5运行时,假设这是在使用命令行工具时设置的。

希望对你有用!