我正在做一个项目(纯粹的爱好,"锐化我的技能"),它有一个统一的后端和多个前端(ASP.NET MVC 1.0/JQuery和Silverlight 2).当我尝试在Silverlight 2项目(VS2008)中添加对业务层程序集的引用时; 它被拒绝,因为它不是Silverlight程序集.
他们是否可以在Silverlight应用程序中包含和引用非Silverlight程序集?
不,那里没有.Silverlight运行在完全不同的CLR上,这与正常(桌面)CLR不兼容.它在BCL中有一组底层不同的API,最重要的是不同的元数据版本号.除其他因素外,这两个因素会阻止为桌面CLR编译的程序集在Silverlight CLR上默认运行.
必须专门为silverlight编译所有程序集.
实际上,尽管很难并且可能不是一个好主意,但可以在Silverlight项目中引用CLR程序集.David Betz在他的博客上有一个例子:http: //www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight
同样值得强调的是,你可能并不真的想要这样做.Silverlight框架由经验丰富的工程师开发,他们对应该包含哪些内容以及哪些不应该包含哪些内容进行了大量思考.考虑一下您认为需要的CLR对象,并尝试理解它们目前不可用的原因,以及替代方案.
最后,请记住,您添加的任何CLR对象都会增加下载的大小.