亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

exe文件沒有根目錄怎么辦?

exe文件沒有根目錄怎么辦?

C#
慕工程0101907 2023-09-24 11:15:06
默認情況下,構建路徑\debug\x86\為:db (folder) log (folder) *.exe *.pdb *.config我想將 *.exe(pdb 和 config)移至我的文件夾bin( \debug\x86\bin)我做下一個帖子構建腳本ROBOCOPY "$(TargetDir) " "$(TargetDir)bin\ " *.exe *.config *.pdb /IS /MOVE但是當我運行應用程序時崩潰(或start通過 Visual Studio)該項目包含其他文件夾。所以我想把文件放在不同的文件夾中。我想要這個結構db (folder) log (folder) bin (folder)
查看完整描述

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,那么無論你設置什么輸出路徑,輸出結構都是這樣的:

https://img4.sycdn.imooc.com/650fa9ff0001265401830122.jpg

無需在當前路徑創建新的 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 調試行為,因此請在調試時將所有內容保留為正常結構。并在嘗試釋放時使用特殊結構。


查看完整回答
反對 回復 2023-09-24
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

不要使用ROBOCOPY,而是更改項目的實際構建位置。

轉到Project -> Properties -> Build并將輸出路徑更改為/Debug/x86/bin。

然后應該可以正確調試。


查看完整回答
反對 回復 2023-09-24
  • 2 回答
  • 0 關注
  • 182 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號