尝试在 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 表单?
编辑:
可能的解决方法。
在比较了Blend
和Studio
创建的空项目(*.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 项目引用了所有必需的程序集:PresentationCore
、PresentationFramework
和 WindowsBase
。
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++ 项目