เพื่อตอบคำถามเพิ่มเติม -
"จะมีการใช้สิ่งนี้ภายในโครงการ Visual Studio หรือไม่ในสภาพแวดล้อมที่มีผู้พัฒนาหลายคนหากมีผู้อื่นตรวจสอบรหัสบนเครื่องของตน IIS Express ในเครื่องของพวกเขาจะไม่ถูกกำหนดค่าด้วยไดเรกทอรีเสมือนและทำให้เกิดข้อผิดพลาดรันไทม์ มันไม่ใช่เหรอ "
ฉันไม่เคยพบคำตอบที่สอดคล้องกันสำหรับสิ่งนี้ แต่จากนั้นก็พบว่าคุณสามารถทำได้ด้วยเหตุการณ์สร้างโพสต์โดยใช้งาน XmlPoke ในไฟล์โครงการสำหรับเว็บไซต์ -
<Target Name="AfterBuild">
<!-- Get the local directory root (and strip off the website name) -->
<PropertyGroup>
<LocalTarget>$(ProjectDir.Replace('MyWebSite\', ''))</LocalTarget>
</PropertyGroup>
<!-- Now change the virtual directories as you need to -->
<XmlPoke XmlInputPath="..\..\Source\Assemblies\MyWebSite\.vs\MyWebSite\config\applicationhost.config"
Value="$(LocalTarget)AnotherVirtual"
Query="/configuration/system.applicationHost/sites/site[@name='MyWebSite']/application[@path='/']/virtualDirectory[@path='/AnotherVirtual']/@physicalPath"/>
</Target>
คุณสามารถใช้เทคนิคนี้เพื่อทำการเจิมอะไรก็ได้ในไฟล์ก่อนที่ IISExpress จะเริ่มทำงาน สิ่งนี้จะช่วยให้คุณบังคับไฟล์ applicationHost.config ใน GIT ได้ในขั้นต้น (สมมติว่า gitignore ถูกละเว้น) จากนั้นจึงกำหนดเส้นทางทั้งหมดใหม่ในเวลาสร้าง GIT จะเพิกเฉยต่อการเปลี่ยนแปลงใด ๆ ในไฟล์ดังนั้นตอนนี้จึงสามารถแบ่งปันได้อย่างง่ายดาย
เพื่อตอบคำถามต่อไปเกี่ยวกับการเพิ่มแอปพลิเคชันอื่น ๆ ในไซต์เดียว:
คุณสามารถสร้างไซต์ในไฟล์โฮสต์แอปพลิเคชันของคุณได้เช่นเดียวกับไซต์บนเซิร์ฟเวอร์ของคุณ ตัวอย่างเช่น:
<site name="MyWebSite" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\GIT\MyWebSite\Main" />
<virtualDirectory path="/SharedContent" physicalPath="C:\GIT\SharedContent" />
<virtualDirectory path="/ServerResources" physicalPath="C:\GIT\ServerResources" />
</application>
<application path="/AppSubSite" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\GIT\AppSubSite\" />
<virtualDirectory path="/SharedContent" physicalPath="C:\GIT\SharedContent" />
<virtualDirectory path="/ServerResources" physicalPath="C:\GIT\ServerResources" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:4076:localhost" />
</bindings>
</site>
จากนั้นใช้เทคนิคข้างต้นเพื่อเปลี่ยนตำแหน่งโฟลเดอร์ในเวลาสร้าง
applicationHost.config
${PROJECT}\.vs\config\applicationHost.config