2016-11-05 94 views
1

我正嘗試使用RavenDB在.NET核心中創建嵌入式數據庫。雖然RavenDB.Client包沒有任何問題地恢復,但RavenDB.Database包(它是製作嵌入式數據庫所必需的)不能正確恢復,即使它僅依賴於RavenDB.Client。我收到一條錯誤消息,指出RavenDB.Database與.netcoreapp1.0不兼容。這裏是我的package.json的照片:RavenDB與.NET核心的依賴問題

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它通過以下類推由​​David福勒支撐在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。

要做到這一點,改變你的frameworksproject.json到相應的項目:

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

注:您還需要刪除Microsoft.NETCore.App依賴爲好。

+0

感謝您的迴應!我知道這樣可以解決這個問題,但是對於我來說,當它依賴於一個已經存在的庫時,它並沒有被移植過來,這似乎很奇怪。再次感謝您的精心迴應。 – Bryan

+0

@Bryan:爲什麼它會很奇怪? 'RavenDB.Client'只有'RavenDB.Database'所需的API的一個子集,所以它當然可以使用它。但是,如果'RavenDB.Database'可能依賴於目前僅在完整的.NET Framework上可用的API,那麼它不可能以大的開銷移植它並且花費更長的時間。 – Tseng