StiFunctions - привязка параметров по умолчанию net5.0 разное поведение windows vs linux

Обсуждение Stimulsoft Ultimate
Ответить
jgnss
Сообщения: 2
Зарегистрирован: 10 мар 2021, 11:15

StiFunctions - привязка параметров по умолчанию net5.0 разное поведение windows vs linux

Сообщение jgnss »

Добрый день,

имеется действующая лицензия на пакет Ultimate, в процессе разработки возникло некоторое недоразумение, прошу помощи.

существует консольное приложение и отчет(ы) с которыми оно работает, для расчета значений используются StiFuntions которые, по разному ведет себя в OS Windows 10 и в Docker container на debian 10
итак, версии

Код: Выделить всё

<TargetFramework>net5.0</TargetFramework>
<PackageReference Include="Stimulsoft.Reports.Engine.NetCore" Version="2021.1.2" />
определение функции

Код: Выделить всё

public class ReportFunc
{
    public static string HelloWorld(string Datum, Double Val, string UnitType = "-1", string AngleType = "-1", string RoundType = "-1")
    {
        return "Hello World";
    }

    public static void AddGetStringValueByType()
    {
        Stimulsoft.Report.Dictionary.StiFunctions.AddFunction("Category1",
                    "Group1",
                    nameof(HelloWorld),
                    "Get formated string coordinate Z",
                    typeof(ReportFunc),
                    typeof(string),
                    "Formated string coordinate Z",
                    new Type[] { typeof(string), typeof(Double), typeof(string), typeof(string), typeof(string) },
                    new string[] { "CoordSys", "Val", "UnitType", "AngleType", "RoundType" },
                    new string[] { "", "", "", "", "" }
                    );
    }
}

вызов функции в отчете

Код: Выделить всё

<Text>{HelloWorld("",1.0,"8","-1","4")}</Text>
<Text>{HelloWorld("",2.0,"4")}</Text>
поведение оличается
в Windows 10, вызываются и корректно отрабатывают оба варианта
в Docker container вызывается только вариант у которого совпадает количество параметров

пролог Dokerfile

Код: Выделить всё

FROM mcr.microsoft.com/dotnet/runtime:5.0-buster-slim AS base
RUN apt-get update && apt-get install -y libgdiplus
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src


Вопрос,

что нам нужно сделать, чтобы у нас в linux работало так же как в Windows?
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: StiFunctions - привязка параметров по умолчанию net5.0 разное поведение windows vs linux

Сообщение Ivan »

Здравствуйте.

Если часть параметров функции имеют значения по умолчанию, компилятор может использовать её с разным количеством параметров.
К сожалению, в режиме интерпретации это не реализовано, т.к. узнать наличие дефолтных значений параметров можно только через рефлексию, которая очень странно работает в NetCore/Net5, а в нашем механизме добавления функций это не предусмотрено.
Поэтому на данный момент в режиме интерпретации работают только функции, которые вызываются с точным количеством параметров, описанным при добавлении функции.

Поэтому на данный момент:
1. Для режима интерпретации - через StiFunctions.AddFunction добавить ещё одну перегрузку функции с тремя параметрами.
2. В режиме компиляции должно работать, мы проверили. Компиляция уже работает в NetCore начиная с версии 2021.1.2.

Спасибо.
jgnss
Сообщения: 2
Зарегистрирован: 10 мар 2021, 11:15

Re: StiFunctions - привязка параметров по умолчанию net5.0 разное поведение windows vs linux

Сообщение jgnss »

Добрый день,

спасибо за совет,

наша ситуация разрешилась по варианту номер 2,

однако сразу репорт скомпилироваться не смог, помогло использование System.Drawing.Common 5.0.2 вместо 4.7.0
Aleksey
Сообщения: 2912
Зарегистрирован: 22 апр 2010, 06:57

Re: StiFunctions - привязка параметров по умолчанию net5.0 разное поведение windows vs linux

Сообщение Aleksey »

Здравствуйте,

Отлично!
Дайте знать, если будут еще вопросы.
Ответить