我正在使用VS2008 SP1和WPFToolKit v3.5.50211.1。
我在类库项目中嵌套了WPF UserControls,如下所示:
MainWpfUserControl
NestedUserControl
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有关。有没有办法控制这个?
答案 0 :(得分:1)
经过一些研究后,我所遇到的问题似乎是由VS设计师加载错误版本的程序集引起的。看起来类似于此处描述的问题:
http://blogs.telerik.com/blogs/posts/08-12-23/visual_studio_ldquo_error_creating_control_rdquo.aspx
我可以通过以下方式解决问题:
关闭Visual Studio 2008
清除程序集下载缓存(gacutil / cdl)
删除VS2008 ProjectAssemblies文件夹:
%USERPROFILE%\ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies
重新启动Visual Studio