2

我刚刚安装了 Blend 4,并试图将它与一个相当大的 VS2010 项目一起使用,该项目包括几个 C++/CLI 程序集和一些本机代码。对于很多控件,我在尝试打开设计视图时收到一个混合错误,例如“名称 XXX 不存在于命名空间 'clr-namespace:YYY'”。

我在网上(包括这个论坛)搜索了类似的错误,并确保我遵循了所有可用的建议,例如确保我有一个 AnyCPU 配置,我不使用例如“x64\Debug”作为输出文件夹,并且我的 XAML 中有正确的命名空间声明(在我的 clr-命名空间声明中使用“程序集”)。

我还制作了一个简单的新项目,它只访问有问题的程序集之一,但我仍然收到错误消息。

在我看来,这个问题与引用任何包含一些非托管代码的 C++/CLI 程序集的程序集有关。对于引用仅托管代码程序集的程序集,我似乎没有收到错误。

什么可能导致错误?

问候,

莱夫


这里几乎没有回应,所以也许我应该重写一下我的问题:

有没有人成功地将 Expression Blend 用于使用非托管代码的程序集的项目?

问候,莱夫

4

1 回答 1

1

有一个类似的问题:项目在 VB 2010 中正确编译,没有错误,但在 Expression Blend 4 中打开它时出错(顺便说一句,漂亮的工具):

名称 XXX 不存在于命名空间“clr-namespace:YYY”中。

在线:

<CollectionViewSource x:Key="YYYViewSource" d:DesignSource="{d:DesignInstance {x:Type my:YYY}, CreateList=True}" />

在我的情况下,它是我的 edmx 中的一个实体,一个名为“YYY”的 FunctionImport,其 ComplexType 为“YYY_Result”,而我在 CollectionViewSource 中的 XAML 代码引用了该实体“YYY”。

此 XAML 代码在 VB 2010 中生成没有错误,编译并运行得非常好(在 Blend 中也正确编译),但在 Blend 中没有设计视图。

解决方案:我在 CollectionViewSource 中的 x:Type 处意识到我的错误,并将名称从“YYY”更正为“YYY_Result”并且它起作用了:

<CollectionViewSource x:Key="YYYViewSource" d:DesignSource="{d:DesignInstance {x:Type my:YYY_Result}, CreateList=True}" />

结论:也许这个答案与您关于带有一些非托管本机代码的 C++/CLI 程序集的问题并不完全相关,也许是的。

此案例只是在 VB 2010 中正确编译项目的一个很好的示例,但在创建设计视图时,在 Blend 4 中生成了上述错误消息的相同 XAML(许多用户在此论坛上报告了类似问题)。

于 2012-01-24T18:07:25.357 回答