【问题标题】:ASP.Net 5: Updating 1.0 Beta8 to RC1 - IServiceCollection does not contain definition for AddMvcASP.Net 5:将 1.0 Beta8 更新到 RC1 - IServiceCollection 不包含 AddMvc 的定义
【发布时间】:2016-06-22 15:02:46
【问题描述】:

我有一些代码由一个授权 api 项目、一个普通项目和一个 ASP.net 主应用程序项目组成,在一个解决方案中。我浏览了相关的 project.json 文件并删除了明确的 beta8 引用,然后进行了一些其他必要的更正。例如,在必要时将使用 Microsoft.Framework.Configuration 更改为 Microsoft.Extensions.Configuration。

我从链接的潜在重复项中了解到,首先要怀疑的是我的各种 project.json 文件中的引用混合无效。我没有明确地留下任何 beta8 引用。因此,我不认为链接的问题是相同的。

我被困的地方似乎是一件非常基本的事情:

Error   CS1061  Build   'IServiceCollection' does not contain a
definition for 'AddMvc' and no extension method 'AddMvc' accepting a first 
argument of type 'IServiceCollection' could be found (are you missing a 
using directive or an assembly reference?)  

我在 project.json 中引用了 Microsoft.AspNet.Mvc,我是否将“使用 Microsoft.AspNet.mvc”放在 .cs 文件中或错误仍然存​​在都没有关系。我以为您只需将引用添加到 project.json 即可在新的世界秩序中添加引用。如果project.json中存在程序集引用,为什么还会出现这个错误?

我的项目.json:

{
  "webroot": "wwwroot",
  "version": "1.0.0-*",

  "dependencies": {

    "Microsoft.AspNet.Authentication.JwtBearer": "1.0.0-*",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-*",
    "Microsoft.AspNet.Mvc": "6.0.0-*",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
    "Microsoft.AspNet.StaticFiles": "1.0.0-*",
    "Microsoft.Framework.Logging": "1.0.0-*",
    "Microsoft.Framework.Logging.Console": "1.0.0-*",
    "Microsoft.Framework.Logging.Debug": "1.0.0-*",
    "System.IdentityModel.Tokens": "5.0.0-*",
    "MyCompany.Common": "1.0.0-*"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },

  "frameworks": {
    "dnx451": { }
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

破坏的代码行是 AddMvc 行:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Logging;
using Microsoft.Extensions.Configuration;
using Microsoft.Dnx.Runtime;
using RamSoft.Authorization.Api.Common;
using System.IdentityModel.Tokens;
using Microsoft.AspNet.Authentication.JwtBearer;
using RamSoft.ITConsole.Common;
using Microsoft.Extensions.PlatformAbstractions;
namespace MyCompany.Authorization.Api
{
    public class Startup
    {
     ...
 public void ConfigureServices(IServiceCollection services)
        {
            services.AddInstance(_signingCredentials);
            services.AddInstance(_jwtBearerOptions);

            services.AddMvc();  // Fail.

        }
   ...
}

【问题讨论】:

  • 我已经清理了我的 project.json 引用,所以它不是重复的。除非我只是认为我做到了,并且还有一些额外的步骤(除了实际上使 .json 文件正确之外),例如“手动核对 dnvm 运行时包缓存中的所有内容”。
  • 你似乎到处都在使用"1.0.0-*"。那是对的吗?那不应该是"1.0.0-rc1-final"吗?另外,你的 global.json 文件里有什么?
  • 尝试转到~/.dnx/packages 并删除其中的所有内容。然后在命令提示符下,转到解决方案的根目录并执行dnu restore。它成功了吗?哪些版本的软件包会下载到您的 ~/.dnx/packages 文件夹中?在您的 global.json 和 project.json 中,引用了哪个运行时版本,rc1-finalrc1-update1
  • 我在 2016 年 5 月遇到了同样的问题!

标签: c# asp.net-core


【解决方案1】:

您需要更改项目的依赖项。这是我的 project.json

"dependencies": {
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview1-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc2-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview1-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview1-final",
      "type": "build"
    }
  }

并在 startup.cs 中添加 using Microsoft.Extensions.Configuration;

我们可以使用 AddMvc() 至少适用于 Core 1.0 rc2

【讨论】:

    猜你喜欢
    • 2016-09-25
    • 2018-01-27
    • 1970-01-01
    • 2019-06-09
    • 2022-01-03
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多