Ошибка "Cannot create boxed ByRef-like values" после протекта

Здравствуйте! Заметил проблему:
После накидывания функции Main(string[] args) виртой или ультрой вылетает stacktrace:

Unhandled exception. System.NotSupportedException: Cannot dynamically create an instance of type 'System.Runtime.CompilerServices.DefaultInterpolatedStringHandler'. Reason: Cannot create boxed ByRef-like values.
   at System.RuntimeType.ActivatorCache..ctor(RuntimeType rt)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
   at 2588DD38.17A27FAD()
   at 2588DD38.9BB07097(Object 6B0B01A5, Int32 2F03F1B4)
--- End of stack trace from previous location ---
   at 2588DD38.5B2C4C06()
   at 2588DD38.9BB07097(Object 6B0B01A5, Int32 2F03F1B4)
   at VMP_SmallRepresentationErr.Program.Main(String[] args)
Aborted

Компилировал через

dotnet publish -c Release -r linux-x64

В конфиге:

  1. Выключил “Удалять отладочную информацию”
  2. Навесил на Main(string args) вирту
    Остальное не трогал.

Запускаю в Ubuntu 22.04 WSL2:

Linux DESKTOP-GAMANIA 5.15.153.1-microsoft-standard-WSL2-gamania-hotfix2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu GLIBC 2.35-0ubuntu3.8

(Если использовать Мутацию - то всё работает.)

VMProtect Professional v3.8.8 build 2040
Прикладываю архив с сурсами для репрезентации ошибки и конфигом vmp (если понадобится):
VMP_SmallRepresentationErr.zip (718 KB)
UPD: Обновился до 3.8.9 build 2125 - не помогло, проблема осталась

https://forum.vmpsoft.com/viewtopic.php?t=31451

Я видел данный пост, но тут проблема в том, как быть в такой ситуации?
Просто выходит так, что в программе нельзя иметь код, в котором будет какой либо массив, ведь:
List, IEnumerable, так и T при протекте выдают эту самую ошибку. (Если накидывается вирта или ультра)
Я проверял с string, object и int.

Не сможете никак помочь? Без массивов очень тяжко будет..
Вне зависимости от ответа спасибо за помощь :smiley:

Там проблема в System.Runtime.CompilerServices.DefaultInterpolatedStringHandler, который как раз ByRef-like. А List - это вообще class, а не struct и с ним нет никаких проблем.

Пардон, действительно, полез в DnSpy, увидел там DefaultInterpolatedStringHandler и понял что проблема в конкатанации строк.
Конечно интересно что сами мелкомягкие под капотом используют DefaultInterpolatedStringHandler, вроде раньше как помню у них был String.Format, если соединять строки через $“{var}”.
(Да, до .NET 5 включительно, используется String.Format под капотом, а уже с 6 - DefaultInterpolatedStringHandler )
В целом понятно как теперь решать проблему на нашей стороне.
Ну… если в будущем сможете пофиксить проблему с DefaultInterpolatedStringHandler - будет прям замечательно.

Всё равно спасибо за помощь. Хорошего дня :wink:

Исправлено в 2171 билде.