尝试在 Visual Studio 2010 中创建的 Expression-Blend 4 中打开 WPF 项目时出现问题

Posted

技术标签:

【中文标题】尝试在 Visual Studio 2010 中创建的 Expression-Blend 4 中打开 WPF 项目时出现问题【英文标题】:Trouble when trying to open WPF project in Expression-Blend 4, which was created in Visual Studio 2010 【发布时间】:2011-07-21 12:02:33 【问题描述】:

我在 VS 2010 中创建我的 WPF 项目。在完成功能 GUI 的工作后,我想在 Blend 4 中编辑我的控件模板。但是当我在 Blend 中打开项目时,在 DesignMode 中,他告诉我


XAML 无效


他在结果窗口中写道:


[ControlName] 在 Windows Presentation Foundation (WPF) 项目中不受支持


其中 [ControlName] 是我在项目中使用的默认控件列表(例如 Window、DockPanel 等)

如何避免此问题并能够在 Expression-Blend4 的 DesignMode 下编辑 WPF 表单?

编辑:

可能的解决方法。

在比较了BlendStudio创建的空项目(*.csproj文件)后,我发现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 将按预期打开项目。

【问题讨论】:

【参考方案1】:

我以前只看到过一次此错误消息。在将新的解决方案文件与无法加载的文件进行比较后,我发现 Blend 需要定义 AnyCPU 平台/配置。

如果这不起作用,请确保为 WPF 项目引用了所有必需的程序集:PresentationCorePresentationFrameworkWindowsBase

HTH,

【讨论】:

嗯,很有趣。我查看了我已经拥有的参考资料,存在 PresentationCore、PresentationFramework 和 WindowsBase,以及其他 .NET 组件。但是那里的位置是 [ProjectName]\AssemblyName,而不是 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\AssemblyName(他们有! 用黄色三角形标记。)我更改它们后,一切正常。 真正奇怪的行为:在 MS VS 程序集中有正确的路径,当在 Blend 中打开同一个项目时 - 所有 .net 引用都被重写。 我所有的参考资料都搞砸了。 :( 是否有任何简单的更新路径而无需将它们全部删除并重新添加它们?每次您在混合中打开项目时也会发生这种情况,还是只需要修复一次?【参考方案2】:

在浪费了一天的时间后,我发现了这个:

在文本编辑器中打开 .proj 文件并查看文件的最顶部,在 XML 中会有一个 PropertyGroup 部分的列表。看看第一个,如果它说的是 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 不会修改项目文件的这一部分(如果确实如此,我不知道确切的时间),因为您在 UI 中选择构建配置并且它使用相反。但是,由于 Expression Blend(使用版本 4)不允许您选择构建配置,它只会选择最上面的配置。结果是您得到“无效的 XAML”,并且您的所有引用旁边都有刘海 (!)。

在我看来(并且知道我的分析可能存在缺陷)这是 Expression Blend 的一个缺陷。它不仅应该能够使用工作室可以使用的任何构建配置,您还应该能够选择它。

【讨论】:

哇,我已经打开这个页面一天了,并没有意识到 stukselbax 几个小时前已经编辑并找到了相同的解决方案....

以上是关于尝试在 Visual Studio 2010 中创建的 Expression-Blend 4 中打开 WPF 项目时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual Studio 2010中创建Crystal Reports [关闭]

哪些工具可用于在 Visual Studio 2010 中创建帮助文件?

如何在 Visual Studio Express 2010 中创建安装程序 (msi)?

如何在 Visual Studio 2010 Ultimate 中创建 C++ 项目

安装在 Visual Studio 中创建的 Windows 服务

如何在 Visual Studio 2010 C# 中创建具有截止期的报表