【发布时间】:2011-12-06 20:23:38
【问题描述】:
我们的产品是一个 ASP.Net Web 应用程序。目前,我们在 Visual Studio 中使用网站项目,但很长一段时间以来一直在研究使用 Web 应用程序项目。我目前正在研究它们,希望我们可以改进我们的部署过程。
我们有一个在不同客户之间共享和通用的基础网站,然后我们在客户网站项目中使用客户特定的功能对其进行扩展。客户项目扩展了基础,因此依赖于其内容。为了构建完整的产品,我们首先部署基础网站,然后将其与来自客户端项目的内容叠加。
在考虑在 Visual Studio 中转换为 Web 应用程序项目时,我们希望能够创建基础项目,然后创建客户端项目并设置对基础的引用。这种结构似乎工作正常,但是当我们尝试使用 MSDeploy 从客户端项目部署应用程序时,只会发布来自基本网站的 dll。这对于某些事情来说很好,引用已编译的代码很有用,但还有其他项目,如图像、js 页面、htm 等,它们仍然是客户端应用程序运行所需的源。我们需要的不仅仅是来自我们基础网站的编译代码。
说了这么多,我可以在这里想到几个选项:
- 分两步继续部署。首先是基础网站,然后是构建完整产品的客户端网站。
- 修改部署过程,从基础项目中复制所需的源文件
- 重新构建我们的模型,以不同的方式支持这种基础-客户关系。不太确定这将如何工作,并且将是最不可行的选择。
- ??
我是否缺少其他选项?我设置项目的方式有问题吗?除了共享编译代码之外,让一个 Web 应用程序引用另一个 Web 应用程序还有更多的方法吗?如果是这样,你为什么不直接使用共享类库呢?或者我在 MS Deploy 过程中遗漏了什么?
我对这里的建议持开放态度,因为我觉得我错过了一些东西。我不认为我们的网络应用模型太独特了。
更新:双重部署过程确实有效,但感觉有点笨拙。还有其他输入吗?
【问题讨论】:
-
顺便说一句,是的,你的模型不寻常。但无论如何都要远离网站“项目”。它们是独一无二的,而且不是很好。
-
是的,我们早就知道网站项目是……嗯,在很多方面都是“特殊的”。有时很难修复没有损坏的东西。是什么让我们的结构如此独特?另一个可能的选择是让每个项目都包含应用程序的完整源代码并设置某种源分支。不过,我们以前也这样做过,但要维护更改变得非常困难。
-
我以前没有想过在这种情况下使用分支,但仅供参考,TFS 2010 中的分支比过去更容易使用。值得一看。我还建议您仔细地将应用程序的特定于客户端的部分与公共部分分开和隔离。在应用程序中创建特定的可扩展性和自定义点。这将使您更容易了解如何最好地部署它。您还可以使用 MSDEPLOY 玩一些有趣的技巧。见amazon.com/Inside-Microsoft-Build-Engine-Foundation/dp/…
-
让我们的产品与众不同的部分原因是客户可以拥有独一无二的页面,并且根本不包含在我们的基础网站中。因此,除了扩展现有应用程序之外,它实际上是对它的补充。这就是我对您关于我们拥有独特内容的可扩展点的建议感到困惑的地方。
-
你读过aspnet_merge.exe msdn.microsoft.com/en-us/library/aa479044.aspx
标签: asp.net web-applications deployment msdeploy web-application-project