解决VS 2010中编译程序时弹出"Type universe cannot resolve assembly"的错误

  在使用VS 2010编译程序时有时候会遇到"Type universe cannot resolve assembly"的错误,从而导致程序编译出错,如下图。

untitled

  如果你对这个错误信息感觉到很迷惑,说明你不太理解什么是"Type universe"。Type universe其实是deployment framework中所有类型和程序集的集合,换句话说,这个错误信息其实是告诉你System.Design.dll在目标framework中不存在。

  为什么会这样呢?

  Microsoft Visual Studio的开发团队决定在VS 2010中将应用程序默认的目标framework设置成了.NET Framework 4 Client Profile,这样做主要是为了在客户端对应用程序的部署进行优化,如减小程序部署时package的大小,部署的时间,提高应用程序的可靠性以及性能等等。

  不幸的是许多用户和开发人员没有意识到这一点。例如我曾经在应用程序中使用一个开源的UI框架名字叫DockPanel,编译程序的时候就遇到过这种问题。要想真正解决这个问题其实是需要去修改这个框架的源代码然后重新生成程序集并重新在应用程序中引用,但是这很难做到。

  按照错误的提示信息,该错误主要是因为我们将第三方控件从VS 2010的工具箱拖放到窗体上,控件在设计时所需要的类依赖于System.Design.dll程序集,而该程序集并没有包含在Client Profile的.NET Framework框架中而产生的。我们可以在控件的源代码中添加设计时所需要的类,但是这样做显然不够好。在VS 2010中一个变通的方法是将Target framework修改成非Client Profile的Framework,然后重新编译应用程序。

untitled1

你可能感兴趣的:(assembly)