首先,我完全不理解MSBuild + VS2013的行爲和發佈功能,因爲我剛開始自己使用發佈功能。我正在尋找一種方法來加速通過VS2013中的FTP web部署進行發佈。 (我沒有使用TFS獲取最新版本,儘管如此。)
我會說這是在this SO question的不同背景下部分解釋的。 MSBuild進程。某些文件的時間戳正在進行比較,然後可能指示MSBuild/VS2013目標(構建輸出)是否最新。然後重新編譯不是最新的文件。 由於你們都在不同的機器上工作,時間戳很可能很快就會有所不同。
要了解構建/發佈過程中實際發生了什麼,請將構建輸出詳細程度設置爲詳細或診斷,片刻: VS2013菜單 - 工具 - 選項... - 項目和解決方案 - 構建和運行 - 輸出詳細 - 設置爲 - >詳細或診斷。運行構建,並查看VS2013中的「輸出」面板/選項卡。如果不可見,請選擇「顯示來自:Build的輸出」以查看結果。 檢查構建細節後,不要忘記將其設置爲原始設置,因爲它可能會減慢構建的速度。
但爲什麼即使不變的第三方DLL正在重新發布?可能是因爲這些DLL在構建期間實際上被覆蓋。您可以將程序集引用屬性「Copy local」設置爲true,以使您的網站無需手動上載即可運行。或者你正在使用命令行復制命令,並在項目的後期構建事件期間將overwrite參數顯式設置爲true(如'copy/y ...'或'xcopy/y ...')。然後,待發布文件的時間戳肯定會被覆蓋,請參閱 「obj \ Release \ Package \ PackageTmp」文件夾(或者如果設置了調試版本,則例如:「\ Debug」而不是「\ Release」 )
此外,如果您使用FTP發佈,VS2013作爲默認設置不會檢查目標web服務器上的時間戳差異,至少這是我的經驗。至於像web部署等其他發佈選項,我還不知道。但是,您遇到的差異對我來說似乎是正常的行爲,因爲您在不同的機器上運行構建,並從不同的機器發佈文件。所以時間戳可能會有所不同......這又一次表明「更改」了要發佈的文件。
由於我很好奇這個問題應該如何解決,所以我一直在尋找這個問題: 也許TFS構建服務器是一個選項,配置了滾動構建。但是我閱讀了一個具體的SO(對不起,現在不能添加更多的鏈接,因爲我剛剛註冊了),這是建議做乾淨的構建,以防止出現新問題。這將迫使完全發佈,因爲文件全部被幹淨的版本改變...所以這不會工作,我認爲。
作爲一個答案,你可能想使用these FAQ answers on MSDN的網絡部署。查看問題:
- 「我可以從部署中排除特定文件或文件夾嗎?」 .NET 4.0/4.5和/或
- 「如何使Web部署使用文件校驗和,而不是日期的,以 確定哪些文件被改變了嗎?」只有.NET 4.5!
第一個選項是要排除的文件。 第二種選擇是使用校驗和來比較文件而不是時間戳,但這可能會使構建(?)過程有所放慢,正如FAQ所述。請注意該FAQ頁面的前幾行,以及如何編輯發佈配置文件以應用這些元素中的一個或兩個!
此外,它是一個選項,把第三方dll的一個不同的項目,然後你可以只包括部署該項目的某些解決方案配置(VS2013菜單 - 構建 - 配置管理器,請參閱'部署中的複選框'雖然我不確定這是否是作爲Web部署的VS2013「發佈」功能的一部分,但由於某些原因,此部署列複選框對我的解決方案項目呈灰色,我不明白...所以雖然這聽起來邏輯,我不能測試,以驗證該選項。)
,不要忘記先創建備份/複製/截圖您更改任何設置或發佈配置文件之前,然後更改您和您之間的其他機器上的相同設置/可配置文件r同事在工作。
有沒有人見過或處理呢? – Dave
這有什麼好運?我遇到同樣的問題 –
不,我已經知道了。我的同事通常會發佈網站,當我發佈他的網站時,所有內容都會更新,反之亦然,但當我們發佈自己的網站時並非如此。 – Dave