代码之家  ›  专栏  ›  技术社区  ›  Brian Stewart

WPF在解析包含Winforms用户控件的XAML时引发异常

  •  7
  • Brian Stewart  · 技术社区  · 16 年前

    我有一个WPF应用程序,它使用我使用C++/CLI创建的Winforms用户控件。当我的应用程序为我的主窗口解析XAML时,它抛出一个异常。这些信息似乎有些缩写,但上面写着:

    A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll
    
    Additional information:   is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)  Error in markup file 'OsgViewer;component/osgviewerwin.xaml' Line 1 Position 9.
    

    我过去在另一个项目上成功地完成了这项工作,因此我从该应用程序中引入了一个不同的WinForms用户控件,并在XAML中对其进行了实例化,一切正常。

    所以它是这个DLL中的一些东西。我在WPF C#应用程序中有一个对DLL的引用,当我在对象浏览器中加载DLL时,所有必需的类和名称空间都显示良好。这个应用程序编译得很好,问题就出现在解析XAML时。有人见过这样的东西吗?你知道是什么导致了这一切吗?调试它的想法?谢谢

    <Window x:Class="OsgViewer.OsgViewerWin"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:int="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
        xmlns:myns="clr-namespace:MyGlobalNS.MyNS;assembly=MyAssembly"
    ...
            <int:WindowsFormsHost x:Name="m_Host">
                <myns:CMyClass  x:Name="m_MyClass" />
            </int:WindowsFormsHost>
    ...
    </window>
    
    6 回复  |  直到 16 年前
        1
  •  10
  •   EFrank    16 年前

    我曾经遇到过类似的问题(但没有完全相同的错误消息)。似乎WPF无法实例化Winforms用户控件。

    挑战在于找出原因。以下是我的建议,您可以尝试:

    1. 了解在实现Winforms控件的C++/CLI DLL中是否存在任何依赖项,以及这些依赖项是否无法解析。
      为了找出对本机DLL的依赖关系,您应该使用该工具 Dependency Walker (depends.exe) . .NET Reflector将只检查托管依赖项。
    2. 逐步注释掉Winforms用户控件的代码,然后重试。
    3. 装载机捕捉 (参见。 Debugging LoadLibrary Failures
        2
  •  1
  •   Nathan Monteleone    15 年前

    解决方案是避免完全使用boost::threads,或者将其使用限制在本机代码中的.cpp文件中。

        3
  •  1
  •   Mats    13 年前

    我有类似的症状,我的问题是C项目被设置为使用任何CPU,而C++项目被设置为使用x86。将两者都设置为使用x86解决了问题

        4
  •  0
  •   azzmodious azzmodious    15 年前

    我也有这个问题,我所要做的就是进入项目属性>安全性,然后单击“这是一个完全信任的应用程序”。我再次运行我的项目,它成功了!

        5
  •  0
  •   mike mike    15 年前

    您确定dll位于system32文件夹中或与exe位于同一文件夹中吗。我在运行使用CLI dll构建的WPF项目时收到了完全相同的错误消息,而该dll位于不同的文件夹中。

        6
  •  0
  •   a52    11 年前

    我也有这个execption消息,但是我的解决方案正在改变XAML元素的顺序。我正在使用XmlDataProvider并在列表框中显示内容。我只是将XmlDataProvider放在列表框之前。