【问题标题】:'System.TypeLoadException' occurred in > Microsoft.AspNet.Mvc.Core.dll'System.TypeLoadException' 发生在 > Microsoft.AspNet.Mvc.Core.dll
【发布时间】:2016-10-17 07:48:53
【问题描述】:

我正在尝试创建示例 asp.net 核心应用程序。但是在调试时会引发错误:

“System.TypeLoadException”类型的异常发生在 Microsoft.AspNet.Mvc.Core.dll 但未在用户代码中处理

附加信息:无法加载类型 'Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionExtensions' 从程序集'Microsoft.Extensions.DependencyInjection.Abstractions, 版本=1.0.0.0,文化=中性,PublicKeyToken=adb9793829ddae60'。

怎么了?

项目.json

{
  "dependencies": {
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc.Core": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Startup.cs

public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseStaticFiles();

            app.UseMvc();
        }
    }

【问题讨论】:

    标签: c# asp.net .net asp.net-core asp.net-core-mvc


    【解决方案1】:

    删除"Microsoft.AspNetCore.Mvc.Core": "1.0.1""Microsoft.AspNet.Mvc": "6.0.0-rc1-final",然后将其替换为"Microsoft.AspNetCore.Mvc": "1.0.1"

    最终版本

    {
      "dependencies": {
        "Microsoft.AspNetCore.Diagnostics": "1.0.0",
        "Microsoft.AspNetCore.Mvc": "1.0.1",
        "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
        "Microsoft.AspNetCore.StaticFiles": "1.0.0",
        "Microsoft.Extensions.Logging.Console": "1.0.0",
        "Microsoft.NETCore.App": {
          "version": "1.0.1",
          "type": "platform"
        }
      }
    

    Microsoft.AspNet.Mvc已经引用了Microsoft.AspNet.Mvc.Core,所以不需要直接引用。

    【讨论】:

      【解决方案2】:

      您在依赖项中缺少 "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0"。

      【讨论】:

        【解决方案3】:

        您的project.json 看起来您使用的是 ASP.NET Core RC2,但从那时起您已升级到发布版本。

        文档说,为了让一切都在 RC2 中正常工作,你应该这样做

        如果您的目标是使用 RC2 的 .NET Core,则需要将导入添加到 project.json 作为某些不支持 .NET Standard 的 EF Core 依赖项的临时解决方法。现在可以删除这些。

        来源:ASP.NET Core documentation

        所以删除

        "imports": [
            "dotnet5.6",
            "portable-net45+win8"
        ]
        

        来自您的project.json

        【讨论】:

        • 你的意思是RC1。在 RC2 中,所有包都已重命名为 Microsoft.AspNetCore.*
        猜你喜欢
        • 1970-01-01
        • 2020-04-06
        • 1970-01-01
        • 2020-08-12
        • 1970-01-01
        • 2011-08-22
        • 2020-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多