我有一个 Visual Studio“解决方案”,其中包含一个 Web 应用程序项目(以及其他一些项目)。 Visual Studio“典型”设置似乎坚持认为二进制文件的输出目录位于项目源目录的根目录中。特别是,每次打开Web应用程序项目时,Visual Studio都会重置IIS虚拟目录的物理路径以指向项目目录。
这在很多层面上都是有问题的:
- 混合二进制输出目录和源代码树从来都不明智
- 如果 Web 应用程序深埋在其他源的目录层次结构中,其中许多项目生成可用作 Web 应用程序中的支持库的库,则所有其他支持项目必须将其二进制输出目录设置为 bin 目录源树中某个不明显、无意义的位置。
- 这种“典型”VS 设置不会让您的 Web 应用程序设置重复您从发布中获得的“生产”设置:源树中可能有文件(例如,从存储库提取的旧 .js 文件)您的项目中未引用这些内容,因此不会出现在生产发布的包中,但存在于您的调试设置中。
将 Visual Studio 解决方案中的所有项目配置为构建到干净地放置在源代码树外部的某个子目录中的 bin 目录是非常可能且非常容易的。确保 Web 应用程序构建将所有内容干净地放置在此目录中也很容易。配置 IIS 虚拟目录以指向此构建输出目录也很容易。然后,Visual Studio 未经通知、未经请求,通过任意更改精心配置的虚拟 IIS 应用程序的物理目录,使其指向源代码树的中间,从而搞砸了这一点。
如何才能阻止这种疯狂的行为呢? IE。如何防止 Visual Studio 在每次打开 Web 应用程序项目时自动重新设置虚拟 Web 目录的物理路径?
这个问题在 Stack Overflow 上已经被问过很多次了,但我没有看到真正的答案:
对这个问题的回答(IIS8.5自动更改物理路径属性 https://stackoverflow.com/questions/27544123/iis8-5-is-automatically-changing-physical-path-property) 只是指示如何控制 Visual Studio 进行重新指向的顺序。
这个问题和回答(打开解决方案时 Visual Studio 创建 IIS 虚拟目录 https://stackoverflow.com/questions/3093433/visual-studio-creating-iis-virtual-directories-when-solution-opened)只需确认该行为即可。
对这个问题的回答(打开项目会更改 iis 设置 https://stackoverflow.com/questions/21046198/opening-projects-changes-iis-settings)是完全错误的,一些评论也是如此。
这些问题 (Visual Studio 2012 无需询问即可更改 IIS 应用程序目录 https://stackoverflow.com/questions/15646726/visual-studio-2012-changes-iis-application-directory-without-asking), (Visual Studio 更改本地 IIS 配置 https://stackoverflow.com/questions/39763835/visual-studio-changes-local-iis-configuration)没有任何反应。
基本上没有人说做不到,但也没有人给出像样的解决方案。