如何在平台(MonoTouch/-Droid/WP7)之间分解c#项目(csproj)的定义

本文关键字:分解 定义 之间 项目 csproj WP7 平台 MonoTouch -Droid | 更新日期: 2023-09-27 18:10:55

我计划开发一个具有移动部分(MonoTouch/MonoDroid/WP7),桌面部分(WPF)和web部分(ASP/Silverlight)的分布式应用程序…

当然,很多代码可以在多个平台上共享。到目前为止,为了在一个平台上创建一个项目,我采用了搭便车的方式,我有WPF的csproj,让我们创建一个Silverlight的,并把cs文件放在里面。然后对MonoTouch做同样的操作。然后是MonoDroid。然后是WP7。是否有可能以某种方式分解csproj的内容?如何优化项目创建?

我不会讨论每个平台需要一个项目的事实。我梦想的是在一个文件中描述哪个文件适用于哪个平台。然后该文件包含在每个csproj…

干杯,Patrick

如何在平台(MonoTouch/-Droid/WP7)之间分解c#项目(csproj)的定义

这是一个伟大的扩展,将帮助您http://msdn.microsoft.com/en-us/library/ff921108%28v=pandp.20%29.aspx

我用它来共享MonoDroid, MonoTouch和WP7项目之间的代码

将公共代码放入一个类库项目中,然后从每个其他类库项目中引用,这难道不是有意义的吗?

如果你想在几个设备之间共享代码,我建议你看看MVC模式,使用像MonoCross这样的东西。

正如ChrisDB建议的那样,尝试在一个级别的项目上共享,而不是在文件级别上。在项目级别上进行共享会容易得多,因为:

  • 许多工具(例如MonoTouch与MonoDevelop/XCode集成)将使用几个文件的UI(其中很多是自动生成的),你不想失去每个平台的IDE帮助;
  • 您的IDE (VS.NET或MonoDevelop)将能够为每个项目保留不同的选项(例如定义或自定义项目选项,例如MonoTouch);

你可能还想检查我应该注意什么约束来最大化Mono代码的可移植性?问题/答案,因为它与您当前的请求有点相似,但不完全相同。