EntryPointNotFoundException - Точка входа не была найдена при загрузке MVVM Light View в Expression Blend 4 - PullRequest
2 голосов
/ 17 ноября 2011

Я публикую этот вопрос, чтобы я мог задокументировать решение, так как я нашел его очень сложным и трудоемким для решения.

Я использую Лорана Буньона отлично MVVMLight Toolkit в проекте Silverlight 4, и я использую его шаблон ViewModelLocator с Microsoft.Practices.ServiceLocation. ServiceLocator для загрузки моделей времени разработки для Blendability.Первоначально загрузка представлений в Expression Blend 4 работала, и привязка данных времени разработки была отличной.В какой-то момент это перестало работать без каких-либо сообщений об ошибках в Blend.

Я использовал Visual Studio 2010 SP1 для подключения к Blend.exe для устранения проблемы.Исключение EntryPointNotFoundException (точка входа не найдена) генерируется в этой строке кода:

return ServiceLocator.Current.GetInstance<ExampleViewModel>();

Как ни странно, я смог загрузить тот же View в Visual Studio XAMLДизайнер успешно с моей привязкой данных времени работы работает правильно.Я использовал другой экземпляр Visual Studio, чтобы присоединить отладчик к экземпляру Visual Studio, в котором размещен XAML Designer, и смог подтвердить, что вызов ServiceLocator выполнялся успешно.

Сведения об исключении (трассировка стека, InnerExcetion и т. Д.) Не выполнялисьдайте мне дальнейшую подсказку к этой проблеме, и различные поиски в Интернете бесполезного сообщения об ошибке не смогли пролить дополнительный свет.

Мне, в конечном счете, повезло с использованием окна Visual Studio Immediate для выполнения части строки кода, которая вызывала проблему, и я получил гораздо лучшее сообщение об ошибке:

?ServiceLocator.Current

Тип 'Microsoft.Practices.ServiceLocation.ServiceLocator »существует как в« Microsoft.Practices.ServiceLocation.dll », так и в« Microsoft.Practices.ServiceLocation.dll »

. Сравнивая набор изменений с ранее работающим кодом, я заметил, что добавилссылка на GalaSoft.MvvmLight.Extras.SL4 в отдельном модульном тестовом фреймворке для проекта Silverlight (который ссылается на проект пользовательского интерфейса).Этот тестовый проект ссылался на сборку из C: \ Program Files (x86) \ Laurent Bugnion (GalaSoft) \ Mvvm Light Toolkit \ Binaries \ Silverlight4, где проект UI ссылался на него из .. \ packages \ MvvmLightLibsPreview.4.0.0 \Lib \ SL4.Я использовал nuget пакет MvvmLightLibsPreview , чтобы добавить MVVM Light в клиентский проект.

В результатах Blend - ошибки и окна вывода не отображалось ни одного сообщения об ошибкеточка.Очевидно, что никаких реальных ответов не требуется, если только не существует каких-либо методов устранения неполадок с использованием Blend, которые помогли бы мне быстрее разобраться в проблеме.

Ответы [ 3 ]

1 голос
/ 22 сентября 2012

У меня была почти такая же проблема, хотя моя проблема не исчезла, пока я не удалил MVVM Light с помощью панели управления Windows 7. Ссылки NuGet MVVM Light были еще в проекте, но теперь я могу видеть данные времени разработки. Это было сломано раньше.

Я последовал совету на веб-сайте MVVM Light и прикрепил предварительный просмотр Blend для Visual Studio 2012 и получил сообщение об ошибке, о которой вы упоминали выше (EntryPointNotFoundException). Даже тогда я понятия не имел, что мне следует попытаться удалить две разные версии MVVM Light, которые конфликтуют друг с другом.

0 голосов
/ 23 сентября 2012

Я закончил тем, что пытался скопировать все содержимое пакета, который пришел из NuGet, в

C: \ Program Files (x86) \ Laurent Bugnion (GalaSoft) \ Mvvm Light Toolkit \Двоичные файлы

Это не решило проблему.Так как удаление MVVM Light лишило вас других вещей, таких как фрагменты кода, я решил вернуться и устранить неполадки.Я не был успешным и мог только найти грубое временное решение

Я попытался сравнить проекты, которые будут работать, и проекты, которые не будут работать, посмотрев на четыре файла DLL:

GalaSoft.MvvmLight.Extras.WPF4 GalaSoft.MvvmLight.WPF4 Microsoft.Practices.ServiceLocation System.Windows.Interactivity

Я не вижу каких-либо различий в версиях.

Итак, обойти сейчас - начать новый проект с использованием MVVM LightШаблон WPF в Visual Studio 2012, создайте его, затем удалите ссылки на четыре DLL, упомянутые выше.Затем я устанавливаю пакет MVVM Light из NuGet и редактирую двойную запись локатора модели представления в App.xaml, после чего программа работает нормально.На этом этапе в главном окне отображается сообщение с данными о конструкции, которое гласит:

«Добро пожаловать в MVVM Light [дизайн]»

0 голосов
/ 17 ноября 2011

Как и следовало ожидать, изменение ссылок на сборку MVVM Light тестового проекта для использования тех же версий пакета nuget , которые использовались клиентским пользовательским интерфейсом Project, решает проблему.Я понятия не имею, почему в Visual Studio не было проблем с двумя версиями Microsoft.Practices.ServiceLocation.dll, на которые ссылаются так же, как в Blend.

...