MonoTouch和MonoDroid中的PortableDLL

时间:2012-01-27 09:14:10

标签: .net mvvm xamarin.ios xamarin.android

您可以在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

3 个答案:

答案 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