さらなる質問に答えて-
「これを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はファイルへの変更を無視するため、簡単に共有できます。
1つのサイトに他のアプリケーションを追加することに関するさらなる質問への回答:
サーバー上のファイルと同じように、アプリケーションの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
。