Проблема при попытке открыть проект 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, вы также должны иметь возможность ее выбрать.