让我们假设我已经有一个构建.NET 3.5程序集的项目。现在我想为Silverlight构建这个程序集,而且,只需要进一步努力就可以维护它的Silverlight版本。
什么是不可接受的:
什么是可以接受的:
基本上,我想维护一个项目,但目标是两个框架。我不想维护两个单独的项目,因为这可能会导致错误,例如忘记包含新文件。如果有很多项目和大团队,那么排除这些错误非常重要。
如果这完全不可能,任何提供类似好处的解决方案都是可以接受的。
答案 0 :(得分:8)
您是否还排除了从Silverlight项目链接到项目内的文件?这是在Silverlight和完整CLR之间共享实现的一种相当常见的方法。 Sharing Code Between .NET and Silverlight Platforms
此外,根据Justin Angel的说法,您可以从完整的CLR中引用和使用Silverlight类库。我自己没有尝试过这个问题,但是它仍然没有回答一些问题,但它确实使情景变得简单明了:http://silverlight.net/blogs/justinangel/archive/2008/12/29/using-silverlight-dlls-on-the-desktop.aspx
答案 1 :(得分:1)
我同意斯科特的观点。为自己省去很多痛苦。两个共享相同代码库的项目是要走的路。您需要它在两个环境中使用VStudio,使用不同的库,包含/删除文件,以便轻松完成这么多事情!
有两个项目远超重的原因是为了拥有一个。
答案 2 :(得分:1)
MSDN包含有关平台多重定位的详细信息: Multi-targeting on MSDN
答案 3 :(得分:0)
您必须拥有两个项目,因为两个平台的mscorlib引用不同。
查看此问题:http://www.google.ca/search?hl=en&q=targetting+silverlight+and+wpf&meta=&aq=f&oq=
如果您只想拥有一个在两者之间共享的常规旧.NET库,那么我建议创建两个项目(一个用于Silverlight,一个用于常规),并在两个项目中包含相同的文件。对于其他开发人员来说,这更容易理解。
答案 4 :(得分:0)
我认为你需要做的就是把它排除在外。您的Silverlight代码应仅用于UI以及与后端WCF服务的通信。这些服务将运行您的.NET 3.5代码(您要共享的代码)。这样你就可以分享和n层了。
如果您在Silverlight代码中对客户端进行大量计算,然后将其提交给服务器(可能还有数据库),那么我认为您正在打开一个安全漏洞。
您没有给出令人信服的理由,说明为什么单独的项目需要访问Silverlight项目中的代码。