Ошибка при установке Sensenet 7.2 из NuGet

Я пытаюсь установить Sensenet 7.2 из NuGet, однако при установке пакета Sensenet.Services.Install получаю следующую ошибку.

Ошибка:

Не удалось установить пакет «SenseNet.Common 7.2.0». Вы пытаетесь установить этот пакет в проект, предназначенный для .NETFramework, Version=v4.5.1, но пакет не содержит ссылок на сборки или файлов содержимого, совместимых с этой платформой. Для получения дополнительной информации свяжитесь с автором пакета.

Я использую VS 2017, шаблон проекта - "Веб-приложение ASP.NET".

Как решить эту проблему?


person Radek Plach    schedule 09.07.2018    source источник
comment
Пожалуйста, проверьте версию веб-проекта .Net, она должна быть не ниже 4.6.1 (в сообщении об ошибке говорится, что в вашей среде есть проект 4.5.1). Это требование является новым в этой версии, предыдущие версии работали в проекте .Net 4.5.1.   -  person Miklós Tóth    schedule 09.07.2018
comment
Причина в том, что мы начали преобразовывать наши проекты в стандарт .net, который поддерживается .net framework 4.6.1, поэтому все проекты должны быть как минимум на 4.6.1, чтобы иметь возможность работать с пакетами sensenet.   -  person Miklós Tóth    schedule 09.07.2018
comment
Спасибо, @MiklósTóth. Изменение цели на 4.6.1 дает мне ту же ошибку, только текст немного изменился, чтобы отразить измененную версию .Net.   -  person Radek Plach    schedule 09.07.2018


Ответы (2)


Здесь есть несколько проблем.

Версия Visual Studio и NuGet

Обновление до последней версии (в настоящее время VS2017) должно решить проблему установки пакета. Я думаю, что предыдущие версии VS и NuGet не могут обрабатывать пакеты netstandard.

Версия среды выполнения .Net

В .Net Framework 4.6.1 возникла проблема с переадресацией типов, которая прерывала взаимодействие с сборка netstandard, если она содержит определенные методы в классе, помеченном как Serialized. Это означает, что хотя ваши проекты могут быть на 4.6.1, на целевой (выполняющей) машине должен быть установлен как минимум .Net Framework 4.7.2.

Подробнее см. в этом начальном посте о переносе sensnet. к нетстандарту.

person Miklós Tóth    schedule 10.07.2018

Что ж, оказывается, при использовании последней версии VS 2017 такой проблемы нет. Я использую более старую версию VS 2017 на своем компьютере для разработки SharePoint (Windows Server 2012), и VS нельзя обновить из-за требований установщика VS.

person Radek Plach    schedule 09.07.2018
comment
Возможно, это старая версия nuget.exe (установленная вместе с более старой версией VS), которая не распознает содержимое пакета netstandard. - person Miklós Tóth; 09.07.2018
comment
Однако появляется новая проблема. Выполнение команды .\SnAdmin install-services дает мне следующую ошибку: System.Exception: ReflectionTypeLoadException: Не удалось загрузить типы. Затрагиваемые типы: Lucene.Net.Store.RAMDirectory, Lucene.Net.Search.FieldDoc, Lucene.Net.Search.NumericRangeQuery, Lucene.Net.Search.SortField, Lucene.Net.Index.Term. Первое сообщение: введите «Lucene. Net.Store.RAMDirectory» в сборке «Lucene.Net, версия = 2.9.4.301, культура = нейтральная, PublicKeyToken = null» имеет метод «OnDeserialized» с неправильной подписью для атрибута сериализации, которым он украшен. - person Radek Plach; 09.07.2018
comment
Установка .Net 4.7.2 должна устранить исключение загрузки типа, они исправили его в этой версии фреймворка, см. другой ответ ниже. - person Miklós Tóth; 10.07.2018