W odpowiedzi na dalsze pytanie -
„Czy w ogóle istnieje możliwość zastosowania tego w projekcie Visual Studio? W środowisku wielu programistów, jeśli ktoś inny sprawdzi kod na swojej maszynie, jego lokalny IIS Express nie będzie skonfigurowany z katalogiem wirtualnym i spowoduje błędy w czasie wykonywania. prawda? "
Nigdy nie znalazłem spójnej odpowiedzi na to nigdzie, ale potem doszedłem do wniosku, że możesz to zrobić za pomocą zdarzenia po kompilacji, używając zadania XmlPoke w pliku projektu witryny -
<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>
Możesz użyć tej techniki, aby ponownie przypisać wszystko w pliku przed uruchomieniem IISExpress. Pozwoliłoby to początkowo wymusić plik applicationHost.config w GIT (zakładając, że jest on ignorowany przez gitignore), a następnie ponownie przypisać wszystkie ścieżki w czasie kompilacji. GIT zignoruje wszelkie zmiany w pliku, więc można je teraz łatwo udostępniać.
W odpowiedzi na kolejne pytanie dotyczące dodawania innych aplikacji w ramach jednej witryny:
Możesz utworzyć witrynę w pliku hostów aplikacji, tak jak na serwerze. Na przykład:
<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>
Następnie użyj powyższej techniki, aby zmienić lokalizacje folderów w czasie kompilacji.
applicationHost.config
Plik jest w katalogu głównym projektu:${PROJECT}\.vs\config\applicationHost.config
.