Проблема при попытке открыть проект WPF в Expression-Blend 4, который был создан в Visual Studio 2010 - PullRequest
6 голосов
/ 21 июля 2011

Я создаю свой проект WPF в VS 2010. После того, как я закончил свою работу с функциональным графическим интерфейсом, я хотел отредактировать шаблон своих элементов управления в Blend 4. Но когда я открываю проект в Blend, в DesignMode, он говорит мне


Неверный XAML


В окне результатов он написал:


[ControlName] не поддерживается в проекте Windows Presentation Foundation (WPF)


Где [ControlName] - это список элементов управления по умолчанию, которые я использовал в своем проекте (например, Window, DockPanel и т. Д.)

Что нужно сделать, чтобы избежать этих проблем и иметь возможность редактировать формы WPF в DesignMode of Expression-Blend4?

EDIT:

Возможное решение.

После некоторого сравнения пустых проектов (файл * .csproj), которые были созданы Blend и Studio, я обнаружил, что VisualStudio создает его со следующей строкой:

<PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
 ...

, в то время как Blend использует следующие строки:

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

Итак, если вы измените x86 на AnyCPU, Blend откроет проект, как и ожидалось.

Ответы [ 2 ]

11 голосов
/ 19 августа 2011

Я видел это сообщение об ошибке только один раз.После сравнения нового файла решения с файлом, который не загружался, я обнаружил, что для Blend требуется платформа / конфигурация AnyCPU.

Если это не работает, убедитесь, чтоу вас есть все необходимые сборки, на которые есть ссылки для проекта WPF: PresentationCore, PresentationFramework и WindowsBase.

HTH,

1 голос
/ 26 апреля 2012

После того, как потраченный впустую день выследил это, я обнаружил следующее:

Откройте файл .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», и все ваши ссылки имеют челки (!) Рядом с ними.

По моему мнению (и зная, что мой анализ может быть ошибочным), это недостаток в Expression Blend.Вы не только должны иметь возможность использовать любую конфигурацию сборки, которую может использовать студия, вы также можете выбрать ее.

...