In risposta all'ulteriore domanda -
"esiste comunque un modo per applicarlo all'interno del progetto Visual Studio? In un ambiente multi-sviluppatore, se qualcun altro controlla il codice sul proprio computer, il loro IIS Express locale non sarebbe configurato con la directory virtuale e causerebbe errori di runtime vero? "
Non ho mai trovato una risposta coerente a questo da nessuna parte, ma poi ho capito che potresti farlo con un evento post build usando l'attività XmlPoke nel file di progetto per il sito Web -
<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>
È possibile utilizzare questa tecnica per reimpostare qualsiasi cosa nel file prima dell'avvio di IISExpress. Ciò consentirebbe di forzare inizialmente un file applicationHost.config in GIT (supponendo che sia ignorato da gitignore), quindi successivamente reimpostare tutti i percorsi al momento della compilazione. GIT ignorerà qualsiasi modifica al file, quindi ora è facile condividerli.
In risposta alla domanda ulteriore sull'aggiunta di altre applicazioni in un sito:
È possibile creare il sito nel file host dell'applicazione proprio come quello sul server. Per esempio:
<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>
Quindi utilizzare la tecnica sopra per modificare le posizioni delle cartelle in fase di creazione.
applicationHost.config
file è sotto la root del progetto:${PROJECT}\.vs\config\applicationHost.config
.