2009-01-31 60 views
2

我用顛覆來部署更新到我的ASP.Net應用程序嘗試,我現在面臨的一個問題是,每當(含籌建)的工作副本更新bin內的「.svn」文件夾被更新,這會導致ASP.Net appdomain回收。我不希望這種情況發生,除非在垃圾箱裏發生了變化。爲asp.net部署使用Subversion - 使應用程序域回收

有沒有辦法告訴ASP.Net忽略bin中的「.svn」文件夾?基本上不看那個文件夾的變化?

如果這個不奏效,我將使用Web文件夾以外的臨時文件夾下載建立到服務器,然後使用腳本補丁/升級實際的Web文件夾。

[編輯:]的SVN導出選項將不會保持版本控制下我的部署,我希望能夠做到在網絡上的文件夾「SVN更新」來部署和回滾的版本。

回答

0

不幸的是,如果你這樣做,那麼你會像你遇到的那樣,重新啓動AppDomain。所以除非你像Espo所說的那樣使用svn export,否則你會看到這個問題。

會是更容易編寫svn的更新本地副本,然後拷貝整個文件2線批處理文件?

+0

這是我最終使用的解決方案。 – Sijin 2009-02-02 04:08:16

5

如果您使用svn export而不是svn checkout從存儲庫中獲取文件,則不會在服務器上獲取.svn文件夾。

[編輯]另一個選擇是從你的版本庫中刪除「bin」(如果你需要修改版本的話,可能會把它提交給另一個版本),然後在你的webroot發生變化時手動複製bin目錄。請記住添加「bin」到你的svn-ignore-list。

+0

謝謝,但svn導出選項不會讓我的部署受版本控制,我希望能夠對web文件夾執行「svn update」來部署和回滾發行版。 – Sijin 2009-01-31 12:07:33

1

您可能想要將「Bin」目錄添加到您的svn:ignore列表中;它不應該提交,因爲它包含已編譯的代碼,而不是源代碼。

無論如何,由於您的最終部署「svn export」可能是一個更好的選擇,正如其他人所指出的那樣。

0

應用程序池回收應該不是什麼大問題。您的問題可能是您的用戶在這種情況下失去了會話?如果是這樣,切換到StateServer或SQLServer會話,而不是使用InProc。

1

您是否想過使用Continuous Integration服務器?

持續集成基本上是指旨在增加提交到存儲庫的頻率的開發實踐。

你越是經常犯的更好的粒度必須在回滾,也不太能提交之間被打破。

下面列出的工具都可以與Subversion一起使用,並且可以與服務器上的MSBuild結合使用,以生成自動構建部署系統&。

MSBuild指令包括在複製到實時目錄時忽略某些文件(即後面的代碼)的選項。另外,有些文件可能需要開發版本和實時版本......在這種情況下,我們應該爲MSBuild編寫一個「變換」腳本,它可以在複製時確保文件對於實時服務器是正確的。 (即網。配置)

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

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

CruiseControl的 - http://cruisecontrol.sourceforge.net/

0

顛覆1.7和最多不會再創造的.svn每個子目錄中的文件,這使得它能夠做什麼你希望沒有.svn文件阻礙。

0

我有點晚了比賽,但我會扔我的2美分:

可以使用svn export傳遞-r REV PARAM。這使您可以將應用程序回滾到指定的修訂版本。

所以,你可以使用:

svn export REPOSITORY DESTINATION --force更新到HEAD(你的應用程序的當前狀態)

svn export REPOSITORY -r REV DESTINATION --force更新到其他版本(也許你應該使用標籤)

不要忘記--force參數,以便它可以替換DESTINATION中的現有文件。