您可以在Full.NET,WindowsPhone,Silverlight,MonoTouch,MonoDroid之间共享.NET DLL(使用Visual Studio编写的VB.NET)。 (在未来也是WinRT)
这可能吗?
我不打算分享UI代码,主要是模型,但也可能是一些ViewModel(即使用MVVM)
我想知道使用Portable DLL是否有效? 见http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981/
更多细节: 这不是我今天所需要的。 我正在寻找重新构建用VB.NET for .NET 4编写的现有项目。这将在未来一年左右。想了解Mono *设备是否能够播放......
谢谢, 迈克G
答案 0 :(得分:3)
使用常规.NET程序集:yes和no的组合。广义上,是的。但实际上,由于每个平台的限制,通常需要特定于平台的更改,这将阻止它运行程序集。 IDE也不喜欢某些引用组合。 monodevelop IDE在它接受的组件方面更加宽容。
重新做不起作用的事情;它可能是愚蠢的事情,比如Trace.WriteLine(...)
是否存在,或者(最近是“统一”,Interlocked
),或者它可以是平台限制(你不能在iOS上做那么多的元编程,例如)。
WinRT为破坏事物设置了一个新的“障碍”,整个过程发生了根本性的变化(Type
等基本因素已经发生了巨大变化)。
我的建议:按平台构建;否则你将自己局限于最小公分母,这不是可选的。利用每个平台上存在的内容,以及何时不回退。
答案 1 :(得分:2)
您可以跨不同平台的项目共享源代码。您只需创建一次文件并链接到针对不同平台的其他项目。请参阅this。
您无法共享DLL。例如,由于选定的目标平台,您无法在Silverlight项目中引用.NET“桌面”程序集。
答案 2 :(得分:1)
是的,你可以! (tm)
但是有一些限制:你已经提到了UI相关的东西,但是你必须投射更广泛的网:你的DLL可能不会使用而它可能不会引用任何东西,在其中一个平台上无法访问。
通过一点时间扭曲,您甚至可以包含.NET CF