2013-05-03 43 views
0

我的應用程序文件夾中有幾個文件。我想用舊版本替換舊版本,除了1個文件(x)。無論版本如何,我都希望x被替換。目前我有「DetectNewerInstalledVersion = true」和「RemovePreviousVersions = true」,肯定對x沒有效果。有什麼建議麼?我不介意是否必須替換所有文件始終不考慮版本來實現我想要的。這個怎麼做?部署項目屬性

+0

這些資源文件是項目的一部分嗎?你正在部署一個乾淨的版本還是隻是試圖改變平面文件? – evanmcdonnal 2013-05-03 16:15:27

+0

您是否已將AssemblyInfo.cs配置爲自動遞增每個構建上文件的內部版本號?這是編譯器確定哪個文件更新的唯一方法。如果兩個文件的版本始終爲1.0.0.0,則新文件可能不會被複制。 //您可以指定所有值,或者您可以默認構建版本號和修訂版號 // [assembly:AssemblyVersion(「1.0。*」)] [assembly:AssemblyVersion(「1.0.0.0」)] [assembly :AssemblyFileVersion(「1.0.0.0」)] – 2013-05-04 12:58:54

回答

0

如果這些文件中的任何一個是二進制文件,您應該從不部署混合二進制文件。即;從build 3中獲取commonlibrary1.dll並將其放入您當前擁有build 1的二進制文件的prod環境中。這是非常糟糕的做法。你應該部署一個乾淨的戲法。

要完成文件複製,只需更改VS中的每個文件屬性(這會更改項目文件中的文件屬性)。右鍵單擊該文件,選擇屬性,將「複製到輸出目錄」設置爲「複製如果更新」,而不是x。對於x將該屬性設置爲「始終複製」。

當您部署時只刪除服務器上的內容並將其替換爲您的構建輸出目錄。如果那個輸出目錄沒有切割它(意思是你必須手動移動一堆廢話),我會專注於改進構建腳本。

+0

你是在談論「文件安裝性能」?我沒有看到「複製到輸出目錄」 – 2013-05-03 19:46:14

+0

@JohnRyann對不起,我的迴應可能沒有用。這是VS2010中的項目本身,通常適用於資源文件。所有文件都有「複製到輸出目錄」屬性。如果你正在討論的是一個dll或者是一個構建的結果,它就不會在那裏(移動這些文件應該通過構建腳本來完成)。你在使用安裝程序嗎?你把這些文件放在服務器上的過程是什麼? – evanmcdonnal 2013-05-03 20:04:06