.net core 在.Net标准1.5和Visual Studio 2017中使用Apache Lucene.Net 4.8.0

.net core 在.Net标准1.5和Visual Studio 2017中使用Apache Lucene.Net 4.8.0,.net-core,visual-studio-2017,lucene.net,.net-standard,.net-standard-1.5,.net Core,Visual Studio 2017,Lucene.net,.net Standard,.net Standard 1.5,在Lucene.NetGitHub页面(),它说version 4.8.0(GitHub上当前可用的beta版)与.Net标准1.5和.Net 4.5.1框架兼容。太棒了 我做了一个git克隆https://github.com/apache/lucenenet.git以提取代码。该解决方案在Visual Studio 2017中打开并编译,在默认框架.NET 4.5.1下没有任何错误。到目前为止一切顺利 我真正需要的是编译Lucene.NET 4.8.0以使用.NET Core 1.1.x。这

Lucene.Net
GitHub页面(),它说
version 4.8.0
(GitHub上当前可用的beta版)与
.Net标准1.5
.Net 4.5.1
框架兼容。太棒了

我做了一个git克隆https://github.com/apache/lucenenet.git以提取代码。该解决方案在
Visual Studio 2017
中打开并编译,在默认框架
.NET 4.5.1
下没有任何错误。到目前为止一切顺利

我真正需要的是编译
Lucene.NET 4.8.0
以使用
.NET Core 1.1.x
。这就是事情有点偏离正轨的地方。

当我打开
Lucene.Net
项目(以及许多其他包含的项目)的属性页时,它们都引用了默认的
.Net 4.5.1
。似乎没有任何选项可以引用
.NET Standard 1.x
.NET Core 1.x.y
而不是标准的.NET framework版本

我确信这一定是一个非常简单的解决方案,但我对如何使用
.Net标准
/
.Net核心
感到有点困惑

下面是一些可能会引起兴趣的简要说明

  • 我的机器上安装了最新的
    Dot Net Core SDK
  • 我使用
    NuGet Package Manager
    NetStandard.Library
    安装到所有项目中。(所有项目的参考文件中都会出现带有蓝色和白色图标的
    NetStandard.Library
    。解决方案仍在编译,但我无法像其他
    .NET Standard
    .NET Core
    项目一样深入查看
    NetStandard.Library
    中的组成文件。)
  • 我运行了
    dotnet restore
    ,以防可能需要它来提取
    NetStandard.Library
    所需的各种文件
  • 解决方案中的所有项目都包含
    [projectname].project.json
    文件。将NetStandard.Library安装到每个项目后,
    [projectname].project.json
    文件中现在有一个依赖项条目

    “依赖项”:{ “NETStandard.Library”:“1.6.1” }

  • 我尝试只更新
    Lucene.Net.project.json
    文件中的
    framework
    条目,以使用
    .NETStandard,Version=1.5
    ,然后只重新编译
    Lucene.Net
    项目。我最后出现了几个编译错误,因此我将条目恢复为其原始值
    net451

  • 没有任何项目的
    .csproj
    文件。我没有尝试 运行
    dotnet migrate
    ,因为我不确定是否有必要,我 不想引入其他变量

非常感谢您的帮助。非常感谢你

以下答案来自
dev@lucenenet.apache.org
邮件列表

安东尼

由于NUnit3测试适配器尚未在.NET Core上支持它,因此我们尚未升级到支持Visual Studio 2017的新.csproj格式。目前我们有两个独立的解决方案文件

Lucene.Net.sln-适用于.Net Framework 4.5.1 Lucene.Net.Portable.sln-适用于.Net标准1.5

您可以在Visual Studio 2015中打开Lucene.Net.Portable.sln,但它与VS2017不兼容

VS2015的先决条件:

1.1带SDK预览版2.1构建3177- Visual Studio 2015(社区或更高版本)及其更新3 NUnit3测试适配器(如果需要运行测试)——

要使其在.NET标准上编译,您可能需要在关闭Visual Studio的情况下运行dotnet restore,然后在Visual Studio中打开Lucene.NET.Portable.sln解决方案进行构建。当VS2015运行恢复时,或者当您从CLI运行dotnet restore时,如果VS2015打开了解决方案,则该操作并不总是成功

一般来说,只有当您想调试Lucene.Net或帮助我们的工作时,才需要此设置。如果您只想构建,可以从项目的根目录通过CLI构建:

建造-pv:4.8.0-BETA0001

它将自动安装所需的SDK,为这两个框架构建DLL,并将它们打包为release\NuGetPackages文件夹中的.nupkg文件。在运行此命令之前,请确保您拥有最新版本的Powershell(仍在尝试解决早期版本的一些问题,但我知道它在5.1.14393.1066中确实有效)。要确定您拥有的Powershell版本,请执行以下操作:

或者,如果您只想引用NuGet软件包,我们在上提供了一个CI提要。在发布投票结果出来之前,我们将在几天后在NuGet上发布一个测试版

谢谢,
沙德·斯托豪格(夜猫子888)

这个答案已经有一年多的历史了,我想知道情况是否有所改善。我们现在可以使用VS2017吗?今天是否有与netstandard兼容的Nuget可用?@JoeAudette,我不确定Lucene.NET是否已经完全修复,可以与VS2017一起使用。然而,我知道Lucene.NET项目相对来说是不活跃的,只有很少的活跃贡献者——大部分是Shad Storhaug。事实上,大多数人已经转向使用ElasticSearch,或者在托管或Docker容器中运行它。(我在Docker内部运行ElasticSearch,效果非常好。)ElasticSearch速度非常快,功能非常强大,社区非常活跃。我建议现在通过Lucene.NET使用ElasticSearch。