为什么在使用构建配置时,Expression Blend 4的设计师不起作用?

3
我遇到了Expression Blend 4的奇怪问题。我已经与Visual Studio 2010一起使用Blend 4相当长时间且没有出现任何问题(除了频繁的崩溃)。现在我们的图形设计师想要开始使用Blend进行一些修补工作。
我们能够让Blend在他的计算机上编译解决方案。不幸的是,当我们尝试打开任何XAML文件时,我们会收到来自设计师的错误提示,其中通过合并资源字典和附加属性包含的资源未被识别。基本上,即使Blend没有错误地编译解决方案,构建产物似乎也没有被看到。
我们设置中唯一的异常情况是我们的解决方案包含多个构建配置,并且您不能在Blend中更改构建配置。
为什么你觉得Blend的设计师无法加载它构建的文件?

构建所需的一切都在解决方案中吗?还是他在其他地方安装了额外的组件,比如GAC? - Preet Sangha
除了SL4工具包之外,所有依赖项都是由解决方案构建或本地文件(dll)引用。 - Jacob
2个回答

13

在了解Blend 4如何构建Visual Studio项目/解决方案时,我发现我们的图形设计师的Blend副本无法正常工作,并解决了这个问题。我们设置的多个构建配置是原因。以下是我发现的具体情况以及向任何使用多个构建配置、Blend 4和Visual Studio 2010的用户发出的警告列表。

警告1:Blend不允许您选择构建配置。

在Visual Studio中,构建时您总是使用特定的构建配置。此设置可更改。Blend似乎没有能力在其UI中更改构建配置设置。相反,它使用自己的启发式算法来选择要使用的构建配置。

警告2:当构建时,Blend选择构建配置的逻辑与设计时不同。

这就是导致我们问题的原因。看起来Blend有两种不同的方式来选择构建配置。当您编译时,它使用.csproj文件中的逻辑来选择默认的构建配置(请参见警告3)。然而,在设计时,它会查看解决方案文件,以确定应该使用哪个构建配置的输出目录来解析程序集引用(请参见警告4)。因此,尽管Blend编译得很好,但设计者并未查看已编译的文件,而是查看了它创建的空bin目录。

警告3:Blend和Visual Studio不以相同方式处理默认的构建配置。

在.csproj文件的顶部,有一个属性组,指定在运行csc.exe时未指定构建配置时使用哪个构建配置。Visual Studio似乎不会修改这个数据,可能是因为它不需要它,因为它总是使用定义的构建配置。我们已删除了默认的Debug和Release配置,并制作了自己的DebugWindows、ReleaseWindows、DebugMac和ReleaseMac配置,但项目文件仍然说在未指定配置时使用“Debug”。Blend 4使用没有构建配置的csc.exe,因此使用默认逻辑。因此,我必须手动修复.csproj文件。

警告4:Visual Studio不允许您对解决方案的构建配置进行排序,而此排序与Blend相关。

与Blend编译时选择构建配置的方式相反,Blend设计器似乎使用解决方案文件中的第一个解决方案配置来将项目与构建配置关联起来。然后,设计器会查找配置的输出目录来获取其程序集。换句话说,如果.csproj构建配置默认值与第一个解决方案配置的设置不匹配,则即使已经构建了项目,设计器也无法看到您的类、合并资源字典等。

无论哪个解决方案配置排在第一位,都无法通过Visual Studio进行更改。为了修复设计器查找构建产物的位置,我们必须在.sln文件中手动重新排序解决方案配置。


2
您还可以通过将Debug配置添加回解决方案来快速解决此问题:
创建另一个名为“Debug”的配置,将其置于配置列表的首位。
您可以通过以下两种方式实现:
1)将已经存在的配置重命名为“Debug”
- 打开配置管理器
- 展开“活动解决方案配置”下拉菜单
- 选择并编辑或删除任何现有的配置。
2)添加新的配置。
- 按照上述说明操作,然后
- 您需要手动重新排序解决方案文件中的配置。
希望这可以帮助到您...

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