Visual Studio 2010 Designer无法找到程序集

时间:2011-03-01 17:13:08

标签: visual-studio-2010 silverlight-4.0

我在VS2010设计器中遇到以下错误:

System.Reflection.Adds.UnresolvedAssemblyException 类型Universe无法解析程序集:Microsoft.Expression.Interactions,Version = 4.0.5.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35。

这是一个Silverlight项目,项目引用了缺少的程序集。该项目编译并运行良好。

我用fuslogvw查看了,我找不到该错误信息。

我是否需要将dll复制到Designer可以找到的地方?

3 个答案:

答案 0 :(得分:1)

此程序集是Blend SDK的一部分。你可以从这里免费安装它: Microsoft Expression Blend Software Development Kit (SDK) for .NET 4

答案 1 :(得分:1)

如果您使用的是在Vista或Win7下从网上下载的压缩.dll,则操作系统阻止功能可能会导致此问题。我写了一篇关于如何在解压缩文件之前取消阻止的blog post last week。我知道它解决了我和Ninject一样的问题。

答案 2 :(得分:0)

我也遇到了这个问题,最终以一种不寻常但成功的方式解决了这个问题。

我们正在使用Blend SDK的System.Windows.InteractivityMicrosoft.Expressions.Interactions

一切正常,除非设计人员在使用具有相同异常的继承DataTrigger时崩溃。这不会是混乱,但例外也会破坏整个XAML文档中的IntelliSense,这是不可接受的。

由于这是一个可再发送和报告错误,我决定使用反汇编来解决问题,因为我们需要对交互框架进行扩展。

请参阅:http://connect.microsoft.com/VisualStudio/feedback/details/648819/visual-studio-2010-silverlight-designer-crash

只需获取SharpDevelops版本的ILSpy,然后在其中打开两个程序集。从列表中选择程序集,然后转到文件 - >保存。这将拆解整个项目。将这些集成在空白解决方案中并更改程序集名称。将Expression.Interactions库中的引用重建为新的反汇编版本。

AssemblyInfo.cs你可以做一招。

Microsoft.Expression.Interactions

[assembly: XmlnsPrefix("http://yourdomain.com/interactions", "i")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Core")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Input")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Layout")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Media")]
System.Windows.Interactivity中的

[assembly: XmlnsPrefix("http://yourdomain.com/interactions", "i")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "System.Windows.Interactivity")]

现在在程序集中引用新项目,或者构建程序集并将它们的版本复制到libraries文件夹并直接引用构建的版本。

在XAML中,将新命名空间添加到您的rootelement,如页面/窗口:

<RootElement xmlns:i="http://yourdomain.com/interactions">
    <!-- your xaml code -->
    <i:Interaction.Triggers> ... </i:Interaction.Triggers>
</RootElement>

它就像一个魅力。您可以将交互和表达式功能组合到一个xmlns中,当然,设计器异常消失了,IntelliSense将不再中断。