混合“在WPF项目中不支持Window”

17

我在使用Blend时遇到了问题,报错“Window is not supported in a Windows Presentation Foundation (WPF) project.”,因为我的配置无法构建,但我不知道该如何解决。

我猜测问题可能出在我尝试在一个解决方案中添加x86和x64的配置,但无法告诉Blend 2当前的活动方案配置和平台。

我认为这是配置系统或者我设置的方式的一些缺陷,我有Debug64和Debug两个解决方案配置,各自与平台x86和x64相对应。

我认为这只是一个简单的排序问题——x64排在x86之前,Debug64排在Debug之前,因此Blend得到了一个无法构建的 Debug with x64 配置。

当我在VS中选择Debug和x64组合时,其XAML编辑器也无法加载。

我的解决方案比较复杂——有一个纯Win32 DLL、一个C++/CLI Model项目和两个WPF程序集,都被主要的WPF项目所使用。

更新 我已经从我的解决方案中移除了所有x64的配置,并重新构建了所有内容,但没有效果。

然后我卸载了Blend 2,并安装了Blend 3——它仍然无法解决这个问题。

Visual Studio XAML编辑器仍然非常好用,程序也可以编译和运行。

(听到来自澳大利亚的沮丧呻吟声)

4个回答

18

在配置管理器中,Blend 要求解决方案还必须具有 AnyCPU 平台。
任何 C++(包括 C++/CLI)项目都不会被加载。

我的解决方案中有 AnyCPU、x86 和 x64 平台,但 AnyCPU 无法构建非 C# 项目。

将 Windows/Controls 放在 AnyCPU 的 C# DLL 中,以便可以在 Blend 中进行编辑。
(不要从其中引用 x86/x64 项目。)

将 exe 设置为仅限 x86 和 x64(没有 AnyCPU)- 将无法在 Blend 中运行(没有 AnyCPU), 但解决方案仍然能够构建。


太好了,问题解决了!我添加了一个 AnyCPU 配置和平台,并构建了所有的 C# 代码,让它引用 Win32 C++/CLI 项目,现在可以在 Blend 中进行编辑了。 - Andy Dent
谢谢你的回答,但无法“接受”它,因为接受勾选框的轮廓线消失了,我猜这是因为悬赏的缘故,这是我第一次在问题上设置悬赏。 - Andy Dent
试着在 Meta 上问如何使用赏金系统。(我自己从来没有用过它。) - Danny Varod
我在 Meta 上询问了这个问题,但似乎看到你的回答已经太晚了,而且没有两个赞,所以它没有被自动接受。我不确定最近一天通知和时区是否存在问题。 - Andy Dent
哇,Stack Overflow基础设施肯定发生了什么事情,因为我突然获得了这个问题的“推广者”徽章,并且能够接受它 - 也许第三个赞成票是关键。 - Andy Dent
@DannyVarod 您的产品管理提案正在引起关注。由于我们是商业和产品开发社区,请关注、使用和分享专门的BI网站倡议。 当时还没有BI网站提案时,我首先在Meta上提出了这个问题。 - bonCodigo

11

还有一些其他原因可能导致出现这种情况:

1)缺少引用。请添加对PresentationCore、PresentationFramework和WindowsBase的引用。

它也可能正在寻找错误平台的.dll文件。我刚刚通过进行以下更改来解决我的问题:

在相关的.csproj文件中,更改此行:

<Platform Condition=" '$(Platform)' == '' ">x86</Platform>

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

2
Matt,你知道你的更改会带来什么后果吗?如果你链接了任何x86 DLL文件,你的应用程序将无法在x64机器上运行。 - Andy Dent
这正是为什么它失败的原因。 方便的是,我有奢侈的建立所有我的依赖项在AnyCPU。 - MattS423
请查看我以下的答案,了解如何成功地在x86和x64上工作:https://dev59.com/E2w15IYBdhLWcg3wtd8g#6446638 - Danny Varod
平台转换不是必需的。 - Trevy Burgess

3
我在使用VS2010和Blend4时遇到了问题。突然间我的项目在Blend中无法渲染。
问题在于我们团队的一位开发人员设置了自定义构建配置。他这样做的结果是删除了Debug。一旦我将Debug重新添加到构建配置中,Blend就又能正常工作了。

1

在我的情况下,我是这样解决问题的:

  • 使用 AnyCPU 技巧(但不够...)
  • 卸载项目,编辑项目文件,查看 4.0 框架引用并将其更改为 4.5(目标和最低要求版本)。

重新构建解决方案,然后 WPF 4.5 的 Blend 预览停止显示错误消息(窗口不受支持...)。

感谢大家让我找到了解决方法!


谢谢你的技巧!在<RequiredTargetFramework>4.5</RequiredTargetFramework>中更改版本就可以了! :-) - Elo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接