According to this question it's possible to seamlessly combine managed and unmanaged code using C++/CLI. I don't quite get it - shouldn't there be marshalling between managed and unmanaged anyway?
For example, I have InnerLibrary that is compiled as a native C++ .dll with a header published and C++/CLI OuterLibrary that calls code from InnerLibrary. Will there be marshalling? Who will implement it and how costly will it be?
KeyValuePair<string,string>
is a value type but has no direct equivalent. Value types are layout-compatible iff every member is layout compatible (an intrinsic type or another layout-compatible value type). – Alms