2012-01-27 106 views
2

我使用VS 2010構建的ASP.Net項目。我們使用「生成」菜單中的「發佈」選項將應用程序發佈到本地服務器上的文件夾。未發佈到服務器的ASP.Net DLL

這對我們的服務器之一正常工作 - 文件正確複製,並且一切正常(我們不會在發佈前刪除服務器上的文件,因爲有額外的文件不是來自VS) 。但是,在我們的其他服務器上,發佈似乎不起作用。這些DLL不會被替換,這意味着我們必須手動複製解決方案中的/obj/Debug/Package/PackageTmp目錄的內容(這是VS在發佈所有文件之前將它們複製到的地方)。

服務器和本地計算機上的時間都相同 - 兩者都同步到本地網絡上的同一個NTP服務器,所以這不是問題。

有什麼我們可以做的強制VS覆蓋目標目錄中的所有文件(沒有實際刪除文件)?

回答

2

我經常遇到這個問題,並得出結論,VS的發佈命令是簡單的破壞。有時它起作用,有時不起作用。我甚至提出了一些MS Connect問題。

問題可以追溯到至少VS 2005,也許之前。

通常它歸結爲遠程服務器稍微超前的時間。不過,看起來你已經在研究這一點。我們也看到,即使在兩臺機器上的時間相同時,它也無法發佈已更改的.aspx頁面...

要解決此問題,我們發佈到一個空的臨時目錄,然後發出命令以xcopy文件到真正的目標位置。一旦xcopy完成,我們清除臨時目錄。

+0

是的,我已經採取手動複製文件,至少現在。我打算很快寫一個腳本來爲我做,因爲它似乎不再適用(它曾經偶爾工作)。 – 2012-01-27 15:13:29

+1

我最終爲我們的項目編寫了一個定製構建工具,它調用'msbuild'來在本地發佈文件(這似乎總是有效),然後遞歸地將它們複製到服務器。這似乎每次都有效,我藉此機會通過將SQL更新自動化到同一個工具中來讓事情更好。出於壞事,有時候會有好的事情發生 - 現在我們的整個構建/升級只是一步! – 2012-02-03 20:03:00

+0

@ a_m0d:很高興聽到。 – NotMe 2012-02-03 20:55:57