Вопросы и ответы о средствах разработки

В .NET 8 использование BinaryFormatter было отключено. Чтобы избежать ошибки при сериализации и десериализации через BinaryFormatter, необходимо подобрать альтернативные решения, которые описаны в документации.


Если альтернативное решение не подходит, то нужно включить сериализацию с помощью BinaryFormatter. Для этого в файле .csproj, в котором возникают ошибки, необходимо добавить следующую строку:

<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>

Решение с включением BinaryFormatter в .NET 8 не является безопасным.
Начиная с .NET 5, некоторые предупреждения стали переквалифицироваться в ошибки. Если исправить причину предупреждений невозможно, их можно оставить в виде предупреждений, добавив в файл .csproj следующую строку:

<TreatWarningsAsErrors>False</TreatWarningsAsErrors>

Данный способ не является безопасным.
Существуют библиотеки, которые могут оказаться несовместимыми с .NET 8 из-за изменений в API или устаревания версий пакетов. Решение: обновить эти пакеты до версии, поддерживающей .NET 8. Проверьте документацию пакетов и обновите их версии через NuGet.

Если в коде используются директивы препроцессора, такие как NETCOREAPP, их нужно заменить на более универсальные варианты, например, NETFRAMEWORK или !NETFRAMEWORK. Это позволит избежать явной привязки к конкретной версии .NET и сделает код более гибким и совместимым с будущими версиями.

Директива препроцессора !NETFRAMEWORK означает не только использование .NET, но и .NET Standard.
Для работы с .NET 8 необходимо обновить версию SDK до SDK 8. Это обязательный шаг для корректной работы платформы.

В .NET 8 изменился тип перечислителя для JArray на SZGenericArrayEnumerator<JToken>. Это может вызывать ошибки в логике обработки значений null в методе Current. Чтобы избежать переработки логики, можно явным образом обозначить использование List<JToken>.GetEnumerator().


Пример использования:
var container = token.Value();

IEnumerator<JToken> enumerator = token.Type == JTokenType.Object
    ? ((JObject)container).Properties().GetEnumerator()
    : container.Children().GetEnumerator();

IEnumerator<JToken> enumerator;
switch (token.Type)
{
    case JTokenType.Object:
        enumerator = ((JObject)container).Properties().GetEnumerator();
        break;
    case JTokenType.Array:
        enumerator = container.ToList().GetEnumerator();
        break;
    default:
        enumerator = container.Children().GetEnumerator();
        break;
}
В .NET 8 иногда возникают ошибки в работе с GZipStream. Чтобы избежать проблем, рекомендуется заменить его на GZipInputStream из NuGet-пакета SharpZipLib. Пример использования можно найти в документации SharpZipLib.

Ошибка CS1705 возникает, когда сборка System.Collections.Immutable с более высокой версией пытается использовать несовместимую версию System.Runtime.


Решение проблемы:
  1. Скачайте nuget-пакет System.Collections.Immutable.dll;
  2. Поменяйте расширение файла с .nupkg на .zip, распакуйте архив;
  3. Перейдите в директорию [Директория, в которую распакован архив]/lib/netstandard2.0 и скопируйте в папку ref, которая находится в корне приложения, сборку System.Collections.Immutable.dll вместо существующей.

Если возникает похожая ошибка при компиляции или установке пакета с помощью «Установка и удаление приложений» необходимо найти проблемную сборку на nuget.org, скачать nuget-пакет, поменять формат скачанного пакета на .zip, распаковать и скопировать сборку из директории netstandard2.0 в папку ref, которая находится в корне приложения, вместо существующей.

Примечание. Если при использовании BPMSoft на платформе .NET 8 возникают иные ошибки или предложенные решения не помогли справиться с ошибкой, обратитесь в техническую поддержку BPMSoft.
UID в свойствах колонки в базе данных может отличаться от UID в метаданных объекта. Не рекомендуется изменять UID или пытаться синхронизировать UID в базе данных и в метаданных объекта, так как это может привести к некорректной работе системы.
Материал был полезен для вас?
Запросить демонстрацию
Купить приложение
Заявка на индивидуальный тренинг
Заявка на обучение в формате тренинга
Заявка на консультацию по обучению
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Вебинар: 25 июня в 11:00
Приглашаем вас на вебинар: BPMSoft CRM без отраслевых границ. От трейдинга до здравоохранения. Опыт и цифры
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Регистрация на мероприятие
Типовое внедрение
Внедрите BPMSoft CRM в свою компанию всего за 8 рабочих дней по фиксированной цене! Заполните заявку для уточнения условий.
Предпочитаемый способ связи
Оставить заявку
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Предпочитаемый способ связи
Демонстрационная версия BPMSoft
Заполните заявку для получения бесплатного доступа к демонстрационному стенду на 14 дней.
Заказать презентацию
Наш менеджер свяжется с Вами в ближайшее время.
Предпочитаемый способ связи
Рассчитать стоимость
Предпочитаемый способ связи
Лучшие CRM-системы в России: выводы Фонда «Сколково»
Какие CRM выбирают крупнейшие российские компании? Скачайте исследование рынка CRM-систем 2026 от Фонда «Сколково» и TAdviser
Задать вопрос
Предпочитаемый способ связи
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Присоединяйтесь к партнерской сети BPMSoft
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время
Тип партнерства*
Управление полным жизненным циклом клиента: от генерации лидов и продаж до внедрения, поддержки и продления подписки.
Разработка собственного Приложения – производного программного обеспечения, созданного на платформе BPMSoft (Базовое ПО).
Заявка на онлайн-консультации по BPMSoft
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время
Стать образовательным партнёром
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Заявка на консультацию
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Подписка
Спасибо!
Ваша заявка принята.
Спасибо!
Ваша заявка принята.
Наш сотрудник свяжется с вами в течение 1-2 рабочих дней.
Внимание!
Обнаружена ошибка.
Внимание!
Обнаружена ошибка.
Вы подписаны на новостную рассылку от BPMSoft.
Вы подписаны на новостную рассылку от BPMSoft.
MAX Подписаться
Уважаемые клиенты! Предупреждаем о случаях недобросовестной конкуренции и мошенничестве в сети Интернет.
Подробнее