Обновление ASP .NET 5 MVC 6 beta 7: проблема "Несколько сборок с одинаковой идентификацией"
В настоящее время пытаюсь перейти с бета-версии 6 на бета-версию 7 ASP .NET 5 MVC 6. Я выполнил шаги, подробно изложенные здесь: Как обновить ASP.NET 5 с бета-версии 6 до бета-версии 7, но у меня все еще есть проблема с сборками:
Multiple assemblies with equivalent identity have been imported: '<in-memory-assembly>' and '<in-memory-assembly>'. Remove one of the duplicate references.
Этот блог дает некоторую подсказку, чтобы решить эту проблему, но, к сожалению, не соответствует случаю моего проекта.
Я знаю, что это связано со списком пакетов в 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, чтобы увидеть, есть ли ошибка, и она всегда есть, поэтому у меня заканчиваются идеи...
2 ответа
Трудно сказать, не видя весь проект, но я предполагаю, что второй фрагмент JSON из вашей библиотеки. Я предполагаю, что это ваша библиотека, которая вызывает ошибки, и это просто сообщается в вашем веб-приложении.
Вот несколько идей:
- Переместите ваши фреймворки:dnx451: зависимости в фреймворки:dnx451:frameworkAssemblies.
- Удалите -бета- идентификаторы в этих пакетах System.* (Скорее всего, он пытается захватить пакеты Nuget вместо использования локальных системных библиотек)
- Измените номер версии System.* На "4.0.0.0"
- Переключитесь на менее подробный справочный синтаксис (то есть удалите "версию" и "тип" и просто укажите версию в кавычках, например "System.Linq": "4.0.0.0")
- Удалить Microsoft.CSharp
Я столкнулся с этой проблемой, когда я добавил библиотеку классов в веб-проект. Когда я добавил библиотеку классов, файловые рамки project.json выглядели так...
"frameworks": {
"dotnet": { }
}
Когда я сопоставил рамки моего веб-приложения, ошибка была устранена.
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}