![](/img/trans.png)
[英]Why outputting 'error: ' in Post-Build Event breaks my build in VS2012?
[英]VS 2012: Post Build xcopy error 2
我想讓VS將構建過程后創建的.lib文件復制到特定文件夾。 所以我去了項目配置,后期構建事件,並輸入以下命令:
if exist $(TargetPath)
xcopy "$(TargetPath)" "C:\Users\Incubbus\Documents\Visual Studio 2010\My Libraries\z.lib" /Y
但是,在點擊“構建”后,我沒有收到復制過程,而是收到以下錯誤:
錯誤MSB3073:命令“如果存在C:\\ Users \\ Incubbus \\ Documents \\ Visual Studio 2010 \\ My Libraries \\ MyNetWorkProject \\ Debug \\ IncNetworkLibD.lib xcopy”C:\\ Users \\ Incubbus \\ Documents \\ Visual Studio 2010 \\ My Libraries \\ MyNetWorkProject \\ Debug \\ IncNetworkLibD.lib“”C:\\ Users \\ Incubbus \\ Documents \\ Visual Studio 2010 \\ My Libraries \\ z.lib“/ Y
:VCEnd“退出代碼2。
我也想知道:VCEnd
錯誤消息的命令字符串中的:VCEnd
< - 也許這就是原因? 如何解決這個問題?
任何幫助和提示都會被愉快地消耗掉:)
部分解決方案
編輯 :看起來重命名部分( Inc.lib
到z.lib
)制造麻煩,當xcopy詢問這是一個文件還是一個目錄...當我只是將原來命名的文件復制到一個目錄而不是復制時它工作改名
Xcopy文檔說明如下:
指定Destination是文件還是目錄如果Destination不包含現有目錄且不以反斜杠(\\)結尾,則會顯示以下消息:
Does destination specify a file name
or directory name on the target
(F = file, D = directory)?
如果要將文件復制到文件,請按F. 如果要將文件或文件復制到目錄,請按D.
您可以使用/ i命令行選項來禁止顯示此消息,這會導致xcopy
假定如果源是多個文件或目錄,則目標是目錄。
你需要相反,但沒有這樣的開關。
這里提出了解決方案: https : //stackoverflow.com/a/4283533/532647 。
建議使用echo f |
前置xcopy
命令 前綴,基本上執行以下操作:它模擬用戶在xcopy
要求時按f
鍵。
所以你的命令應該是這樣的:
if exist $(TargetPath)
echo f | xcopy "$(TargetPath)" "C:\Users\Incubbus\Documents\Visual Studio 2010\My Libraries\z.lib" /Y
運營商|
只是將echo f
(== f
)的輸出xcopy
給xcopy
命令,並在適當的時候讀取它。 有關輸出重定向的更多信息,請訪問: http : //ss64.com/nt/syntax-redirection.html 。
更新:正如Govert所指出的 ,這種黑客攻擊不適用於Windows的本地化版本。 但是,另一個黑客將工作:
xcopy D:\file.zip c:\renamedFile.zip*
使用星號*
附加目標文件名使xcopy不會詢問目標是文件還是目錄。
為什么不使用copy而不是xcopy? copy專門用於文件,因此不會產生混淆。
您是否嘗試將$(TargetPath)包裝在引號中? 那些不太受歡迎的空間角色 - 而不是全部 - 高分辨率的MS產品往往會在每個角落搞亂...... Dunno為什么那些dumbos繼續這樣做......
像這樣:如果存在“$(TargetPath)”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.