将 VS2015 升级到 asp.net 5 beta7 我得到 Could not load file or assembly 'dnx.clr.managed' or one of its dependencies

Upgrading VS2015 to asp.net 5 beta7 I get Could not load file or assembly 'dnx.clr.managed' or one of its dependencies

我已经按照 https://github.com/aspnet/Home 上的说明升级了 DNX 我还为 visual studio 2015 下载了 DotNetVersionManager-x64.msi 但是当我创建一个新项目和 运行 网站时我收到以下错误

Could not load file or assembly 'dnx.clr.managed' or one of its dependencies. The system cannot find the file specified. 

当我尝试从 dnx 命令行 运行 网站时,我得到以下

C:\code> dnx 网络 stem.InvalidOperationException: 类型 'Microsoft.Framework.Runtime.IApplicationEnvironment' 的服务尚未注册 累了。 在 Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService(IServiceProvider 提供者,Ty 服务类型) 在 Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService[T](IServiceProvider 提供商)

在Microsoft.AspNet.Hosting.Program.Main(字符串[]参数) - 从先前抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly 程序集,String[] args,IServiceProvider 服务 提供者) 在 Microsoft.Dnx.ApplicationHost.Program.ExecuteMain(DefaultHost 主机,String applicationName,String[] args) 在 Microsoft.Dnx.ApplicationHost.Program.Main(字符串 [] 参数) - 从先前抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly 程序集,String[] args,IServiceProvider 服务 提供者) 在 Microsoft.Dnx.Host.Bootstrapper.RunAsync(List`1 args,IRuntimeEnvironment env,FrameworkName targetFramework) 在 Microsoft.Dnx.Host.RuntimeBootstrapper.ExecuteAsync(String[] args, FrameworkName targetFramework) 在 Microsoft.Dnx.Host.RuntimeBootstrapper.Execute(String[] args, FrameworkName targetFramework)

看起来 beta7 不再带有 dnx.clr.managed.dll(及其依赖项)。我已经通过以下步骤解决了这个问题:

您可以通过在 global.json[=39= 中查找以下节点来检查您的 global.json 文件是否期待 beta7 ]:

"sdk": {
        "version": "1.0.0-beta7",
        "runtime": "clr",
        "architecture": "x86"
    }

如果您的项目一直在寻找 dnx.clr.managed.dll(及其依赖项),您可以手动编辑 project.json 文件(它存储依赖关系并替换旧的 cs.projvb.proj 文件),指向预期的 dnx 运行time 版本,例如:

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5"
  },

编辑为:

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7"
  },

保存更改后,您必须恢复 依赖项。一种方法是使用终端 (CMD) 导航到 ProjectName/src/ProjectName/ 文件夹(project.json 文件所在的位置), 然后执行

dnu restore

命令。希望它会成功请求新的依赖项,您就可以开始了。

PS.: 我没有尝试 运行 x64 设置,因为 free/shared 应用程序可能(?)与 64 位平台设置不兼容。如果我说错了,请随时纠正我。

我在 IIS Express 中尝试 运行 将项目从 beta-5 升级到 beta-8 后遇到此错误。我能够通过删除 wwwroot\web.config:

中的这一行来修复它
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

它一定已经包含在早期版本的项目模板中,并且可能与新的请求管道不兼容,但我还没有找到任何文档来证实这一点。