【问题标题】:Asp vnext IServiceCollection exists in two namespacesAsp vnext IServiceCollection 存在于两个命名空间中
【发布时间】:2016-03-20 02:14:01
【问题描述】:

今天我创建了一个新的空 vnext web 项目并开始遵循这个指南:http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6

当我尝试添加时:

using Microsoft.Framework.DependencyInjection;

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

我收到一条错误消息:

The type 'IServiceCollection' exists in both 'Microsoft.Framework.DependencyInjection.IServiceCollection, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'Microsoft.Framework.DependencyInjection.Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'

我一直在尝试不同的 aspnet.mvc 测试版,并从 project.json 中删除了 aspnetcore50(因为它已经为我解决了之前的问题)。我还尝试指定要使用的命名空间,但它没有解决任何问题。现在我不知道如何解决这个问题。

我的项目.json

{
"webroot": "wwwroot",
"version": "1.0.0-*",
"exclude": [
    "wwwroot"
],
"packExclude": [
    "node_modules",
    "bower_components",
    "**.kproj",
    "**.user",
    "**.vspscc"
],
"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta2",
    "Microsoft.AspNet.Mvc": "6.0.0-beta4-12857"
},
"frameworks" : {
    "aspnet50" : { }
}
}

有人遇到同样的错误并解决了吗?

【问题讨论】:

  • 将 Visual Studio 更新到最新版本,现在由于某种原因可以正常工作
  • 你是如何明确更新VS的?我想我有最新的 VS 仍然有这个问题。
  • 我从go.microsoft.com/fwlink/?LinkId=521794下载了VS,安装时没有更改任何设置

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


【解决方案1】:

为什么不使用显式引用public void ConfigureServices(Microsoft.Framework.DependencyInjection.IServiceCollection services)

或者您可能需要使用这样的别名

using DI = Microsoft.Framework.DependencyInjection;

然后

public void ConfigureServices(DI.IServiceCollection services)
{
    services.AddMvc();
}

【讨论】:

    【解决方案2】:

    这个错误一般是由于project.json中的两个引用指向了两个不同的版本导致的冲突。由于依赖关系,您可以获得对两个不同版本的 DependencyInjection 库的两个引用。所以它可能是 -beta3 和 -beta4 不匹配,或类似的东西。即使这两个库不是同一个东西,也可能导致问题。

    【讨论】:

      【解决方案3】:

      您需要按照here 的说明更新到最新版本的 nuget 包。它们中的大多数都处于预发布状态,您可能需要添加 https://www.myget.org/F/aspnetvnext/api/v2/ 作为您的 nuget 包的一部分才能获得夜间构建

      【讨论】:

        【解决方案4】:

        在 project.json 中的依赖项上,您使用 Microsoft.AspNet.Server.IIS beta2 和 Microsoft.AspNet.Mvc beta4。你不能这样做。您没有为所有 mvc6 依赖项使用相同的 beta 版本。

        修复此问题,然后您必须更新 Microsoft ASP.NET 和 Web 工具以匹配您在项目中使用的测试版 (beta4)。

        【讨论】:

          【解决方案5】:

          问题发生在我升级到 Visual Studio 2015 CTP 6 之后。这个错误只存在于我在以前版本中创建的项目中。我刚才快速检查了一下,当我在 project.json 中更改以下内容时 从“Microsoft.AspNet.Server.IIS”:“1.0.0-beta2”到“Microsoft.AspNet.Server.IIS”:“1.0.0-beta3”,现在我的错误消失了。

          【讨论】:

            猜你喜欢
            • 2015-04-15
            • 2016-06-18
            • 1970-01-01
            • 1970-01-01
            • 2014-05-09
            • 2011-11-10
            • 1970-01-01
            • 2019-04-02
            • 1970-01-01
            相关资源
            最近更新 更多