2015-07-01 105 views
2

我通過VS 2013中的Web發佈將我的MVC站點部署到Azure位置。我用同一臺機器和IP地址發佈了多次,沒有問題,但是昨天它停止了工作。Azure Web部署發佈舊版本的MVC站點.dll

發佈將我的項目.dll的舊版本放在站點上的bin文件夾中。該版本不再存在於我的機器上,它不是項目當前的Git狀態(並且從未成爲當前的Git狀態),也不是我的Release,Debug或Demo編譯文件夾中的版本。我不知道它來自哪裏。

所以當我發佈時,我得到了與數據庫更改有關的錯誤,因爲自舊版本以來,我的上下文背後的模型發生了變化。

因此,當我發佈時,我必須將FTP放入我的站點,並將WebPortal.dll文件替換爲我的計算機bin文件夾中的文件,並且該站點工作正常。

什麼可能導致它恢復到這個舊的.dll,它來自哪裏?我有沒有排除過去發佈過程中的某個點的變化?

注意 - 我的意見是絕對正確的發佈,它只是應包含模型,控制器等當前編譯的.dll,而是包含一箇舊版本缺少負載的東西。

JK

回答

1

有可能是一個老版本沒有被覆蓋在發佈服務器上的dll。您是否嘗試檢查「發佈」對話框的「設置」部分中的「在目的地刪除其他文件」。這應該刪除您發佈的目標位置以外的所有文件。

如果在嘗試發佈到本地文件系統後仍然遇到問題,那麼您可以準確查看發佈到您的服務器的發佈。

enter image description here

更新:

步驟來發布Web應用程序的文件系統。

  1. 右鍵單擊解決方案資源管理器菜單中的項目,然後選擇發佈。
  2. 在Publish Web菜單的配置文件部分選擇Custom publish type,點擊next。
  3. 在發佈方法下拉列表中選擇文件系統。您應該看到目標位置文本框,您可以在其中指定文件夾。
  4. 繼續使用常規設置完成其餘的發佈步驟,然後單擊發布。
+0

嗨。我已經試過,是的。我也嘗試了一個FTP發佈與檢查框刪除服務器上的所有文件。在用新的.dll手動覆蓋舊的.dll之後,任何舊的.dll都應該去掉了嗎?舊的.dll來自我的電腦某處......我如何發佈到本地文件系統? – JonnyKnottsvill

+0

@JonnyKnottsvill我已經添加了發佈到文件系統到我的回答的步驟 – Padhraic

+0

謝謝。發佈到本地文件夾的結果相同。和舊版本的WebPortal.dll。它必須是在發佈期間編譯項目時的一些東西,因爲在我的計算機上任何地方都不存在這種大小的WebPortal.dll,而且當我正常構建它時,它會正確構建新的.dll。 – JonnyKnottsvill

0

仔細檢查您的Build(菜單)>配置管理器>版本配置的構建配置WebPortal.DLL生成旁邊的勾號。如果它沒有設置爲構建,那麼它會使用較舊的版本。

+0

是的,打勾是爲了建立門戶網站。 – JonnyKnottsvill

+0

你的代碼庫有不同的分支嗎? – McGaz

+0

不,只有一個分支 – JonnyKnottsvill

0

我有同樣的問題。善良知道老dll來自哪裏,但最終我將庫升級到更高的數量,並且它似乎可以治癒它。我懷疑GAC或臨時文件可能是問題的一部分,儘管我無法在那裏找到我的圖書館。