Mono for Android - 适用于许多客户的One Solution

时间:2013-01-30 20:45:41

标签: visual-studio-2010 xamarin.android

我为三个不同的客户创建了三种不同的解决方案,但这些解决方案适用于具有相同功能,类,方法,分辨率的应用,除了图像,XML资源文件和Web服务引用之外,具体针对每一个。

我想为所有这些应用程序提供一个解决方案,我可以在VS2010 IDE中打开版本,没有错误。因此,当我需要构建或发布特定应用程序时,我只需将客户端设置为我需要的那个,然后继续构建或发布。

重要的是要考虑XML文件名也是相同的,因为类和图像名称也是如此。不同之处在于内容,但名称将始终相同。

我的目的是减少我维护许多解决方案的努力,只需要一个解决方案就可以使用。

在我的公司,我们很快会有超过这三个客户,所以我担心如何保持这一点。最好的方法是只有一个解决方案,当我需要为新客户端生成一个新应用程序时,我只需更改/包含一些内容(如某些资源和图像)并编译到新的客户端文件夹。

有可能吗?如果是这样的话?

2 个答案:

答案 0 :(得分:1)

一种选择是拥有一个具有以下

的主解决方案
  • 包含您的实际应用程序和所有共享代码的“模板”项目
  • 为所有客户提供的项目

在客户的项目中,您可以链接到文件中来自共享项目的文件。然后,在每个项目中,您可以添加仅特定于它们的文件。

使用这种结构,无论何时对模板项目进行更改,所有客户端项目都会更新,因为它们只是指向模板项目的指针。

这种设置的一个很好的参考是Json.Net Code Base。在那里,他有一个适用于所有不同配置的解决方案和项目,但它们都共享相同的文件。

在确保正确命名xml文件方面,您可能只想对主应用程序进行一些检查,以确保它具有所需的所有文件,或者可能在构建过程中添加检查。

答案 1 :(得分:0)

有很多方法可以解决这个问题。

我最喜欢的是运行某种预构建步骤 - 可能在Visual Studio之外 - 在构建之前只需用正确的文件替换文件。这很容易实现自动化并且易于扩展。

如果您打算为超过三个客户构建,那么我认为您应该从Visual Studio构建切换到其他一些自动构建系统 - 例如从命令行或类似TeamCity或CruiseControl的MSBuild。如果您的构建是自动化(并且健壮),您会发现扩展更容易


如果你不喜欢文件的想法,那么你可以尝试其他很多东西:

  • 您可以尝试执行与上面类似的步骤,但可以使用预构建步骤在VS内部执行此操作。
  • 您可以使用.csproj文件中的条件节点通过项目配置切换文件
  • 您可以将特定于客户端的资源转移到另一个程序集中 - 然后在运行时使用GetResourceStream(或类似的)来提取资源。

但这些对我来说都不是很好!