Конструктор WinForms не работает при размещении вложенных пользовательских элементов управления WPF

Я использую VS2008 SP1 с WPFToolKit v3.5.50211.1.

Я вложил WPF UserControls в проект библиотеки классов следующим образом:

  • MainWpfUserControl
  • Содержит экземпляр NestedUserControl
  • Которая содержит экземпляр DataGrid из набора инструментов WPF.

Тот же проект библиотеки классов содержит WinForms UserControl с ElementHost, на котором размещается MainWpfUserControl.

Я получаю странные ошибки при открытии WinForms UserControl в дизайнере. После небольшого поиска (перехвата и регистрации исключения, созданного в конструкторе NestedUserControl), кажется, что исключение выбрасывается следующим образом:

[A] Microsoft.Windows.Controls.DataGrid нельзя преобразовать в [B] Microsoft.Windows.Controls.DataGrid. Тип A происходит из «WPFToolkit, Version = 3.5.40128.1, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35» в контексте «LoadFrom» в расположении «C: \ Program Files \ WPF Toolkit \ v3.5.50211.1 \ WPFToolkit.dll». Тип B происходит из WPFToolkit, Version = 3.5.40128.1, Culture = нейтральный, 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). Похоже, проблема связана с контекстом загрузки. Есть ли способ контролировать это?


person Joe    schedule 02.05.2011    source источник


Ответы (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

person Joe    schedule 06.05.2011