โครงการนี้แสดงให้เห็นถึงพฤติกรรมการกำหนดค่าที่ถูกล่ามโซ่ของ Microsoft สำหรับแอพโฮสต์. NET ทั่วไป
ใช้ NET 6.0 และตัวสร้างโฮสต์ทั่วไปในแอพคอนโซลพร้อมคุณสมบัติ "ทักทาย" ที่ถูกแทนที่ด้วยแต่ละห่วงโซ่ในการกำหนดค่า
นี่คือลำดับที่ผู้ให้บริการกำหนดค่าแต่ละคนถูกนำไปใช้ คนสุดท้ายชนะ
บางครั้งการทำความเข้าใจการกำหนดค่าที่ถูกล่ามโซ่และสิ่งที่แทนที่สิ่งที่อาจเป็นช่วงการเรียนรู้ที่ใหญ่กว่าที่ต้องการ
การสาธิตนี้คือการช่วยให้คุณเข้าใจลำดับของการกำหนดค่าที่ถูกล่ามโซ่
ส่วนการกำหนดค่า Azure ของการสาธิตนี้ใช้การเข้าถึงการกำหนดค่าแอป Azure ซึ่งปัจจุบันฟรีสำหรับทรัพยากรหนึ่ง
หากใช้ส่วนนี้ของการสาธิตคุณต้องตั้งค่าการสมัครสมาชิกและสภาพแวดล้อม Azure ของคุณก่อนที่จะเปิดตัวการสาธิต
ฉันใช้คุณสมบัติ "ทักทาย" ที่กำหนดค่าได้หนึ่งรายการที่มีฉลากหนึ่งที่ไม่มี หากคุณต้องการใช้สิ่งเหล่านี้หรืออย่างใดอย่างหนึ่งคุณจะต้องเพิ่มลงในการกำหนดค่าแอป Azure ของคุณ
หนึ่งที่มีป้ายกำกับจะต้องตรงกับ "การกำหนดค่าการกำหนดค่า" ตามรหัสที่มีอยู่

คุณต้องไม่เขียนบทที่ AddAzureAppConfiguration ใน Program.cs
จำเป็นต้องมีความคุ้นเคยกับบรรทัดคำสั่ง ตัวอย่างขึ้นอยู่กับ Git Bash สำหรับ Windows แต่สามารถแมปได้อย่างง่ายดายสำหรับ PowerShell หรือ CMD
สิ่งเหล่านี้ถือว่าเป็นเทอร์มินัลทุบตี แปลงเป็นคำสั่งสำหรับหน้าต่างเทอร์มินัล/PowerShell/CMD ที่คุณชื่นชอบ
งานเหล่านี้ย้อนกลับจากการกำหนดค่าแอป Azure ซึ่งจะแทนที่การตั้งค่าก่อนหน้านี้ทั้งหมดไปจนถึงลำดับความสำคัญต่ำสุดในห่วงโซ่
เมื่อทำงานจากบรรทัดคำสั่งทำความสะอาด (ไม่มีชุดตัวแปรสภาพแวดล้อม):
ด้วยส่วน azureapponfiguration ของ Program.cs Unbmented,
~/source/repos/ChainedConfigurationDemo/pub master
└─ cd ..; dotnet publish -o pub --nologo --verbosity quiet; cd pub
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe Greeting=HelloFromArgs
Starting demo...
In the end, the greeting is "HelloFromAzure"
Press Ctrl-C to stop the host and exit.
ด้วยส่วน azureapponfiguration ของ Program.cs แสดงความคิดเห็นภายใน Visual Studio เรียกใช้แอพในการดีบัก

ด้วย Azure แสดงความคิดเห็นและไม่มีชุด dotnet_environment ไม่เปิดตัวจากการเปิดตัวของ Visual Studio

~/source/repos/ChainedConfigurationDemo/pub master
└─ cd ..; dotnet publish -o pub --nologo --verbosity quiet; cd pub
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe Greeting=HelloFromArgs
Starting demo...
In the end, the greeting is "HelloFromArgs"
Press Ctrl-C to stop the host and exit.
แอพนี้ได้รับการกำหนดค่าเช่นนั้นหากไม่ได้ตั้งค่า Dotnet_environment หรือถูกตั้งค่าเป็นสิ่งอื่นนอกเหนือจาก "การพัฒนา" หรือ "ทดสอบ" การสร้างการกำหนดค่าจะผ่านไปยัง AppSettings.json (หากทรัพย์สินมีอยู่ใน AppSettings.json) และอื่น ๆ
Program.cs แสดงความคิดเห็น ~/source/repos/ChainedConfigurationDemo/pub master
└─ cd ..; dotnet publish -o pub --nologo --verbosity quiet; cd pub
~/source/repos/ChainedConfigurationDemo/pub master
└─ export DOTNET_ENVIRONMENT=Development
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe
Starting demo...
In the end, the greeting is "HelloFromAppSettings.Development"
Press Ctrl-C to stop the host and exit.
Program.cs แสดงความคิดเห็น ~/source/repos/ChainedConfigurationDemo/pub master
└─ cd ..; dotnet publish -o pub --nologo --verbosity quiet; cd pub
~/source/repos/ChainedConfigurationDemo/pub master
└─ export DOTNET_ENVIRONMENT=Test
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe
Starting demo...
In the end, the greeting is "HelloFromAppSettings.Test"
Press Ctrl-C to stop the host and exit.
~/source/repos/ChainedConfigurationDemo/pub master
└─ unset DOTNET_ENVIRONMENT
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe
Starting demo...
In the end, the greeting is "HelloFromAppSettings"
Press Ctrl-C to stop the host and exit.
ด้วยการกำหนดค่าปัจจุบันของแอปนี่เป็นผลลัพธ์เดียวกับในการผลิต
~/source/repos/ChainedConfigurationDemo/pub master
└─ export Greeting=HelloFromOperatingEnvironment
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe
Starting demo...
In the end, the greeting is "HelloFromOperatingEnvironment"
Press Ctrl-C to stop the host and exit.
( unset Greeting หากอยู่ในสภาพแวดล้อม CLI สำหรับกรณีอื่น ๆ ทั้งหมด)
สำหรับกรณีการใช้ Azure เสริมคุณจะต้อง
สำหรับ #4 การสาธิตนี้ใช้สตริงการเชื่อมต่อแบบอ่านอย่างเดียวจากการกำหนดค่าแอพ Azure ของฉันซึ่งดึงเป็นตัวแปรสภาพแวดล้อมจากระบบท้องถิ่นของฉัน