我是Silverlight的新手。我们正在将项目迁移到Silverlight。我们只是在改变表示层。 (ASP.NET WebForms站点到Silverlight Web应用程序)。所以我们的其他类库有业务和数据访问层将保持不变。
首先,我在我的解决方案中添加了一个Silverlight Web应用程序。它创建了2个项目:PM_Tool
和Pm_Tool.Web
。现在我需要向此添加业务和数据访问层的项目引用,因为我需要在MainPage.xaml.cs
中访问它们。
但我无法添加对Pm_Tool
的引用 - 我收到以下消息:
您只能在解决方案中向项目引用添加其他Silverlight项目。
然后我添加了对Pm_Tool.Web
的项目引用,但我无法访问MainPage
中的业务层对象。
任何人都可以帮助我进一步推进吗?
答案 0 :(得分:0)
您只能向其他silverlight程序集添加referances。您不能将“referances”添加到“普通”窗口程序集--asp.net或WPF或winforms(等)中,但是,您可以向其他项目添加silveright程序集的附件。
您将需要制作要添加的程序集的Silverlight版本。主要原因是安全模型。
现在,您可能遇到的问题是,因为Silverlight实际上是WPF的一个子集,所以您想要使用的许多类都不可用。但是,有很多方法可以解决这个问题 - 使用webservices等。
答案 1 :(得分:0)
Silverlight应用程序只能引用其他Silverlight项目。这只是因为Silverlight使用了较轻版本的.NET框架;如果你可以引用'完整的'.NET项目,那么它将需要支持整个框架。微软已做出设计决定来限制功能 - 可能是为了减少安装和安装。 Silverlight的运行时足迹。
话虽如此,很可能大多数代码仍会在Silverlight中运行。您应该创建“Silverlight类库”项目并将您的类包含到这些项目中。您很快就会看到哪些(如果有)类正在使用Silverlight不支持的框架部分。从那里开始实施变通办法。
当然所有您的数据访问和服务器端代码必须保留在您的“Web”项目中。 Silverlight实现了正确的客户端 - 服务器模型,并且不允许您以与ASP.NET WebForms相同的方式“跨越边界”。您的Silverlight应用程序仅在浏览器中运行 - 任何需要在服务器上发生的事情都必须在“Web”项目中进行。您的Silverlight应用程序通过WCF(或WebClient
等)发布并从“Web”项目获取信息。
除非你有一个设计精良的ASP.NET解决方案,否则我希望你的转换不会像“只是改变我们的表示层”那么简单。