2012-04-13 54 views
1

什麼是複製並始終覆蓋文件到目標目錄在VS2010一個postbuild事件運行在Windows 7正確的語法在後生成事件複製和覆蓋文件

目前最好的辦法我正在使用

robocopy $(SolutionDir) $(TargetDir) "Morning Report Template.xlsm" 

我也嘗試使用Xcopy(使用/ Y),甚至只是簡單的複製。但是我還沒有正常工作。或者我得到像代碼1退出的「命令」robocopy C:\ Working \ Projects \ SAFEXQueryForm \ C:\ Working \ Projects \ SAFEXQueryForm \ SAFEXQueryForm \ bin \ Release \「Morning Report Template.xlsm」「的構建錯誤。否則它只是不復制。

我需要它來複制和覆蓋每次,沒有生成錯誤,我也寧願改變我知道的Robocopy不能做文件名。

我在做什麼錯?什麼是最好的方法來做到這一點?

+1

複製/ Y 「$(SolutionDir)\晨報Template.xlsm」 $(TARGETDIR)? – 2012-04-13 13:07:17

+0

什麼都不做......有沒有其他的設置? – Dan 2012-04-13 13:30:21

+0

@Tom QUarendon:如果我清理構建並刪除文件,那麼該代碼將複製該文件。如果我刪除文件,然後只是建立,然後它不會複製。我怎樣才能讓它始終執行? – Dan 2012-04-13 13:41:22

回答

3

編輯2105年11月23日

這個答案提供了一個更好的方法:https://stackoverflow.com/a/4596552/1011724。您可以將文件添加到項目中,然後更改文件的「複製到輸出目錄」屬性。


原來的答覆

我仍然不知道什麼是錯的我原來的語法或如何說服VS那Robocopy的成功退出代碼爲1,但是這是我現在已經和它似乎工作,唯一的區別是,我改變了目錄結構,但是這不應該的問題(我怕我不知道如果我在此期間其他的變化,這是相當長的一段前)

xcopy "$(SolutionDir)\Additional Files\Morning Report Template.xlsm" "$(TargetDir)" /Y 

和我也有運行後生成事件下拉設置爲On successful build

1

您需要使用自定義構建操作來實現此目的。有關詳細信息,請參見http://msdn.microsoft.com/en-US/library/hefydhhy(v=vs.80).aspx,但這是我嘗試的。

我增加了輸入文件到項目中。然後選擇文件並顯示屬性頁面(右鍵單擊 - >屬性)。在常規頁面上,確保「項目類型」是「自定義生成工具」。

您可能需要關閉並重新打開屬性對話框,但已經改變「項目類型」爲「自定義生成工具」應該在屬性對話框中「自定義生成工具」頁面。然後你可以填寫命令行。確保您使用我們的自定義構建步驟生成的文件的名稱填寫「輸出」部分。

然後你會發現,該項目構建並運行自定義生成步驟,只要它發現輸入文件中有一個日期大於輸出文件,我相信這是你想要達到的目的。

+0

這聽起來像我想要的,星期一早上我會試試這個。非常感謝! – Dan 2012-04-13 15:38:23

+0

我想嘗試一下,但我似乎無法找到文件的屬性頁面。 (也不在鏈接中提到的配置框)。我右鍵單擊該項目並選擇「添加現有項目」,選擇該文件(一個.xlsm)。然後我右鍵單擊解決方案資源管理器中的文件並選擇了屬性,但是我所得到的只是正常的屬性資源管理器,就像您在獲勝窗體設計器中獲得的控件一樣。找不到'項目類型'。雖然有一個生成操作下拉菜單和一個自定義工具文本字段。我哪裏錯了? – Dan 2012-04-16 09:26:20

+0

在常規文件的屬性對話框中,在左側,我有一個由包含「常規」的「配置」組成的樹。 「配置」和「常規」都鏈接到右側的相同屬性頁面。它包含一個默認爲「no」的設置「從構建中排除」,以及默認爲「不參與構建」的屬性「Item type」。你有什麼項目類型?我正在使用Visual C++項目。 – 2012-04-17 07:09:54