Optimizely CMS 12 ведет себя странно после обновления с CMS 11

После недавнего обновления решения Optimizely с CMS 11 до CMS 12 поначалу казалось, что все работает нормально. Сайт запустился без ошибок, а интерфейс редактора выглядел нормально.

Однако как только разработка новых функций возобновилась, быстро стало ясно, что что-то не так. Добавление свойства к типу страницы ничего не даст. Ничего нового не появится ни в режиме редактирования, ни в интерфейсе администратора; изменения были проигнорированы.

Отладка проблемы

Исследуя проблему, я заметил следующее предупреждение, неоднократно появляющееся в выходных данных отладки Visual Studio:

EPiServer.DataAbstraction.RuntimeModel.Internal.ContentTypeModelRegister: Warning: Changes in the model were ignored because its version(0.0.0.0) is lower than version in the database(1.0).

Это появлялось в выводе несколько раз. Я знал, что в моем файле проекта для свойств AssemblyVersion и FileVersion установлено значение 1.0.0.0, поэтому я мало что понимал.

Поиск решения

К счастью, у Optimizely есть замечательные разработчики по всему миру и форум, на котором обсуждаются самые странные случаи поведения. В эта темая нашел решение проблемы:

«Удаление и (если они существуют) из csproj и добавив истинный решил мою проблему».

true

После применения этого изменения и перестройки проекта все стало работать как положено. Новые свойства были зарегистрированы правильно, и Optimizely снова уловил изменения модели.

Почему это происходит?

Основная причина, по-видимому, связана с тем, как метаданные сборки генерируются в современных версиях .NET.

При переходе с .NET Framework на .NET 6+ (в рамках обновления до CMS 12) атрибуты сборки могут обрабатываться по-другому. Если они настроены неправильно, Optimizely может не определить правильную версию сборки и по умолчанию использовать 0.0.0.0.

Этот Сообщение от Microsoft дает подсказку о том, что мне следует попробовать при следующем обновлении .NET Framework.

Read more:  Эктор Искьердо, комиссар по восстановлению после извержения вулкана: «Цель состоит в том, чтобы 6% ВВП Ла Пальмы приходилось на науку» | Общество

При переносе кода из .NET Framework в .NET 6 или более поздней версии перед запуском помощника по обновлению .NET выполните одно из следующих действий:

Отключите создание временного файла кода, содержащего атрибуты информации о сборке, установив GenerateAssemblyInfo к false в файле вашего проекта. Это позволяет вам сохранить Информация о сборке файл.

Перенесите настройки в Информация о сборке файл в файл проекта, а затем удалите Информация о сборке файл.

Ещё по этой теме

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.