Проблема при попытке открыть проект WPF в Expression-Blend 4, который был создан в Visual Studio 2010
Я создаю свой проект WPF в VS 2010. После того, как я закончил свою работу с функциональным GUI, я хотел отредактировать шаблон моих элементов управления в Blend 4. Но когда я открываю проект в Blend, в DesignMode, он говорит мне
недопустимый XAML
в окне результата он написал:
[ControlName] не поддерживается в проекте Windows Presentation Foundation (WPF)
где [ControlName] список элементов управления по умолчанию, которые я использовал в своем проекте (например, Window, DockPanel и т. д.)
что делать, чтобы избежать этих проблем и иметь возможность редактировать формы WPF в DesignMode выражения-Blend4?
EDIT:
возможный обходной путь.
после некоторого сравнения пустых проектов (*.csproj file), который был создан командой Blend
и Studio
, Я должен выяснить, что VisualStudio
создайте его с помощью next строка:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
...
в то время как Blend использует следующие строки:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
поэтому, если вы измените x86
to AnyCPU
, Blend откроет проект, как и ожидалось.
2 ответов
Я видел это сообщение об ошибке только один раз. После сравнения нового файла решения с тем, который не загружался, я обнаружил, что Blend требует на AnyCPU
платформа / конфигурация должна быть определена.
если это не работает, убедитесь, что у вас есть все необходимые сборки, на которые ссылается проект WPF:PresentationCore
, PresentationFramework
и WindowsBase
.
HTH,
после потраченного впустую дня, отслеживая это, я нашел это:
открыть .proj файл в текстовом редакторе и посмотрите на самую верхнюю часть файла, там будет список разделов PropertyGroup в XML. Взгляните на первый, если он говорит x86 или что-то другое, кроме AnyCPU, измените его, чтобы сказать AnyCPU и сохранить его.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
должно быть:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
почему? Я не уверен на 100%, но похоже, что Visual Studio не изменяет эту часть файл проекта (если это так, я не знаю, когда именно), так как вы выбираете конфигурацию сборки в пользовательском интерфейсе, и он использует это вместо этого. Однако, поскольку Expression Blend (с использованием версии 4)не позволяет вам выбирать конфигурацию сборки, она просто выбирает верхнюю. В результате вы получаете "недопустимый XAML" , и все ваши ссылки имеют челку (! рядом с ними.
на мой взгляд (и зная, что мой анализ может быть ошибочным) это недостаток в сочетание выражения. Не только должно иметь возможность использовать любую конфигурацию сборки, которую может studio, вы также должны иметь возможность ее выбрать.