В ответ на дальнейший вопрос -
«есть ли способ применить это в проекте 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 игнорирует любые изменения в файле, поэтому теперь ими легко поделиться.
В ответ на следующий вопрос о добавлении других приложений на один сайт:
Вы можете создать сайт в файле hosts вашего приложения, точно так же, как сайт на вашем сервере. Например:
<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
.