# [筆記] Web API 2 發布的 XML 檔案同步問題 ### :question: **疑問** 1. 如何在預設的**建置**下產生專案的 XML 檔案 ? 2. 如何在預設的**發布**下的資料夾產生專案的 XML 檔案 ? 3. 如何將所有 Nuget 套件所生成的 XML 都複製到指定資料夾 ? :::success :bulb: **快速解答** 1. 開啟**專案屬性**進行設定就可以了。 2. 同上作法。 3. 需要變動 .csproj 或者 .pubxml 檔案。 ::: --- ### 1. 在預設的 Debug 模式下建置生成專案的 XML 檔案 #### (1) 運行專案後,到專案下的 bin 資料夾: - 發現有很多的 Nuget 套件 XML 檔案 - 但是唯獨沒有專案的 XML 檔案 ( **{專案名稱}.xml** ) ![image](https://hackmd.io/_uploads/H1voG1SQC.png) #### (2) 開啟專案屬性的建置設定: - 對右側 **"方案總管"** 的 **"專案(Project)"** 按下右鍵 - 最下方有個 **"屬性"** 選項 ![image](https://hackmd.io/_uploads/HkaSVyH7C.png) - 點選左側的 **"建置"** 標籤,右側視窗拖拉到最下方可以看到 **"XML 文件檔案"** 的方框 ![image](https://hackmd.io/_uploads/SkA3VySXA.png) #### (3) 開啟設定,並重新運行專案: - 開啟 **"XML 文件檔案"** 的方框設定,保持預設路徑位址 ![image](https://hackmd.io/_uploads/r16cHkrmR.png) - 重新運行專案,就可以在專案下的 bin 資料夾,找到專案的 XML 檔案了 ![image](https://hackmd.io/_uploads/BkRbIJBmA.png) --- ### 2. 在 Release 模式下發布生成專案的 XML 檔案 #### (1) 發布專案後,到專案下的 bin\app.publish\bin 資料夾: - 沒有發現任何的 XML 檔案 (亦沒有 **{專案名稱}.xml** ) ![image](https://hackmd.io/_uploads/HyLhv1B7R.png) #### (2) 同樣,開啟專案屬性的建置設定,再重新發布專案: - 開啟**建置設定**的視窗之後,需要調整上方的**組態:Release** - 並開啟 **"XML 文件檔案"** 的方框設定,保持預設路徑位址 ![image](https://hackmd.io/_uploads/SkySuyBm0.png) - 重新發布專案,就可以在專案下的 bin\app.publish\bin 資料夾,找到專案的 XML 檔案了 - 每次發布後,就會自動生成新的 XML 檔案到 bin\app.publish\bin 資料夾 - 這樣就可以避免每次重新發布專案時,還要去 \bin 資料夾複製專案的 XML 檔案 ![image](https://hackmd.io/_uploads/ryciKkSQ0.png) --- ### 3. Nuget 套件的 XML 檔案複製 - 上面有看到在專案下的 bin 資料夾,還有很多的 XML 檔案,是否需要遷移到 publish 的資料夾呢? - 答案是:看情況,而多數的情況是,**不需要** - 例如:使用 .Net Framework Web API 2 生成 Swagger 文件,就需要在 publish 的資料夾含有 **{專案名稱}.xml** - 而多數的 Nuget 套件所相依的 XML 檔案,並不需要遷移到 publish 資料夾 #### (1) 為了保險起見,我想要所有的 XML 檔案,都從 bin 複製到 bin\app.publish\bin: - 手動編輯 .csproj 或者 .pubxml 檔案 (缺點是:要手動改) - 或者調整部署的項目 (缺點是:app.publish 會變得很大包) - ~~又或者是 ... 手 動 複 製 ...~~ (缺點是:我們又回到了問題的起點...) - 如果有興趣的話,相關方法可以參考下面的文章內容 :::info :bookmark_tabs: **參考資料** >stackoverflow 1:https://stackoverflow.com/questions/23681534/asp-net-webapi-publish-xml-files-not-copy >stackoverflow 2:https://stackoverflow.com/questions/44643151/how-to-include-xml-comments-files-in-swagger-in-asp-net-core/ ::: ---