托管嵌套WPF UserControl时,WinForms Designer失败

时间:2011-05-02 10:24:34

标签: wpf designer winforms-interop

我正在使用VS2008 SP1和WPFToolKit v3.5.50211.1。

我在类库项目中嵌套了WPF UserControls,如下所示:

  • MainWpfUserControl
  • 包含NestedUserControl
  • 的实例
  • 其中包含WPF工具包中DataGrid的实例。

同一个类库项目包含一个WinForms UserControl,其ElementHost承载MainWpfUserControl

在设计器中打开WinForms UserControl时,我遇到了一些奇怪的错误。经过一些挖掘(捕获并记录NestedUserControl构造函数中抛出的异常)后,似乎抛出异常如下:

  

[A] Microsoft.Windows.Controls.DataGrid无法强制转换为[B] Microsoft.Windows.Controls.DataGrid。类型A源自位于'C:\ Program Files \ WPF Toolkit \ v3.5.50211.1 \ WPFToolkit.dll'的上下文'LoadFrom'中的'WPFToolkit,Version = 3.5.40128.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。类型B源自'WPFToolkit,Version = 3.5.40128.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'在上下文'LoadNeither'位置'C:\ Documents and Settings \ ... \ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies \ zfh65-U101 \ WPFToolkit.dll'

有没有人经历过类似的事情?

更新

我似乎通过将WPFToolkit.dll放入GAC来成功解决了这个问题。但由于其他原因,这是不可取的(例如,CopyLocal现在默认为false)。所以似乎问题与Load Context有关。有没有办法控制这个?

1 个答案:

答案 0 :(得分:1)

经过一些研究后,我所遇到的问题似乎是由VS设计师加载错误版本的程序集引起的。看起来类似于此处描述的问题:

http://blogs.telerik.com/blogs/posts/08-12-23/visual_studio_ldquo_error_creating_control_rdquo.aspx

http://connect.microsoft.com/VisualStudio/feedback/details/361826/error-creating-control-text-could-not-be-set-on-property-with-custom-asp-net-server-controls-in-vs-2008-sp1

我可以通过以下方式解决问题:

  • 关闭Visual Studio 2008

  • 清除程序集下载缓存(gacutil / cdl)

  • 删除VS2008 ProjectAssemblies文件夹:

    %USERPROFILE%\ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies

  • 重新启动Visual Studio