2 回答

TA貢獻1852條經驗 獲得超1個贊
關于為什么VS拋出該錯誤消息并且無法在VS中啟動程序:
對于VS中的C#項目,它有默認的Output path
,就像Larry上面建議的那樣,當我們嘗試簡單地啟動或開始調試程序時,VS會根據.exe調用輸出xx.exe?TargetDir
。由于您使用構建后事件將輸出 xx.exe 從 移動$(TargetDir)
到$(TargetDir)bin
,每次 VS 嘗試啟動該程序時,它都找不到程序,因為它實際上不在 $(TargetDir) 路徑中。
注意:在使用 msbuild 構建時,$(OutputPath)
和$(TargetDir)
指的是相同的路徑。
我想將 *.exe(pdb 和 config)移動到我的文件夾 bin (\debug\x86\bin)
對于 VS 中的 C# 項目,不建議這樣做。我假設你當前的項目中可能有 log 和 db 文件夾,如果其中的文件設置為 Content build action 和 CopyAlways 或 CopyIfNever,那么無論你設置什么輸出路徑,輸出結構都是這樣的:
無需在當前路徑創建新的 bin 文件夾并將其移入*.exe, *.pdb, *.config
其中。它會影響VS中的正常調試行為,如果xx.exe依賴于db文件夾中的數據庫,還可能導致未知錯誤。(更改路徑后,xx.exe可能會嘗試在錯誤的路徑中搜索)
不確定你用的VS是什么版本,可以查看這個issue。msbuild是VS中的構建引擎,VS使用它來構建C#項目。您可以在您的機器中找到它的路徑并檢查其典型結構:
?--Msbuild.exe
|
?--necessary files
|
?--referenced assemblies
|
?--other folders
綜上所述,使用post-build腳本會調用崩潰,導致VS找不到xx.exe。并且沒有有效的方法來獲取您想要的結構,因為原始結構是 VS 對于 C# 項目的預期行為。所以也許我們可以讓它在正常情況下就應該這樣。
更新:
如果現在我想發布該程序。當然,現在我在發布模式下構建程序。輸出結構為:
RootDir(name:xxx) ---xx.exe
? ? ? ? ? ? ? ? ? ---xx.config
? ? ? ? ? ? ? ? ? ---log folder
? ? ? ? ? ? ? ? ? ? ?---log file
? ? ? ? ? ? ? ? ? ---text folder
? ? ? ? ? ? ? ? ? ? ?---txt file
? ? ? ? ? ? ? ? ? ---db folder
? ? ? ? ? ? ? ? ? ? ?---db file
根據您的要求,為什么不創建一個新的 bin 文件夾并將 xx.exe、xx.config 放入其中。然后重命名根文件夾的名稱,手動將其更改為:
ProgramName ---bin folder
? ? ? ? ? ? ? ?---xx.exe
? ? ? ? ? ? ? ?---xx.config
? ? ? ? ? ? ? ?---other referenced assemblies
? ? ? ? ? ? ---log folder
? ? ? ? ? ? ? ?---log file
? ? ? ? ? ? ---text folder
? ? ? ? ? ? ? ?---txt file
? ? ? ? ? ? ---db folder
? ? ? ? ? ? ? ? ---db file
您需要注意的是確保您的程序可以像這樣找到所需的文件。由于您可能通過代碼依賴這些文件,因此一個簡單的示例是使用以下格式的路徑:@"..\text\test.txt",這..意味著上面的目錄。因此,如果您使用類似的語句@"..\db\database file",您的程序可以找到必要的文件。
但請注意,這種方式會影響 noraml 調試行為,因此請在調試時將所有內容保留為正常結構。并在嘗試釋放時使用特殊結構。

TA貢獻1811條經驗 獲得超5個贊
不要使用ROBOCOPY
,而是更改項目的實際構建位置。
轉到Project -> Properties -> Build
并將輸出路徑更改為/Debug/x86/bin
。
然后應該可以正確調試。
- 2 回答
- 0 關注
- 182 瀏覽
添加回答
舉報