【问题标题】:ASP .NET 5 MVC 6 beta 7 upgrade : "Multiple assemblies with equivalent identity" issueASP .NET 5 MVC 6 beta 7 升级:“具有等效标识的多个程序集”问题
【发布时间】:2015-10-31 06:58:51
【问题描述】:

目前正在尝试从 ASP .NET 5 MVC 6 的 beta 6 升级到 beta 7。 我按照此处详述的步骤操作:How to upgrade ASP.NET 5 from Beta6 to Beta7 但我仍然遇到程序集问题:

Multiple assemblies with equivalent identity have been imported: '<in-memory-assembly>' and '<in-memory-assembly>'. Remove one of the duplicate references.

This blog 提供了一些解决问题的线索,但不幸的是不符合我的项目的情况。

我知道它链接到 project.json 中的包列表。一些解决方案建议使用 Microsoft.Framework.Runtime.Abstractions,但我的列表中又没有它。

我的项目有几个部分有时会相互引用。组装问题发生在其中两个中,我认为它是链接的,因为每个错误出现 8 次。

这是两者的 project.json:

{
    "webroot": "wwwroot",
    "version": "1.0.0-*",
    "dependencies": {
        "EntityFramework.SqlServer": "7.0.0-beta7",
        "EntityFramework.Commands": "7.0.0-beta7",
        "EntityFramework.Core": "7.0.0-beta7",
        "Microsoft.AspNet.Mvc": "6.0.0-beta7",
        "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta7",
        "Microsoft.AspNet.Diagnostics": "1.0.0-beta7",
        "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta7",
        "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta7",
        "Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
        "Microsoft.AspNet.Loader.IIS": "1.0.0-beta7",
        "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7",
        "Microsoft.AspNet.StaticFiles": "1.0.0-beta7",
        "Microsoft.Framework.Configuration": "1.0.0-beta7",
        "Microsoft.Framework.Configuration.Json": "1.0.0-beta7",
        "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta5",
        "Microsoft.Framework.Logging": "1.0.0-beta7",
        "Microsoft.Framework.Logging.Console": "1.0.0-beta7",
        "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta7",
        "SSI.Domain": "",
        "SSI.Service": "",
        "log4net": "2.0.3",
        "jQuery.UI.Themes.smoothness": "1.8.9",
        "SSI.WordDocumentGenerator.Client": "1.0.0-*"
    },
    "commands": {
        "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000",
        "gen": "Microsoft.Framework.CodeGeneration",
        "ef": "EntityFramework.Commands"
    },
    "frameworks": {
        "dnx451": {
            "frameworkAssemblies": {
                "System.DirectoryServices": {
                    "version": "",
                    "type": "build"
                },
                "System.DirectoryServices.AccountManagement": {
                    "version": "4.0.0.0",
                    "type": "build"
                }
            }
        }
    },
    "exclude": [
        "wwwroot",
        "node_modules",
        "bower_components"
    ],
    "publishExclude": [
        "node_modules",
        "bower_components",
        "**.xproj",
        "**.user",
        "**.vspscc"
    ],
    "compilationOptions": {
        "warningsAsErrors": true
    }
}

-

{
    "version": "1.0.0-*",
    "description": "",
    "authors": [ "author" ],
    "tags": [ "" ],
    "projectUrl": "",
    "licenseUrl": "",

    "dependencies": {
        "SSI.Domain": "",
        "SSI.Service": "",
        "DocumentFormat.OpenXml": "2.5.0"
    },

    "frameworks": {
        "dnx451": {
            "dependencies": {
                "System.Collections": { "version": "4.0.0.0", "type": "build" },
                "System.Linq": { "version": "4.0.0-beta-23109", "type": "build" },
                "System.Threading": { "version": "4.0.10-beta-23109", "type": "build" },
                "Microsoft.CSharp": { "version": "4.0.0-beta-22816", "type": "build" }
            },
            "frameworkAssemblies": {
                "WindowsBase": { "version": "4.0.0.0", "type": "build" }
            }

        }
    }
}

我试图删除一些包,运行 dnu restore 以查看错误是否仍然存在并且它总是存在,所以我开始没有想法......

【问题讨论】:

  • 尝试删除system.* 引用并删除project.json.lock 文件?删除锁定文件为我解决了过去的神秘问题
  • 谢谢,删除第二个 project.json 中的 System.* 引用帮助我从 8 个中删除了一个装配错误 :)

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


【解决方案1】:

如果不看整个项目就很难判断,但我猜第二个 JSON sn-p 来自您的库。我的猜测是,是您的库导致了错误,而这些错误只会被报告到您的 Web 应用程序中。

这里有一些想法:

  • 将您的 frameworks:dnx451:dependencies 移至 frameworks:dnx451:frameworkAssemblies。
  • 删除那些 System.* 包中的 -beta 标识(奇怪的是它试图获取 Nuget 包而不是使用本地系统库)
  • 将 System.* 版本号更改为“4.0.0.0”
  • 切换到不那么冗长的参考语法(即删除“版本”和“类型”,只需在引号中指定版本,如“System.Linq”:“4.0.0.0”)
  • 删除 Microsoft.CSharp

【讨论】:

  • 已修复,非常感谢!该问题实际上是由 Microsoft.CSharp 引起的。由于 4.0.0-beta-22816 版本,将其移至 dnx451:frameworkAssemblies 会导致警告,但删除了程序集问题!
【解决方案2】:

我在将类库添加到 Web 项目时遇到了这个问题。当我添加类库时,project.json 文件框架看起来像这样......

  "frameworks": {
    "dotnet": { }
  }

当我匹配我的 Web 应用程序的框架时,错误得到解决。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多