2016-11-05 93 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