2016-11-05 1 views
1

Я пытаюсь создать встроенную базу данных в .NET Core с использованием RavenDB. Хотя пакет RavenDB.Client восстанавливается без каких-либо проблем, пакет RavenDB.Database (который требуется для создания встроенной базы данных) не восстанавливается должным образом, хотя это только зависимость RavenDB.Client. Я получаю сообщение об ошибке, в котором говорится, что RavenDB.Database несовместима с .netcoreapp1.0. Вот фотография моего package.json:Проблема зависимости RavenDB с .NET Core

enter image description here

ответ

2

Package RavenDB.Database 3.5.0 supports: net45 (.NETFramework,Version=v4.5). Таким образом, не поддерживается на netcoreapp1.0. Вы также можете скачать пакет https://www.nuget.org/api/v2/package/RavenDB.Database/3.5.0, извлечь его и посмотреть папку lib, чтобы узнать, что она поддерживает.

Поскольку RavenDB.Client поддерживает netstandard1.3 поддерживается на netcoreapp1.0 с помощью следующей аналогии Дэвид Фаулер:

interface INetCoreApp10 : INetStandard15 //What we care about in this case 
{ 

} 

interface INetStandard10 
{ 
    void Primitives(); 
    void Reflection(); 
    void Tasks(); 
    void Collections(); 
    void Linq(); 
} 

interface INetStandard11 : INetStandard10 
{ 
    void ConcurrentCollections(); 
    void InteropServices(); 
} 

interface INetStandard12 : INetStandard11 
{ 
    void ThreadingTimer(); 
} 

interface INetStandard13 : INetStandard12 //NetStandard version this library supports 
{ 
    void FileSystem(); 
    void Console(); 
    void ThreadPool(); 
    void Process(); 
    void Sockets(); 

    void AsyncLocal(); 
} 

interface INetStandard14 : INetStandard13 
{ 
    void IsolatedStorage(); 
} 

interface INetStandard15 : INetStandard14 
{ 
    void AssemblyLoadContext(); 
} 

https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8baf1b7#file-_platform-cs-L127

TLDR; Используйте .NET 4.5 вместо .NET Core, если вы хотите использовать эту библиотеку. Или подождите, пока эта библиотека не будет перенесена в .NET Core.

Чтобы сделать это, измените ваш frameworks в вашем project.json к соответствующему пункту:

"frameworks": { 
    "net45": { 
    } 
} 

Примечание: Вам также необходимо удалить Microsoft.NETCore.App зависимость, а также.

+0

Спасибо за ответ! Я знал, что это исправит проблему, однако мне кажется странным, что библиотека не была перенесена, когда это зависит от библиотеки, которая была. Еще раз спасибо за продуманный ответ. – Bryan

+0

@ Брайан: Почему это было странно? 'RavenDB.Client' имеет только подмножество API, необходимое для' RavenDB.Database', поэтому, конечно, он может его использовать. Но если 'RavenDB.Database' может зависеть от API, доступного только в настоящее время на полной платформе .NET Framework, тогда его невозможно будет портировать с большими накладными расходами и уйти дольше. – Tseng

Смежные вопросы