2016-04-27 2 views
15

На dotnet restore мы получаем следующее сообщение об ошибке:пакет [некоторый пакет] не совместим с netcoreapp1.0

Package Microsoft.AspNet.SomePackage 5.6.7 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.AspNet.SomePackage 5.6.7 supports: net45 (.NETFramework,Version=v4.5)

Наш project.json выглядит следующим образом:

{ 
    "version": "1.0.0-*", 
    "compilationOptions": { 
    "emitEntryPoint": true 
    }, 
    "dependencies": { 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*", 
    "Microsoft.AspNet.SomePackage": "5.6.7", 
    "Microsoft.NETCore.App": "1.0.0-*" 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "portable-net45+wp80+win8+wpa81+dnxcore50", 
     "portable-net451+win8" 
     ] 
    } 
    }, 
    "runtimes": { 
    "win8-x64": {} 
    } 
} 

Как мы можем dotnet restore и dotnet run таким образом, чтобы запускать наше приложение?

+0

Какие фреймворки являются объектами Microsoft.AspNet.SomePackage? –

+0

Ошибка говорит, что это «поддерживает: net45». –

+1

«Microsoft.AspNet.SomePackage»: «5.6.7», «Скорее всего, вы ссылаетесь на сборку ASP.NET Core RC1 или даже на пакет ASP.NET 4.5. Новые сборки ASP.NET Core были восстановлены в rc2 до 'Microsoft.AspNetCore. *' (Из 'Microsoft.AspNet. *'). Другим намеком на это является то, что он использует версию> = 0. С переименованием в 'Microsoft.AspNetCore. *' Все версии были сброшены в 1.0.0- (EF, ASP.NET и связанные с MVC сборки) – Tseng

ответ

6

Короткий ответ: вы не можете. В некоторых узких случаях вы можете использовать импорт для переопределения встроенных правил зависимостей nuget. В этом случае вы не можете, .NET Framework и .NET Core несовместимы. Ошибки говорят, что пакет поддерживает только net45 (.NET Framework 4.5). Вы не можете использовать его в своем приложении .NET Core.

+0

Хорошо. Таким образом, ['import'] (http://docs.nuget.org/consume/projectjson-format#imports) позволяет нам использовать зависимости (пакеты), которые не нацелены на« инфраструктуру »нашего проекта, тогда и только тогда, когда эти зависимости ориентироваться на структуру, совместимую с каркасом нашего проекта. Это правильно? –

+0

Привет @davidfowl, мы не можем скомпилировать наши приложения, если мы перейдем на RC2 до тех пор, пока пакеты не будут обновлены до .NET Core? – chemitaxis

+1

Вы использовали .NET Core раньше или использовали .NET Framework? Вы можете преобразовать свой проект в ASP.NET на платформе .NET Framework, но если ваши зависимости не имеют версии .NET Core, то вы не можете переходить на .NET Core (если вы не удалите/не перепишите эти зависимости) – davidfowl

0

requirejs находится на github (https://github.com/requirejs/requirejs), и его можно скомпилировать с ядром в качестве зависимости.

Если пакет является открытым исходным кодом или доступен исходный код, можно перекомпилировать его с использованием точечного ядра, а не для рамки 4.5. Все зависит от других других зависимостей и их совместимости с ядром dotnet.

19

Примечание: добавив «net451» к импорту каркаса, я смог заставить его работать.

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

Я взял его из here

+1

У меня тоже есть старая библиотеки, которые нацелены на .NET Framework 4.5, и это решило мою проблему. Есть ли побочные эффекты для этого? – Sobhan

+2

Привет @Sobhan, вероятно, побочным эффектом является то, что вам понадобится .net framework 4.5 на вашем сервере. Преимущество использования ядра заключается в том, что вы можете развертывать его на сервере Linux. – Sanchitos

6

Если вам нужно сделать то же самое, но с использованием новой .csproj для конфигурации, а не project.json, редактировать файл .csproj и добавить следующее право ниже группы свойств:

<PropertyGroup> 
    <PackageTargetFallback>net451;dotnet5.6;portable-net45+win8</PackageTargetFallback> 
</PropertyGroup> 

Взято из here.