iT邦幫忙

0

[.NET MAUI] 部署專案時卻遇到了error:One or more invalid file names were detected....

  • 分享至 

  • xImage
  •  

如題,在開發.NET MAUI專案時我最害怕遇到建置失敗,但我也算是練就了一身用MAC開發VS專案能夠應對的千奇百怪方式,在今天遇到了卡我一上午的錯誤:

Error: One or more invalid file names were detected. File names must be lowercase, start and end with a letter character, and contain only alphanumeric characters or underscores: ....

指出了這個專案辨識到了不符合要求的檔案名稱。

發生這個錯誤前,我為了要在專案中加入icon,就利用Finder去把我下載到電腦中的icon移到MAUI中的Resources/Images資料夾中,而剛好的所有icon名稱剛好都是大寫的XD也怪我自己懶得去改名稱,所以我一一把所有icon名稱改成小寫再去執行一遍,結果!!這個錯誤依然存在,但我也不以為意,覺得重開整個VS或是清除專案重建就好了吧?結果到最後我把重開機、刪除bin、obj資料夾都嘗試了一遍,這個錯誤就像蟑螂一樣打不死...

最後我決定備份icon後刪除整個Image資料夾,並利用Finder重建資料夾,好的^^沒有用^^!!這個錯誤還是不斷跑出來~~

在最後的最後,我終於想到可以用終端機去看我的資料夾到底哪裡還存在不符合的檔案名稱,由於一切的錯誤都是從Images資料夾開始的,所以我直接去檢查它:

  1. 打開terminal並導航至Resources/Images
  2. 下命令"ls -la"
  3. 抓到了一個隱藏資料夾**.DS_store**
    https://ithelp.ithome.com.tw/upload/images/20230901/2016214979hPgQdpq2.png

我查詢了一下.DS_store是什麼(參考此文章):

  1. Mac在使用Finder操作目錄中的文件時會自動創建的隱藏檔案
  2. 裡面主要儲存了一些資訊,例如:資料夾的圖標、視窗的設置等等

所以最後我決定不使用Finder進行資料夾重建用VS IDE進行重建即可,當然也就沒有自動生成.DS_store的問題了,最後專案也能夠順利建置。

但以上是一個治標不治本的方式,最好的方式是在MAUI中設定排除.DS_store檔案(參考此文章):

  1. 找到專案的csproj文件並找到定義MauiImage資源項目的地方
<MauiImage Include="Resources\Images\* />
  1. 設定專案指辨識以下指定的圖檔類型
<MauiImage Include="Resources\Images\*svg />
<MauiImage Include="Resources\Images\*png />
<MauiImage Include="Resources\Images\*jpg />

當然也有更極端的方式處理.DS_store檔案,在此文章有一段教學如何阻止 .DS_Store的生成,但我個人是不建議這樣做,所以就當給大家參考看看囉

以上,祝大家開發MAUI專案的過程都順利,有問題歡迎指正!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言