代码之家  ›  专栏  ›  技术社区  ›  Sijin

使用subversion进行asp.net部署-导致appdomain回收

  •  2
  • Sijin  · 技术社区  · 17 年前

    我正在尝试使用subversion将更新部署到我的ASP。Net应用程序,我面临的一个问题是,每当更新工作副本(包含构建)时,bin中的“.svn”文件夹都会更新,这会导致ASP。要回收的Net应用程序域。除非垃圾桶里的东西真的发生了变化,否则我不想发生这种情况。

    有没有办法告诉ASP。Net忽略bin中的“.svn”文件夹?基本上不关注该文件夹的更改?

    如果这不起作用,我将使用web文件夹外的暂存文件夹将构建下载到服务器上,然后使用脚本修补/更新实际的web文件夹。

    [编辑:]svn导出选项不会将我的部署置于版本控制之下,我希望能够在web文件夹上执行“svn更新”以部署和回滚版本。

    7 回复  |  直到 17 年前
        1
  •  5
  •   Espo    17 年前

    如果你使用 svn export 而不是 svn checkout 要从存储库中获取文件,您将无法在服务器上获取.svn文件夹。

    [编辑]另一种选择是从您的存储库中删除“bin”(如果您需要修订,可能会将其提交到另一个存储库),然后在bin目录更改时手动将其复制到您的webroot。记得在svn忽略列表中添加“bin”。

        2
  •  1
  •   MarkR    17 年前

        3
  •  1
  •   Hades    14 年前

    您是否考虑过使用持续集成服务器?

    持续集成基本上是指一种旨在增加向存储库提交频率的开发实践。

    提交的频率越高,回滚的粒度就越好,提交之间的中断也就越少。

    MSBuild指令包括在复制到活动目录时忽略某些文件(即代码隐藏)的选项。此外,有些文件可能需要开发版本和实时版本。..在这种情况下,我们应该为MSBuild编写一个“转换”脚本,该脚本只是确保在实时复制时文件对实时服务器是正确的。(即web.config)

    哈德逊- http://java.net/projects/hudson/

    德拉科- http://draconet.sourceforge.net/

    巡航控制- http://cruisecontrol.sourceforge.net/

        4
  •  0
  •   Ray Booysen    17 年前

    不幸的是,如果你这样做,那么正如你所经历的那样,你将重新启动AppDomain。因此,除非你按照Espo所说的那样使用svn导出,否则你会看到这个问题。

    编写一个2行批处理文件,让svn更新本地副本,然后复制文件,这样会更容易吗?

        5
  •  0
  •   D'Arcy Rittich    17 年前

    应用程序池回收应该没什么大不了的。你的问题是,当这种情况发生时,你的用户可能会失去他们的会话吗?如果是这样,请切换到StateServer或SQLServer会话,而不是使用InProc。

        6
  •  0
  •   David d C e Freitas    14 年前

        7
  •  0
  •   Luiz Damim    14 年前

    我比赛有点晚了,但我会全力以赴:

    您可以使用 svn export 通过a -r REV 参数。这使您能够将应用程序回滚到指定的版本。

    因此,您可以使用:

    svn export REPOSITORY DESTINATION --force 更新到HEAD(应用程序的当前状态)

    svn export REPOSITORY -r REV DESTINATION --force 更新到其他版本(也许你应该使用标签)

    别忘了 --force param,以便它可以替换DESTINATION中的现有文件。

    推荐文章