Использование 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
, (TheNetStandard.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)