我正在尝试使用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中收到以下错误:
名称“SearchTextBox”没有 存在于命名空间中 “CLR-名称空间:Company.WPFControls.SearchTextBox”。
我已尝试通过添加;assembly=Company.WPFControls
来指定程序集名称,但它不会删除错误。
有没有办法解决这个问题,或者至少找出问题的来源?
答案 0 :(得分:30)
我在Windows Vista 64上遇到与Blend 2相同的问题。
我通常在VS2008中编译我的解决方案,在我的所有项目中都有一个“Debug-x86”目标,因此它与其他一些32位项目兼容。
看起来Blend喜欢“Debug - Any CPU”目标。 我基本上改变了我的配置管理器,以便它针对任何CPU平台而不是x86。
因此...
我做了相反的事情以验证它是否真的那样,而且似乎是......我只是将解决方案更改回Debug - x86,清理了所有内容,然后重新编译,我仍然回复了错误“是吗?不存在[...]“
至于“为什么?”......我不知道,但至少它现在有用了!
答案 1 :(得分:16)
问题出在Blend程序集搜索路径中。默认情况下,它会在文件夹“bin \ Debug”中的程序集中搜索类!但是如果你在项目配置目标x86中设置,那么你的输出路径将是“bin \ x86 \ Debug”。因此,您需要将visual studio中的输出路径更改为“bin \ Debug”,Blend将找到您的所有类!
答案 2 :(得分:13)
我认为Blend使用项目文件中定义的默认配置/平台。您应该可以通过使用文本文件进行编辑来解决此问题。如果您查看.csproj文件,您应该看到如下内容:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
...
将AnyCPU更改为x86,它应该按照您期望的方式工作。
答案 3 :(得分:1)
您还可以通过将所有项目的输出路径更改为bin\Debug
而不是bin\x86\Debug
(发布版本相同)来修复此“任何CPU / x86”问题。
答案 4 :(得分:1)
我也有这样的错误。但对我来说,它有助于直接在Blend中重建项目,而无需使用Visual Studio。
对于那些不知道的人:您可以通过单击“项目” - >在菜单中的混合菜单中执行此操作“重建项目”。 至少在Blend 4中。