Исключение: «Сборка, используемая при компиляции, может отличаться от используемой при загрузке, и тип отсутствует». - PullRequest
3 голосов
/ 17 февраля 2010

Я создаю приложение Prism с несколькими модулями, один из которых (MyModule) содержит созданный мной пользовательский элемент управления (MyUserControl). MyUserControl тестирует нормально, но когда я добавляю его в MyModule и запускаю приложение, я получаю следующее исключение:

"Не удается найти тип MyUserControl. Сборка, используемая при компиляции, может отличаться от используемой при загрузке, и тип отсутствует."

Я могу исправить ошибку, добавив ссылку на MyUserControl в мое приложение Shell. Но, конечно, это наносит ущерб всей цели Prism, поскольку Shell не использует MyUserControl - только MyModule использует его.

MyUserControl основан на элементе управления WPF Calendar из WPF Toolkit, который, похоже, имеет аналогичную проблему. У меня есть другой пользовательский элемент управления в другом модуле, который не зависит от WPF Toolkit, и я не получаю это исключение для этого элемента управления.

Есть предложения, как решить эту проблему, не подключая оболочку к MyUserControl? Спасибо.

1 Ответ

3 голосов
/ 19 февраля 2010

Я думаю, что вам нужно просто скопировать MyUserControl.dll, как только встроенный в основную папку приложения (просто добавив ссылку в ваше основное приложение), самый простой способ сделать это - использовать событие после сборки. щелкните правой кнопкой мыши по проекту MyUserControl, выберите свойства, выберите вкладку «События сборки» в командной строке типа Post-build: xcopy $ (TargetFileName) $ (SolutionDir) \ ВАША ОСНОВНАЯ ПАПКА ПРИЛОЖЕНИЯ \ bin \ Debug \ Modules \ / Y и все, после сборки MyUserControl он будет автоматически скопирован в основную папку приложения, а затем, когда вы запустите приложение, модуль, который его использует, сможет найти его.

...