ASP.NET 開發 / 除錯時套用 Transform 切換組態設定

如果可以,應避免使用「註解/反註」解來切換設定。

預設 ,Transform 在 Web.config 執行部署才會觸發 Config 轉換,當開發人員需要在 VS IDE 除錯模式 (F5 /Ctrl+F5) 下切換設定時,卻無法套用切換設定,這時,可以透過 MsBuild 的 Task 來處理https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-extend-the-visual-studio-build-process?view=vs-2015&redirectedfrom=MSDN

 

開發環境

  • VS 2019
  • .NET Framework 4.8

操作步驟

複製 Web.config,貼上,即產生 Web - Copy.config 並將更名為 Web.Template.config,Web.Template.config 階層下的檔案,Web.Template.Debug.config、Web.Template.Release.config,都砍掉。

用文字編輯器打開專案檔,添加以下內容,存檔,在 VS IDE 重新載入專案

<Target Name="BeforeBuild">
    <TransformXml Source="Web.Template.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>

 

最後,按下Build,觀察 Web.Config 設定檔是不是被切換了

 

App.Config 的切換,只需要在 VS IDE 安裝 SlowCheetah 套件 https://marketplace.visualstudio.com/items?itemName=vscps.SlowCheetah-XMLTransforms

 

有關 Transform 設定請參考以下

https://docs.microsoft.com/en-us/previous-versions/aspnet/dd465326(v=vs.110)?redirectedfrom=MSDN

https://stackoverflow.com/questions/5732681/is-there-any-way-to-do-a-replace-or-insert-using-web-config-transformation

 

要注意的是:
1.主要的檔案變成 Web.Template.config,Web.config 變成動態產出
2.有從 Nuget 加入新的套件,VS IDE 還是會以 Web.config 為主,這時候要把 Web.Config 的設定搬到 Web.Template.config,否則下一次 Build 會被蓋掉

也就是說,主要的設定檔現在換成 Web.Template.config ,任何的變更都必需要從這個檔案下手

 

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo