有一种叫做便携式类库的东西已经出现了一段时间。从 Visual Studio 2012(2012-09-12 发布)开始,它现在是 Visual Studio 的一等公民,因此您可以在 Windows 8、Windows Phone、Silverlight、Windows <8 等之间共享库。
我希望 MonoDevelop 遵循这条路线,以便即使使用 Mono for Android 和 MonoTouch 也可以共享可移植库。
同时,您应该为每个平台创建一个项目,即使链接到相同的源文件也是如此。我发现这是最好的解决方案:
像这样命名的项目文件
MyCompany.MyProduct.MyModule.Ios.csproj
MyCompany.MyProduct.MyModule.Android.csproj
MyCompany.MyProduct.MyModule.WinPhone.csproj
所有项目中的命名空间只有 MyCompany.MyProduct.MyModule。
您将项目中的相同 cs 文件链接到“共享”文件夹。
如果您需要在 Ios 版本中公开一些额外的类,您只需将该文件添加到 Ios 项目(未链接)并将 .Ios 添加到命名空间,因为您希望跨平台命名空间不会被平台特定的东西弄乱。
这是一个不会破坏 Windows 路径长度问题的文件夹结构:
/MyCompany/MyProduct/
在这里放置所有目标平台的解决方案文件,命名如下:
MyCompany.MyProduct.Ios.sln
MyCompany.MyProduct.Wpf.sln
...
每个程序集的文件夹:
/MyCompany/MyProduct/MyModule/
在这里,您为每个平台放置一个“共享”文件夹和一个文件夹,因此:
/MyCompany/MyProduct/MyModule/Shared/
仅跨平台代码(链接到每个项目文件)!!!
/MyCompany/MyProduct/MyModule/Android/
/MyCompany/MyProduct/MyModule/Ios/
/MyCompany/MyProduct/MyModule/WinPhone/
/MyCompany/MyProduct/MyModule/Wpf/
/MyCompany/MyProduct/MyModule/Mac/
...
这是您放置模块的每个平台的项目文件的位置,也是放置在特定平台上实现模块所需的任何平台特定的 cs 文件的位置。
这对我们非常有效。