En réponse à la question complémentaire -
"est-il possible de l'appliquer dans le projet Visual Studio? Dans un environnement multi-développeur, si quelqu'un d'autre vérifie le code sur sa machine, alors son IIS Express local ne sera pas configuré avec le répertoire virtuel et entraînera des erreurs d'exécution n'est-ce pas? "
Je n'ai jamais trouvé de réponse cohérente à cela nulle part, mais j'ai ensuite compris que vous pouviez le faire avec un événement post build en utilisant la tâche XmlPoke dans le fichier de projet du site 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>
Vous pouvez utiliser cette technique pour rediriger n'importe quoi dans le fichier avant le démarrage d'IISExpress. Cela vous permettrait de forcer initialement un fichier applicationHost.config dans GIT (en supposant qu'il soit ignoré par gitignore), puis de rediriger tous les chemins au moment de la construction. GIT ignorera toutes les modifications apportées au fichier, il est donc désormais facile de les partager.
En réponse à la question supplémentaire sur l'ajout d'autres applications sous un même site:
Vous pouvez créer le site dans le fichier d'hôtes de votre application comme celui de votre serveur. Par exemple:
<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>
Utilisez ensuite la technique ci-dessus pour modifier les emplacements des dossiers au moment de la génération.
applicationHost.config
fichier est sous la racine du projet:${PROJECT}\.vs\config\applicationHost.config
.