2012-03-07 54 views
1

我们正在开展一个大型项目。该项目有多个外部站点和多个内部站点都存储在Subversion中。建立这样的项目的建议方式是什么?

外部网站允许一个客户做的,我们提供各种事情的要求,缴纳水电费等。我们决定将这些功能分开,因为大多数工作与其他工作完全不同。因此,这是一个Visual Studio解决方案,其中WebUI和数据库层分为两个项目。例如,公用事业账单有一个Utility.WebUI项目和一个Utility.Domain项目。所有数据库/业务逻辑保存在域项目中。

内部网站弥合后台系统之间(IBM i)和Web数据库的差距。也将取代/增强一些我们的老RPG节目。理论上他们应该使用与外部站点使用的完全相同的数据库逻辑,因为他们访问相同的数据库权利?从不同的解决方案中引用这些项目的最佳方式是什么?我应该只是添加一个对dll的引用,还是应该将该项目从外部应用程序解决方案导入到内部应用程序解决方案中?

这归结于我们有两个开发人员在这个项目上的工作。我自己,我做了大部分后端编码。其他开发人员执行大部分GUI编码。所以我们需要确保这个项目在多个工作站上工作。

这是否有意义?有什么想法吗?

回答

1

使用svn:externals属性引用共享项目到您的项目(S)。

您必须在1)引用包含共享项目源代码(即csproj和cs文件所在位置)的目录或2)引用包含共享项目构建输出(assembly/dll)的目录。

我通常喜欢方法1),因为它使修改共享项目的源代码更容易(你可以进行更改,而不必在Visual Studio的第二个实例打开共享项目的解决方案)。如果您不打算经常更改共享项目,那么方法2)可能会更好。它减少了编译时间并防止了共享项目源代码的意外修改。这两种方法都很好 - 品味。

推荐两种方法,您版本的共享项目。即创建带有版本号的标签并引用标签,而不是主干。当新版本的共享项目出来时,您可以使用新版本号更新其他项目的svn:externals属性,运行“svn update”以下载共享项目的新版本并重新编译。如果你有一个自动为你添加标签的共享项目的构建服务器,这种方法效果特别好。

0

我认为你可以使用一种包含常用项目的“commons”解决方案,然后在你的主要解决方案中使用SVN外部指向SVN中继项目文件夹的主要解决方案。

Commons SVN存储库必须遵循建议的存储库结构(trunk,branches,tags)才能始终保持稳定的commons项目。

在这种情况下,您可以考虑使用依赖关系管理工具,如NPanday或NDepend,您必须声明每个项目所依赖的哪些程序集版本;使用这些工具,您可以拥有一个二进制程序集的本地存储库(如Artifactory或Nexus)来引用,或者选择使用SVN外部函数直接引用源代码。

相关问题