Использование Apache Lucene.Net 4.8.0 с.NET Standard 1.5 и Visual Studio 2017

На Lucene.Net Страница GitHub ( https://github.com/apache/lucenenet), там написано, что version 4.8.0 (бета-версия, доступная в настоящее время на GitHub) совместима с .Net Standard 1.5 а также .Net 4.5.1 рамки. Фантастика!

Я сделал git clone 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.

Я уверен, что это должно быть действительно простым решением, но я немного растерялся, как Lucene.Net работать с .Net Standard / .Net Core,

Вот несколько быстрых заметок, которые могут быть интересны.

  • Последний Dot Net Core SDK установлен на моей машине.
  • Я установил NetStandard.Library для всех проектов, использующих NuGet Package Manager, (The NetStandard.Library появляется в ссылках для всех проектов с сине-белым значком. Решение все еще компилируется, но я не могу детализировать и увидеть составляющие файлы в NetStandard.Library как я могу с другими .NET Standard или же .NET Core проектов.)
  • Я побежал dotnet restore на всякий случай, возможно, это было необходимо для извлечения различных файлов, необходимых для NetStandard.Library,
  • Все проекты в решении содержат [projectname].project.json файлы. После установки NetStandard.Library для каждого проекта теперь есть запись зависимостей в [projectname].project.json файл.

    "dependencies": {"NETStandard.Library": "1.6.1"}

  • Я пытался обновить только framework запись в Lucene.Net.project.json файл для использования .NETStandard,Version=1.5 а затем перекомпилировать только Lucene.Net проект. Я закончил с несколькими ошибками компиляции, поэтому я вернул запись к ее первоначальному значению net451,

  • Здесь нет .csproj файл для любого из проектов. Я не пытался бежать dotnet migrate как я был не уверен, если это было необходимо, и я не хотел вводить дополнительные переменные.

Любая помощь здесь высоко ценится. Спасибо вам большое!

1 ответ

Решение

Следующий ответ пришел от Shad Storhaug на dev@lucenenet.apache.org список рассылки.

Энтони,

Поскольку тестовый адаптер NUnit3 еще не поддерживает его в.NET Core, мы еще не обновили его до нового формата.csproj, который поддерживает Visual Studio 2017. В настоящее время у нас есть 2 отдельных файла решения.

Lucene.Net.sln - для.NET Framework 4.5.1 Lucene.Net.Portable.sln - для.NET Standard 1.5

Вы можете открыть Lucene.Net.Portable.sln в Visual Studio 2015, но он не совместим с VS2017.

Предпосылки для VS2015:

1.1 с SDK Preview 2.1 сборка 3177 - https://github.com/dotnet/core/blob/master/release-notes/download-archive.md Visual Studio 2015 (сообщество или более поздняя версия) с обновлением 3 NUnit3 Test Adapter (если вы нужно запустить тесты) - https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnit3TestAdapter

Чтобы заставить его скомпилироваться в.NET Standard, вам может потребоваться запустить восстановление dotnet с закрытой Visual Studio, а затем открыть решение Lucene.Net.Portable.sln в Visual Studio для сборки. Это не всегда удается, когда VS2015 запускает восстановление или если VS2015 предлагает решение, открытое при запуске dotnet restore из CLI.

Вообще говоря, эта настройка необходима, только если вы хотите отладить Lucene.Net или помочь внести свой вклад в наши усилия. Если вы просто хотите собрать, вы можете собрать через CLI из корня проекта:

Build -pv: 4.8.0-beta00001

Это автоматически установит необходимый SDK, создаст библиотеки DLL для обеих платформ и упакует их в файлы.nupkg в папке release\NuGetPackages. Прежде чем запускать эту команду, убедитесь, что у вас установлена ​​последняя версия Powershell (все еще пытаясь решить некоторые проблемы с более ранними версиями, но я знаю, что она точно работает с 5.1.14393.1066). Чтобы определить, какая у вас версия Powershell: /questions/17796133/opredelit-ustanovlennuyu-versiyu-powershell/17796151#17796151

Или, если вы просто хотите сослаться на пакеты NuGet, у нас есть канал CI, доступный по адресу https://www.myget.org/gallery/lucene-net-ci. В ожидании результатов голосования о выпуске у нас будет бета-версия на NuGet через пару дней.

Спасибо, Шад Сторхауг (NightOwl888)

Другие вопросы по тегам