ในการพัฒนา Web Application เรามักจะมี Environment ต่าง ๆ มากมายไม่ว่าจะเป็น Develop, Test, Customer Site Test, Production, บลา ๆ ๆ
หลาย ๆ ท่านน่าจะเคยประสบปัญหาเผลอเอาไฟล์ web.config ที่ใช้ในเครื่องตัวเองทับไฟล์ web.config ในขณะที่ deploy จนต้องหัวร้อนหาทางใส่ Config กลับให้เหมือนเดิม
วันนี้เราจะมีรู้จักกับ Web.config File Transformations ซึ่งจะช่วยแก้ปัญหานี้กันครับ
Web.config File Transformation เป็นฟังก์ชันที่ช่วยในการปรับไฟล์ Web.config ในขณะที่เรา Publish ให้ตรงกับ Environment ที่เราต้องการโดยอัตโนมัติ ทำให้เราสามารถ deploy ได้อย่างสบายใจครับ
ทั้งนี้ตัวอย่างที่ทำให้ดูนี้จะเป็นการใช้ Visual Studio 2019 แต่จริง ๆ ฟังก์ชันนี้มีมาตั้งแต่ 2010 เลยครับ
มาเริ่มกันเลยดีกว่า
1.เริ่มจากสร้าง Project เป็น Web Application ขึ้นมา จะสังเกตุว่า Web.config เราจะมีไฟล์ลูกแยกอยู่อีกสองไฟล์ได้แก่ Web.Debug.config และ Web.Release.config ซึ่งสองไฟล์นี้จะถูกใช้งานเมื่อเราจะ Publish ตัวเว็บครับ ถ้าหากไฟล์ไม่แสดงลองคลิก icon ที่หมายเลข 2 ดูครับ
2.ลองเติม Code นี้ลงใน Web.config
3.ลองเปิดไฟล์ Web.Release.config ขึ้นมาและลองเติมเข้าไปตามนี้ เพื่อให้ได้ไฟล์ที่ต้องการเมื่อ Publish ด้วย Release โดยตัวอย่างจะเป็นการ
- แก้ไข Connection String โดยใช้ xdt:Transform=“SetAttributes” xdt:Locator=“Match(name)” เพื่อบอกว่าจะเป็นการทับ Attribute โดยดูจาก Property “name” ที่ตรงกัน
- ลบ Debug mode จาก Tag Compilation โดยใช้ xdt:Transform=“RemoveAttributes(debug)” เพื่อลบ Attribute “debug” ออก
- เพิ่ม system.webserver โดยใช้ xdt:Transform=“Insert” เพื่อบอกให้เพิ่มส่วนนี้ลงไป
4.มาลอง Publish กันเลย (เลือก Configuration Release เพื่อให้เรียกใช้ Web.Release.config)
5. ลองดูผลลัพธ์ไฟล์ web.config ที่ Publish ออกมา สังเกตุว่าจะเป็นตามที่เรา Config ไว้ที่ Web.Release.config ครับ
นอกจากนี้สามารถดูตัวอย่าง Syntax การ Transform อื่น ๆ ได้จากที่นี่ครับ https://docs.microsoft.com/en-us/previous-versions/aspnet/dd465326(v=vs.110)
แถม
เราสามารถเพิ่ม Environment ได้เองโดยการเพิ่ม Configuration ใน Configuration Manager จากนั้นกดคลิกขวาที่ Web.config =>Add config transform ได้ครับ