我正在开发一个既有WinForms又有Silverlight客户端的.NET应用程序。虽然大多数代码都在服务器中,但我也需要在客户端中拥有相当多的逻辑,并且我希望保持客户端库代码相同。
到目前为止,我需要知道两种不同的项目类型,一个类库和一个Silverlight类库,并将文件从一个项目链接到另一个项目。这似乎有点蹩脚,但它适用于简单的代码。
我的问题是, SVCUtil.exe 生成的访问WCF服务的代码与 slsvcutil.exe 生成的代码不同, Silverlight代码实际上与.NET不兼容:当我尝试将类导入.NET时,我遇到了System.ServiceModel.Channel类的一些问题。
以前有人做过类似的事吗?我做错了什么?
答案 0 :(得分:2)
不幸的是,从Silverlight 3和.NET 3.5sp1开始,没有二进制兼容性。您必须共享文件,并维护两个单独的库。
但是,Silverlight 4和.NET 4将提供某种程度的二进制兼容性。根据您在客户端使用的程序集,您可以在Silverlight和Windows窗体中使用相同的组件。答案 1 :(得分:2)
我知道提供解决方案为时已晚,但这也是我的问题,我发现Portable Class Libraries。这是您问题的完美解决方案。
答案 2 :(得分:0)
不要尝试在不同的客户端之间共享单个代理客户端 - 为每个客户端生成代理。
您可以使用所描述的 add as link 方法在项目之间重用数据类。如果在代理中创建了新版本的类,则只需编辑生成的代理代码文件并删除类定义。当你编译它时,每个客户端(Windows应用程序和silverlight)将拥有自己的编译类库版本,但它们都来自相同的源代码。