Мне удалось разместить CLR 2.0 в приложении Delphi win32, которое смогло создавать и размещать элементы управления WPF внутри элемента управления Delphi, что-то похожее на ElementHost для приложений WinForms.
Теперь я хочу переместить свое решение в CLR 4.0, и все работает отлично, за исключением случаев, когда я пытаюсь создать UserControl, который имеет связанный ресурс Xaml. В этом случае это вызывает ошибку переполнения стека, которая вынуждает процесс завершиться! Но если я создаю некоторые элементы управления WPF по коду (без чтения xaml), то все работает нормально!
Мне удалось войти в код фреймворка, пока я не вошел в метод XamlReader.LoadBaml , который вылетел сразу после выполнения следующего кода:
// We don't actually use the GeneratedInternalTypeHelper any more.
// But for v3 compat, don't allow loading of internals in PT unless there is one.
Type internalTypeHelper = null;
if (streamInfo.Assembly != null)
{
try
{
internalTypeHelper = XamlTypeMapper.GetInternalTypeHelperTypeFromAssembly(parserContext);
}
// This can perform attribute reflection which will fail if the assembly has unresolvable
// attributes. If that happens, just assume there is no helper.
catch (Exception e)
{
if (MS.Internal.CriticalExceptions.IsCriticalException(e))
{
throw;
}
}
}
Обратите внимание, что загруженные сборки также используют CLR4.
Спасибо за вашу помощь,
Morgan