2014-03-07 2 views
2

Я работаю над расширяемым приложением WPF с использованием C#. Для расширяемости я использую MEF (Managed Extensibility Framework). Но с сегодняшнего дня дизайнер XAML больше не работает для MainWindow.xaml. Он бросает FileNotFoundException с этим сообщением:XAML designer: 'FileNotFoundException'

Не удалось загрузить файл или сборку 'System.ComponentModel.Composition.CodePlex, Version = 4.1.2.0, культура = нейтральной, PublicKeyToken = 13e5ffd4e05db186' или один из его зависимостей. Указанный модуль не может быть найден.

Но странно, что файл делает. Я скопировал его в папку bin\debug. И добавил его к ссылкам (да, я пытался его повторно добавить, но это не помогло). Еще одна странная вещь: похоже, что это вызвано кодом XAML, потому что дизайнер работает для всех других окон. Я уже пытался отметить некоторые подозрительные части (ItemControls, которые перечисляют плагины) как комментарий (я не хочу их удалять). Ну, это сработало один раз, но потом я построил решение, и дизайнер разбился (из памяти). С тех пор у меня опять та же проблема.

Edit:

я узнал, что XAML не было проблемой. Когда я удаляю ссылку на System.ComponentModel.Composition.CodePlex и каждый код, который использует эту библиотеку, проблема исправлена ​​- до тех пор, пока я не перезапущу Visual Studio или конструктор.

+0

Какая версия Visual Studio? Попробуйте в последней версии Blend и посмотрите, получаете ли вы те же результаты. – OmegaMan

+0

@OmegaMan Я использую Visual Studio 2013 Express. Я могу открыть решение в Blend, но я не знаю, как просмотреть конструкцию MainWindow.xaml в дизайнере. –

+0

В Blend просто нажмите на файл в своем браузере решений, чтобы открыть его. В этот момент он должен показать дизайн. Если он показывает raw xaml, тогда в правом верхнем углу кода xaml есть небольшая кнопка, которая переключается между дизайном и xaml. – OmegaMan

ответ

0

Вы можете просто удалить эту ошибку, установив CopyLocal=true для указанной DLL.

Таким образом, он не будет конфликтовать между существующим установленным и недавно добавленным из пакета Nuget.

0

Попробуйте удалить элементы/элементы управления из xaml, пока проблема больше не проявится. Делая это, вы можете объяснить возникновение проблемы и, возможно, решить или хотя бы предоставить StackOverflow определенную ситуацию, которую мы можем решить.

0

Я нашел две кнопки в <Window.Style> тег, который (кажется) вызывают проектировщику аварии:

<Button Command="{x:Static local:MainWindow.Maximize}" Loaded="MaximizeLoaded" Content="&#xf065;" ToolTip="{lex:Loc Bukkit Manager:UI:maximize}" Style="{StaticResource CaptionButton}" shell:WindowChrome.IsHitTestVisibleInChrome="True"/> <Button Command="{x:Static local:MainWindow.Minimize}" Content="&#xf068;" ToolTip="{lex:Loc Bukkit Manager:UI:minimize}" Style="{StaticResource CaptionButton}" shell:WindowChrome.IsHitTestVisibleInChrome="True"/>

Но странное дело в том, что атрибут каждого элемента управления Command= помечается как ошибка. Хотя существуют команды (и их привязки). На мыши над ним показывает всплывающую подсказку о том,

Не удалось загрузить файл или сборку «System.ComponentModel.Composition.CodePlex, Version = 4.1.2.0, культура = нейтральной, PublicKeyToken = 13e5ffd4e05db186» или один из его зависимостей. Указанный модуль не может быть найден.

Это происходит только тогда, когда дизайнер работает, но я все еще могу отлаживать (и запускать) приложение. Когда я заканчиваю дизайнерские проекты, ошибки уходят.

0

Я заметил, что System.ComponentModel.Composition.CodePlex.dll в папке bin\debug отличается от версии, которую ищет Visual Studio. VS пытается найти файл с версией 4.1.2.0, но тот, который находится в каталоге, равен 1.1.0.0.

0

Открыть файл System.ComponentModel.Composition.CodePlex.dll из ссылочного места в Visual Studio в качестве типа файла «Файлы ресурсов». Измените FILEVERSION и PRODUCTVERSION на 4,1,2,0 и перестройте проекты. Это обходной путь для работы дизайнера. Чистое исправление заключается в том, чтобы запросить у dll CodePlex надлежащую версию файла & для этих сборок.

Смежные вопросы