Невозможно добавить или изменить тип данных на модифицированной CMS C1 - PullRequest
1 голос
/ 04 февраля 2020

Поскольку встроенный преобразователь изображения C1 CMS не может увеличить изображения, я добавил измененную библиотеку изменения размера изображения и изменил строку ниже:

// using Composite.Core.WebClient.Media;
using Composite.Core.WebClient.Media.Modded;

Изменены следующие файлы:

C:\NET\vhosts\C1.CMS.6.6\Website\Composite\services\Media\ImageManipulator.ashx
C:\NET\vhosts\C1.CMS.6.6\Website\Renderers\ShowMedia.ashx

Модифицированные исходные коды средства изменения размера изображений находятся в папке:

App_Code\ImageResizerModded

enter image description here

Теперь все работает как идеально ... Пока я не попытаюсь добавить новый тип данных или изменить любой. Когда я это сделал, я получил ошибку:

enter image description here

В строке нетронутый исходный код, который отлично работает:

enter image description here

Ответ Stackoverflow говорит о синтаксисе => :

enter image description here

Дон Не знаю, что здесь не так и как это исправить. Единственный обходной путь - временно удалить папку ImageResizerModded, изменить / добавить тип данных, а затем восстановить папку. Интернет-сайт (картинки) влияет на время, пока папка удалена.

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

1 Ответ

2 голосов
/ 04 февраля 2020

Это происходит из-за того, что компилятор, используемый C1 CMS для выполнения проверки c, проверяет, будут ли внесенные вами изменения компилироваться жестко в старую версию компилятора, а не текущий компилятор Roslyn, иначе поставленный в папке bin.

В вашем случае C1 CMS компилирует код приложения в памяти этим методом https://github.com/Orckestra/C1-CMS-Foundation/blob/67275baf443c303623fd1f1ab43721a8e0efdd4f/Composite/Core/Types/CodeCompatibilityChecker.cs#L63, но быстрый поиск показывает, что CSharpCodeProvider используется в 6 разных местах https://github.com/Orckestra/C1-CMS-Foundation/search?q=CSharpCodeProvider&unscoped_q=CSharpCodeProvider

Это использование CSharpCodeProvider должно быть заменено на Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider

Таким образом, ожидаемое вами поведение и вы можете обойти его с помощью

  1. Временное удаление файлов во время изменения типа данных, как вы узнали сами
  2. Не используйте C# 6 или новее в app_code
  3. Отправляйте код, используя C# 6 или новее в скомпилированном сборка
  4. Использовать типы данных stati c (интерфейсы C#) вместо динамических c
...