我们能够让Blend在他的计算机上编译解决方案。不幸的是,当我们尝试打开任何XAML文件时,我们会收到来自设计师的错误提示,其中通过合并资源字典和附加属性包含的资源未被识别。基本上,即使Blend没有错误地编译解决方案,构建产物似乎也没有被看到。
我们设置中唯一的异常情况是我们的解决方案包含多个构建配置,并且您不能在Blend中更改构建配置。
为什么你觉得Blend的设计师无法加载它构建的文件?
在了解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文件中手动重新排序解决方案配置。