Исключение: < /p>
System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'MathWorks.MATLAB.NET.Arrays.MWNumericArray' threw an exception.
Source=MWArray
StackTrace:
at MathWorks.MATLAB.NET.Arrays.MWNumericArray..ctor(Double scalar)
at TestWindowsFormsControlLibrary.UserControl1..ctor() in ...\SandboxSolution\TestWindowsFormsControlLibrary\UserControl1.cs:line 32
This exception was originally thrown at this call stack:
[External Code]
Inner Exception 1:
TypeInitializationException: The type initializer for 'MathWorks.MATLAB.NET.Arrays.MWArray' threw an exception.
Inner Exception 2:
TypeInitializationException: The type initializer for 'MathWorks.MATLAB.NET.Utility.MWMCR' threw an exception.
Inner Exception 3:
Exception: Trouble initializing libraries required by .NET Assembly.
< /code>
Другими словами: < /strong> < /p>
- Проблема возникает только тогда, когда библиотека управления -регистрирован и загружен во внешнее приложение (например, Excel).
- Без регистрации COM тот же управление отлично работает в автономном приложении Windows Forms или WPF. < br/>
код триггера ошибки
Исключение происходит при инициализации Mwarray, как SO:
MWArray test = new MWNumericArray(0);< /code> < /p>
[*] Если я удалю эту строку, приложение Com работает нормально (без взаимодействия с Matlab Runtime). < /li>
< li> Если я запускаю одно и то же управление в стандартном приложении Windows Forms или приложении WPF, он загружает время выполнения Matlab без проблем. < /li>
< /ul>
шаги к Воспроизведение: < /strong> < /p>
Создать библиотеку управления формами Windows. < /li>
Настройка, как описано в документации MATLAB. < /li>
Используйте библиотеку времени выполнения Matlab (например, инициализируйте MWARRAY). < /li>
Создайте и протестируйте его в приложении Windows Forms или WPF -приложении - это работает line. < /li>
Зарегистрируйте элемент управления в качестве компонента COM и используйте его во внешнем приложении (например, Excel). < /li>
TypeInitializationException брошен. /li>
< /ol>
Environment < /strong> < /p>
версия времени выполнения Matlab: 2024b 64 -bit
[*].net Framework: 4.8.1 64-bit
[*] Com Architecture: только 64-битная (AnyCPU удаляется)
< /ul>
ожидаемый результат: < /strong> < /p>
Я ожидаю Приложение Windows Forms.
Дополнительные примечания: [/b] У меня установлено только одно время выполнения Matlab. Я добавил его в путь, и это единственная запись.
Подробнее здесь: https://stackoverflow.com/questions/793 ... dows-forms