C ++ / CLI таргетинг. NET Core 3.1 - PullRequest
2 голосов
/ 13 января 2020

. NET В Core 3.1 добавлена ​​поддержка C ++ / CLI ( Announcing. NET Core 3.1 ). В официальном объявлении перечислены два новых шаблона проекта: Библиотека классов CLR (. NET Core) и Пустой проект CLR (. NET Core) , которые мы действительно можем найти и использовать .

Однако никакой дополнительной информации о поддерживаемых технологиях, таких как WPF или Windows Forms, нет. В блоге за сентябрь , Microsoft сказала:

мы стремимся поддерживать C ++ / CLI для. NET Core, чтобы обеспечить легкое взаимодействие между кодовыми базами C ++ и. NET такие технологии, как WPF и Windows форм. Эта поддержка не будет готова, когда. NET Core 3.0 будет впервые выпущена, но она будет доступна в. NET Core 3.1, которая поставляется с Visual Studio 2019 16.4

Использование Visual Studio 2019 16.4.x и таргетинг. NET Core 3.1, я попытался создать демонстрационное приложение WinForms с использованием C ++ / CLI. Однако это не работает.

Прежде всего, таргетинг на проекты C ++ / CLI. NET Ядро должно быть DLL:

ошибка NETSDK1116: таргетинг на проекты C ++ / CLI. NET Ядро должно быть динамическими библиотеками.

Поэтому я попытался сохранить код Win Forms в C ++ / CLI DLL, скомпилированной с /clr:netcore, и запустить его из собственного приложения. Однако я получаю исключение времени выполнения:

Необработанное исключение. System.BadImageFormatException: не удалось загрузить файл или сборку 'System. Windows .Forms, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089'. Была предпринята попытка загрузить программу с неверным форматом. Имя файла: 'System. Windows .Forms, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089' ---> System.BadImageFormatException: была предпринята попытка загрузить программу с неверным форматом. (0x8007000B)

Я ссылался в проекте C ++ / CLI на System. Windows .Forms.dll из c: \ Program Files \ dotnet \ shared \ Microsoft.WindowsDesktop.App \ 3.1.0 \, где находится среда выполнения Microsoft.WindowsDesktop.App 3.1.0 .

Это должно работать, а я нет что-то верно?

...