在多个项目/盒子/开发人员之间共享项目依赖性/资源的良好策略?

时间:2010-09-20 21:15:20

标签: .net asp.net shared-libraries projects

我在一个拥有3名开发人员的小型开发团队工作,我们都不是真正的'超级精英程序员',但我们对公司来说相当不错。不断反复出现的一件事是我们在多个项目中继续使用相同的资源。其中一个例子就是fckeditor控件,但它总是很难将这个文件夹添加到每个项目中(我已经在我的工具箱中设置了控件,但除非你有文件夹,否则它将无法找到代码)。这也适用于不断重复出现的母版页和控件。

现在我们已经采取了一些措施来改进这一点,包括制作一个“后端”项目,我们将共享功能放在一起,并为图像和脚本制作CDN。但我仍然遇到问题。 例如,所有开发人员必须确保他们已检出并构建了最新版本的后端项目。此外,当您添加对该.dll的引用时,开发人员之间的路径必须相同,否则会破坏引用。

现在我发现你可以添加一个项目引用,这将使我在构建前端项目的任何时候构建后端项目,但是你仍然必须确保你已经签出了最新的版本。但我想知道我还能做些什么?我觉得烦人的事情是确保后端项目与前端项目的相对位置必须相同,并确保他们检查后端的最新版本。

有更好的方法吗? 后端项目也是一个类库,但我如何共享资源,如用户控件?我尝试将一个用户控件放在一个普通项目中,然后添加该项目作为参考,但它不会让你访问文件列表中的控件,就像我以前用来拖动页面一样。

编辑:使用VisualSVN 2.0和Visual Studio 2010

2 个答案:

答案 0 :(得分:1)

AFAIK,用户控件不能在项目之间共享,因为它们包含绑定到特定Web应用程序的HTML / ASPX。为此,存在自定义控件,因为它们可以编译为MSIL,供任何其他.NET项目使用。

与Master Pages相同的问题,但是如果您看到所有Web应用程序都使用“通用逻辑”,那么使用MasterPages,为什么不创建BaseMasterPage自定义控件(从MasterPage扩展 - 无标记),并将其粘贴到您的自定义中控制库如上所述?要记住的是MSIL可以重复使用,HTML / ASPX不能。

Web应用程序前端控件不是为在不同的Web应用程序之间共享而设计的。

尝试并粘贴类库中的常用功能,简单控件,并在开发人员之间共享。使用有意义的命名空间(CompanyName.Common.Controls),这应该有助于避免这些路径冲突。

至于“确保开发人员拥有构建的最新副本”,这是给定的。我不知道在每个人的解决方案中“自动更新引用”的方法。

为什么不设置一个小的Windows托盘图标应用程序,通知何时检查该公共项目?然后开发人员可以抓住程序集。

我们这样做是为了构建通知(签入,构建成功/失败等)。

答案 1 :(得分:0)

警告:从一个不熟悉asp.net和自定义/用户控件的角度来看,因为我正在使用开箱即用的winforms开发.Net控件...另外,来自一个tortise和ankh SVN用户而不是Visual SVN ...以下适用于代码文件;我不确定用户控件的工作方式。

如上所述,我将常用函数和库的代码放在他们自己的源代码控制目录下的单独项目中。

然后,对于每个新项目,我为每个要调用的库项目添加一个svn外部依赖项。使用svn:externals属性(应用于前端项目的trunk目录)将导致在更新前端项目时将库项目检出/更新到其自己的子文件夹。在提交项目时,也可以提交对库所做的更改。

属性中的每一行都允许您加载一个库prokect。线条看起来像:

我使用tortise svn编辑属性(tortise帮助中的细节); ankh SVN然后正确解释。没有使用Visual SVN的经验,您可以从Visual svn编辑属性,或者可以使用svn命令行。