30

我正在尝试使用 Blend 3.0 来编辑包含一些 WPF 控件的项目。该项目已经从 Visual Studio 2008 编译并运行良好。

然而,在 Blend 中,我遇到了一些毫无意义的神秘错误:

例如,我有一个派生自 Control 的类:

namespace Company.WPFControls.SearchTextBox
{
    public class SearchTextBox : Control
    {
        ...
    }
}

我尝试在同一个程序集中的资源中使用它来分配样式:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:Company.WPFControls.SearchTextBox" 

    <Style TargetType="{x:Type local:SearchTextBox}">
        ...
    </Style>
</ResourceDictionary>

我在 Blend 中收到以下错误:

名称空间“clr-namespace:Company.WPFControls.SearchTextBox”中不存在名称“SearchTextBox”。

我尝试通过添加来指定程序集名称,;assembly=Company.WPFControls但它并没有消除错误。

有没有办法解决这个问题,或者至少找出问题出在哪里?

4

5 回答 5

30

我在 Windows Vista 64 上使用 Blend 2 时遇到了同样的问题。

我通常在 VS2008 中编译我的解决方案,在我的所有项目中使用“Debug - x86”目标,以便它与其他一些仅 32 位的项目兼容。

看起来 Blend 喜欢“调试 - 任何 CPU”目标。我基本上更改了我的配置管理器,使其针对任何 CPU 平台而不是 x86。

所以...

  • 在 Blend 和 VS2008 中打开您的解决方案
  • 在 VS2008 中,选择菜单 Build -> Configuration Manager
  • 确保您的解决方案配置具有适用于所有项目的“调试 - 任何 CPU”
  • 在VS2008中编译
  • tadaaaa你的混合项目应该更新并删除这些错误......对我来说很好

我做了相反的事情来验证它是否真的如此,而且似乎是的......我只是将解决方案更改恢复为 Debug - x86,清理所有内容并重建,但我仍然返回错误“不存在 [ ...]”

至于“为什么?”……我不知道,但至少现在可以了!

于 2009-12-10T23:07:08.170 回答
16

问题出在 Blend 程序集搜索路径中。默认情况下,它会在“bin\Debug”文件夹中的程序集中搜索类!但如果您在项目配置目标 x86 中设置,那么您的输出路径将为“bin\x86\Debug”。因此,您需要将 Visual Studio 中的输出路径更改为“bin\Debug”,Blend 会找到您的所有类!

于 2010-11-22T09:57:25.313 回答
13

我认为 Blend 使用项目文件中定义的默认配置/平台。您应该能够通过使用文本文件对其进行编辑来解决此问题。如果您查看 .csproj 文件,您应该会看到如下内容:

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    ...

将 AnyCPU 更改为 x86,它应该按您期望的方式工作。

于 2010-09-17T00:23:31.077 回答
1

您还可以通过将所有项目的输出路径更改为bin\Debug而不是bin\x86\Debug(与发布相同)来解决此“任何 CPU/x86”问题。

于 2011-10-07T09:49:26.400 回答
1

我也有这样的错误。但对我来说,它有助于在不使用 Visual Studio 的情况下直接在 Blend 中重建项目。

对于那些不知道的人:您可以在菜单中的 Blend 中执行此操作,方法是单击“项目”->“重建项目”。至少在 Blend 4 中。

于 2011-12-15T13:55:29.100 回答