簡體   English   中英

使用代碼 1 退出構建后事件

[英]Post Build Event Exited with Code 1

我正在嘗試使用 Post Build 事件清理發布文件夾,因此我刪除了.xml.pdb文件並嘗試將所有 dll 文件復制到自定義 lib 文件夾錯誤中,我得到Post Build Exited with Code 1

我的代碼:

if $(ConfigurationName) == Release del "$(TargetDir)*.xml", "$(TargetDir)*.pdb"
if $(ConfigurationName) == Release xcopy "$(TargetDir)\*.dll" "$(TargetDir)\lib\"

2 個命令由新行分隔,如圖所示... Lib 文件夾也存在。

代替

xcopy $(TargetDir)*.dll $(TargetDir)lib\

你應該使用

xcopy "$(TargetDir)*.dll" "$(TargetDir)lib\"

處理路徑中的空格。

嘗試使用以管理員身份運行 -> 打開項目 -> 構建打開 VS。

首先,嘗試使用$(TargetDir)\\ ,因為有些變量返回時不帶斜杠,這會連接您的路徑,因此您正在尋找bin\\Debuglib\\而不是bin\\Debug\\lib

正如@Uwe Keim 所指出的,返回代碼 1 意味着沒有找到要復制的文件 如果您指向無效的文件夾,也會發生這種情況,從而進一步認為您可能需要該\\

del命令也有可能失敗,盡管有關 del 的同一技術網文章沒有指示任何返回代碼。 一些論壇來源指出返回碼 1 可能表示刪除失敗。

這個修改對我有用:

del *.XML, *.pdb
xcopy /y "$(TargetDir)*.dll" "$(TargetDir)lib\"

1)。 在 del 命令中省略目標目錄變量

2)。 xcopy 中的 /y 選項 Microsoft 幫助頁面中的注意事項: /y :禁止提示以確認您要覆蓋現有目標文件。

這個解決方案對我有用

xcopy "$(TargetDir)*.dll" "$(TargetDir)lib\"

如果您在 Copy 命令中使用相對路徑,請確保父目錄是指您打算使用的適當目錄,否則您將收到退出代碼 1 錯誤。

例如:

copy "C:\SolnFolder\project1\release\bin\xyz.dll" "..\MainProject\bin\x86\"

在這里,Project1 和 MainProject 共存於 SolnFolder。 當我想到將 xyz.dll 復制到 MainProject 的 x86 文件夾時,它失敗了,因為復制命令中使用的 ..\\ 指的是源路徑的發布文件夾而不是 SolnFolder。 因此,下面解決了這個問題:

copy "C:\SolnFolder\project1\release\bin\xyz.dll" "..\..\..\MainProject\bin\x86\"

注意:另外,請確保每個相對路徑都使用引號

我總是用@set ERRORLEVEL=0行結束我的前/后構建事件,因為像 xcopy 這樣的程序似乎即使成功也返回非零錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM