--- title: 依組態更換 Config 設定值 tags: C# --- # 依組態更換 Config 設定值 ### 前言 在專案進行中,總會有Web.config設定的需求,當要發行佈版時會依環境的不同,設定值也會有所不同,以前總是用手動方式進行更改,改了一段時間,覺的這樣方式很不可靠,一個分心就很容易改錯。因此上網找了方法並記錄下來,方便之後忘記還有記錄可以回想起來。 ### 實作步驟 * 建立組態 * 安裝擴充工具 * 產生對應的設定檔 * 置換config設定值 ### 建立組態 從組態管理員建立一組新的組態 ![](https://i.imgur.com/n5gZ1f2.png) 設定名稱,來源選擇Debug,在這個組態下就可以debug ![](https://i.imgur.com/g6BgHGu.png) ### 安裝擴充工具 使用 Configuration Transform 產生設定檔 ![](https://i.imgur.com/7L24Mtl.png) ### 產生對應的設定檔 選擇 Add Config Transforms 建立設定檔 ![](https://i.imgur.com/nWhJkYF.png) 分別產生 Debug、Dev、Release 檔案 ![](https://i.imgur.com/U4H9tZj.png) ### 置換config設定值 依不同設定檔,置換內容 App.config ``` <appSettings> <!--參數設定--> <add key="WebAPI" value="localUrl"/> </appSettings> ``` App.Dev.config ``` <appSettings> <add key="WebAPI" value="DebugUrl" xdt:Locator="Match(key)" xdt:Transform="Replace" /> </appSettings> ``` App.Debug.config ``` <appSettings> <add key="WebAPI" value="DevUrl" xdt:Locator="Match(key)" xdt:Transform="Replace" /> </appSettings> ``` App.Release.config ``` <appSettings> <add key="WebAPI" value="ReleaseUrl" xdt:Locator="Match(key)" xdt:Transform="Replace" /> </appSettings> ``` **備註** 因為擴充工具不支援 Visual Studio 2017版本,所以需先卸載專案,手動修改.csproj 檔 ![](https://i.imgur.com/63zPxwW.png) 在這段設定檔下方 ``` <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> ``` 貼上這段程式碼,重Build Project即可 ``` <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\WebApplications\Microsoft.WebApplication.targets" /> <Target Name="BeforeBuild"> <TransformXml Source="App.config" Transform="App.$(Configuration).config" Destination="App.config" /> </Target> ``` **參考資料** > https://docs.microsoft.com/en-us/previous-versions/dd465326(v=vs.100) > https://marketplace.visualstudio.com/items?itemName=GolanAvraham.ConfigurationTransform > https://blog.yowko.com/webconfig-transform-when-debug/