在Silverlight和"普通香草".Net之间共享集合

Mat*_*mbs 6 .net silverlight wcf

我正在使用一些泛型类作为数据容器,并使用它们来传递数据到wcf服务和从wcf服务传递数据.由于WCF将客户端的通用名称变为名为"ListOfBlah231546797646"的类,我将实际程序集的引用添加为"KnownType".

Silverlight需要使用这些服务,但只能引用"silverlight程序集".我已经将类移动到他们自己的"silverlight程序集"并且可以从silverlight引用它们,但是当服务运行时,我在System.Runtime.Serialization程序集上得到"找不到引用的程序集"错误.

事实证明,Silverlight拥有自己的二进制文件集,所有二进制文件都标记为版本2.0.5.0.这些不在服务的GAC中,因此抛出异常.

因此,我不能从我的服务代码中引用我的"Silverlight程序集".有什么方法可以解决这个问题,使两种口味在序列化时交叉兼容吗?

这个问题很相似,但没有一个答案有帮助.有任何想法吗? 类似的问题

Mic*_*lGG 3

我在 Silverlight 和普通 CLR 之间共享代码的方式是对 C# 项目使用“添加为链接”功能。所以它最终看起来像这样:

| SilverlightLib
|   File1.cs
|   File2.cs
| ClrLib
|   File1.cs <as link>
|   File2.cs <as link>
Run Code Online (Sandbox Code Playgroud)

然后VS就可以正常工作了,两组代码都被编译了。令人烦恼的部分是 Silverlight 框架不一致的地方。(WCF 的某些部分在 SL 中不存在。)在这种情况下,您需要使用预处理器“#if SILVERLIGHT”以使代码面向两个平台。

到目前为止,这种方法效果很好。这样,我可以编写代码,使用 VSTS 进行测试,但仍然可以在同一来源的 SL 上运行。一些提示:

  • 始终从 SL 项目进行编辑 - 这样编辑器将限制为 SL,以后您就不会感到惊讶。
  • 有时您必须关闭打开的文件,Intellisense 才能在其他项目中更新。