2

目前我有一个基本的 web 应用程序,我们称之为“Framework.Presentation”。此应用程序包含 Web 应用程序的所有基本项(默认代码和一些默认模板)。对于多个客户,我想使用客户特定的代码和模板来扩展这个基础应用程序。基本应用程序是一个 subversion 存储库,对于每个客户端,我们都需要一个不同的 subversion 存储库。

我想到了以下结构:

ClientProject
  - Framework
    - Framework.Presentation
  - ClientProject.Presentation

“ClientProject”是一个独立的存储库,具有我的框架存储库的外部。在我的 ClientProject.Presentation 项目中,我将链接到 Framework.Presentation 项目。

但是,这不是问题:

在 Framework.Presentation 中,我在 App_Data 文件夹中有一些模板,可以说:

App_Data
  - Templates
    - Default
      - All the files here

在我的 ClientProject.Presentation 中,我可以添加相同的内容,但没有文件夹“默认”。应用程序将首先直接在 中查找App_Data/Templates,然后在 中查找App_Data/Templates/Default

此外,Framework.Presentation 有一个“/Admin”文件夹,用户应该能够在其中执行 Web 应用程序的一些管理工作。

如果我发布 ClientProject.Presentation,所有文件都会到位。但是,如果我想在VS2010中调试应用程序,Framework.Presentation的文件并没有复制到ClientProject.Presentation项目的根文件夹,所以我不能调试所有的功能。应用程序也找不到他的默认模板。

我可以通过什么方式解决这个问题?

4

4 回答 4

0

您可能会创建一个项目Framework.Presentation引用的 DLL ClientProject.Presentation。您需要将框架文件配置为嵌入式资源。我还没有尝试过,所以我不确定它的效果如何。

于 2012-11-16T13:05:47.103 回答
0

好的,一个潜在的解决方案是......

使用您的文件结构,您可以将项目添加ClientProject.Presentation到解决方案中。

添加Framework.Presentation项目。相反,您将每个文件单独添加到您ClientProject.Presentation链接文件中。( Add-> Existing Item,选择文件,单击添加按钮上的向下箭头,然后选择Add As Link)。

这将确保文件仍保存在文件系统中的适当位置,但 IDE 将知道它们在解决方案中的位置。

唯一的缺点是这将相当乏味,具体取决于Framework.Presentation项目的大小。

于 2012-11-16T13:02:05.193 回答
0

您可以按照建议使用 pre-build 事件将文件Framework.Presentation夹中的所有文件复制到ClientProject.Presentation. 但是我怀疑这可能会变得混乱。例如:

  • 你如何处理文件名冲突?
  • 您是否需要排除Framework.Presentation文件ClientProject.Presentation夹中的文件,以免意外将它们提交给颠覆。
  • 您是否还需要自动更新ClientProject.Presentation项目以引用这些文件?如果没有,它们将如何构建和调试?如果是这样,您如何处理项目重新加载?
  • 您将如何处理用于干净构建、构建服务器集成、部署包等的额外文件?
于 2012-11-16T13:13:02.887 回答
0

创建一个包装解决方案。在这你应该有你所有的项目。添加一个后期构建步骤来完成所有的复制等。你不会为你的问题找到一个简单或干净的解决方案。如果您对 MSBuild 不太熟悉,那么您很快就会熟悉。它当然有能力做你想做的一切,只是很乏味。

于 2012-11-19T06:39:42.010 回答