回答
通常我不會將諸如創建zip文件,安裝程序,NuGet軟件包等東西放入我的實際項目中。
爲什麼?因爲當我把它放在那裏時,它每次執行我在Visual Studio中構建項目,例如當我正在調試時。
但是,只有在執行發佈時才需要zip文件,安裝程序等,因此我不希望每次在Visual Studio中按F5時都會重新生成它們。
爲了發佈,我通常會創建一個批處理文件來執行MSBuild project file,該文件創建了發佈所需的所有內容。
IMO創建一個ZIP文件也屬於該MSBuild項目文件。
你可以找到我,你在這兩個以前的答案需要的所有信息:
- How to create a basic batch file and MSBuild project file
(實際問題,有關於建立一個安裝有WiX,但在開始的時候,我創建一個MSBuild項目文件) - How to create a ZIP file with MSBuild Community Tasks
另外,here's an example MSBuild project file從我的項目之一,它具有以下功能:
- 構建
- 運行單元測試
- 創建二進制兩個釋放文件夾(一個DLL和一個.EXE)
- 創建兩個拉項目文件,每個文件夾與二進制文件
- 創建一個NuGet包的DLL
- 創建一個ClickOnce安裝程序。EXE
- 自動設置正確的版本號爲一切
這種方法的好處是,我可以做一個發佈,它包括一切,我剛剛上市,一個單一的點擊(運行一個批處理文件) 。
創建所有這些東西需要一些時間,但由於它不是Visual Studio解決方案的一部分,每次我在Visual Studio中進行構建時都不會運行 - 我只在需要時才執行它。
或者使用更簡單的方法將其放入後期構建事件中,並且僅在運行Release構建配置時執行發佈所需的步驟......您仍然可以從命令行執行此構建,所以沒有真正的只要你正確地實施它,任何使用後構建的缺點。 –
對不起復活這個死馬,但你也可以創建一個名爲部署的新目標。所以基本上,你需要調試,發佈和部署。 Deploy是哪個版本的變體,並添加了額外的步驟。 – code4life
轉到項目的屬性,然後在「構建事件」選項卡中,在後構建事件區域中編寫命令。那裏的命令就像Cmd批處理文件一樣執行。
另外:那裏有幾個'makros'可用在那裏,這可能有助於參考項目文件夾等。檢查出來。
而且,要添加到Jason的評論中,您還可以將批處理文件本身稱爲後構建命令。如果你有CSC目標,他們會在生成後的事件發生後編譯和,如果你想要egcopy輸出這些CSC目標的文件需要在post-compile
事件中完成。)
+1。您將需要一個可以調用的zip實用程序,例如7zip,然後您只需將7zip命令行添加到後期構建腳本。你可以在一個dos框中單獨解決這個問題,然後在最終的命令一旦工作後複製到你的後期構建事件中。 –
@JasonWilliams - Visual Studio中是否沒有默認的壓縮功能?讓所有開發人員擁有7zip或winzip,並在正確的文件夾中放置路徑不可擴展。 – bschandramohan
@Chandra不,內置於vs.然而,7zip是一個單獨的exe文件,所以你可以很容易地檢查它到源代碼控制和編寫你的文章構建使用該特定的位置,以保證每個開發人員有正確版本的工具得到一個工作和一致的構建。 –
使用PowerShell,做發佈版本,只有當:
if $(ConfigurationName) == Release (powershell Compress-Archive -Path '$(TargetDir)*.dll', '$(TargetDir)*.pdb', '$(TargetDir)*.config' -DestinationPath '$(SolutionDir)PublishOutput\YourNameHere.zip' -Force)
它只是呼嘯而過的DLL,PDB和配置文件。
-Force
用於覆蓋每個版本上的zip文件。
- 1. Visual Studio(2005&2008)編譯完成警報?
- 2. Visual Studio編譯文件
- 3. 編譯* .lib文件visual studio
- 4. 在Visual Studio中編譯生成的文件
- 5. Visual Studio預編譯事件是否保證在編譯開始之前完成?
- 6. 編譯C文件在Matlab與Visual Studio
- 7. 在Visual Studio中啞完成
- 8. 如何編譯完成的C#項目,然後在Visual Studio之外運行?
- 9. cl編譯器(visual studio)在哪裏生成LIB和EXP文件
- 10. 在Visual Studio 2010中編譯`C`文件時,它是否編譯爲C++文件?
- 11. visual studio編譯時插件
- 12. 預編譯頭文件和Visual Studio
- 13. 如何讓Visual Studio「編譯」.aspx文件?
- 14. Visual Studio 2008 C++編譯:沒有生成Lib文件
- 15. Visual Studio團隊服務編譯成功,但沒有EXE文件
- 16. 自動添加要在Visual Studio中編譯的文件
- 17. 在Visual Studio 2013中爲Web編譯較少的文件
- 18. 如何在Visual Studio 2008中創建編譯的用戶文件?
- 19. 在Visual Studio中只增加一個文件的重新編譯
- 20. 如何在visual studio 2012中編譯newley添加的源文件?
- 21. 如何在Visual Studio中編譯特定的源代碼文件?
- 22. 追蹤在visual studio中編譯的可執行文件
- 23. 編譯FFMPEG在Visual Studio 2013
- 24. 在Visual Studio 2013中的語句完成
- 25. 在編譯時驗證HLSL文件在Visual Studio中
- 26. 編譯Firefox插件在Visual Studio 2012
- 27. C代碼在Visual Studio中編譯成什麼彙編語言?
- 28. Visual Studio - 在編譯文件夾外加載參考文件
- 29. 即使在指定ProjectDir(Visual Studio 2012)後編譯包含文件的pro * C文件時發生編譯錯誤
- 30. 在Visual Studio中編譯時,在/ bin中沒有生成DLL/EXE
http://markkemper1.blogspot.se/2010/10/zipping-build-outputs-using-build-file.html –