Будут ли сборки в смешанном режиме (проекты C ++ / CLI) работать на .NET Core?

У меня есть кодовая база, которая использует проект C ++ / CLI, который предоставляет классы C ++ для CLR через классы тонкой оболочки. Например…

Код C ++ в проекте C ++

class Foo {
public Foo(bool wat) { /* do the things */ }
};

Код C ++ / CLI в сборке смешанного режима (проект C ++ / CLI)

public ref class ManagedFoo {
Foo * foo;
public:
ManagedFoo (bool wat) { foo = new Foo(wat); }
!ManagedFoo () { delete foo; }
~ManagedFoo () { this->!ManagedFoo (); }
};

Насколько я знаю, сборки в смешанном режиме будут работать только в Windows .NET. Я надеюсь, что мне не нужно пересматривать компоненты и использовать P/Invoke, который дал бы мне кроссплатформенную поддержку.

Кто-нибудь знает, будет ли .NET Core поддерживать сборки в смешанном режиме? Другие идеи приветствуются.

7

Решение

Неуправляемый код в контексте C ++ / CLI всегда зависит от платформы и компилируется для конкретной ОС (Windows) и конкретной архитектуры ЦП (x86 / x64). Неуправляемый код в C ++ / CLI оказывается во многом похожим на реальный код C ++, скомпилированный с использованием компилятора C ++. Поскольку сборки в смешанном режиме могут содержать собственный код, они привязаны к конкретной архитектуре ОС и ЦП.

5

Другие решения

Работает ли сборка в смешанном режиме с .NET Core, не определяется кодом конкретной платформы. Поддержка сборок в смешанном режиме работает в:

https://github.com/dotnet/coreclr/issues/18013

Насколько я понимаю, это потребует перекомпиляции проектов C ++ / CLI для целевой платформы .NET Core.

Конечно, сборка в смешанном режиме с кодом x86 для Windows будет работать только как x86 в Windows и так далее.

0

По вопросам рекламы [email protected]