如何防止Visual Studio在applicationhost.config中修改IIS Express站点的物理路径?

Bry*_*yan 20 visual-studio applicationhost iis-express

我有一个Visual Studio Web应用程序项目,由于某些原因,将文件从多个项目复制到单独的输出目录.我想将此输出目录用作关联的IIS Express站点的根目录.在IIS Express的applicationhost.config文件中,我可以将关联站点的物理路径设置为正确的目录.我会这样设置:

<site name="MySiteName" id="42">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="c:\my\desired\path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:63470:localhost" />
    </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

但是,当我重新打开项目时,Visual Studio会覆盖我指定的物理路径,将其还原到项目自己的目录.更糟糕的是,Visual Studio没有表明它已经做到了这一点.以下是<virtualDirectory>Visual Studio混淆后元素的外观:

        <virtualDirectory path="/" physicalPath="c:\path\to\project" />
Run Code Online (Sandbox Code Playgroud)

如何防止Visual Studio覆盖此路径?

小智 3

我无法阻止 VS 覆盖 MySiteName 的物理路径,但作为解决方法,我添加了另一个具有不同路径的应用程序部分(假设为“NewPath”),并且没有更新 VS 以在 csproj Web 属性下使用此路径。http://localhost:63470/在这种情况下,当调试时,如果您导航到新端点( ),它将自动在旧 url ( ) 上打开浏览器,http://localhost:63470/NewPath一切都会正常工作,并且 VS 不会恢复此状态。

所以新的配置如下所示:

<site name="MySiteName" id="42">
     <application path="/" applicationPool="Clr4IntegratedAppPool">
         <virtualDirectory path="/" physicalPath="c:\path\to\project" />
     </application>
     <application path="/NewPath" applicationPool="Clr4IntegratedAppPool">
         <virtualDirectory path="/" physicalPath="c:\my\desired\path" />
     </application>
     <bindings>
         <binding protocol="http" bindingInformation="*:63470:localhost" />
     </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)