【问题标题】:VirtualPath in AspNetCompiler MSBuild Task - does it have to be equal to the final deployed Virtual Path?AspNetCompiler MSBuild 任务中的 VirtualPath - 它是否必须等于最终部署的虚拟路径?
【发布时间】:2011-03-21 00:33:54
【问题描述】:

这是 VS 2008 和 .Net 3.5。

我使用了一个自定义部署项目脚本,它类似于发布右键单击菜单,但我已对其进行自定义以执行文件重命名和其他各种零碎的操作。它工作得非常好,并且大大简化了发布过程。

我得知本周末在我们的一个实时网站上出现了一个问题,如果该网站被预编译(长话短说),该问题本可以避免。

所以我一直在尝试将 AspNetCompiler MSBuild 任务(使用 PhysicalPath 属性指向中间发布文件夹)注入部署脚本,我对“VirtualPath”选项有疑问。

尽管在这个预部署阶段网站不在 IIS 中,您仍然需要为“VirtualPath”属性提供一个值。我已经看到here aspnet_compiler.exe 上的关联 -v 开关使用此值来解析编译期间整个站点使用的“~”根虚拟路径。

因此,我认为这意味着您在此处传递的任何内容必须在部署时是应用程序的虚拟根目录,否则它将无法工作。

但是,我已经尝试过了,在此选项中传递了类似“/fake/fake”的内容,然后将我的一个母版页更改为通过基于应用程序的 url 而不是相对的 url 引用 css,它仍然有效即使部署到“/site”而不是“/fake/fake”的虚拟路径。

那么,这个问题的最终答案是什么?我是否需要担心这个 VirtualPath 值完全等于 IIS 中站点的最终部署位置?我希望不会,因为我真的不希望我的部署项目了解目标 Web 服务器的虚拟层次结构,以防它需要更改。

【问题讨论】:

    标签: .net asp.net .net-3.5 web-deployment


    【解决方案1】:

    我分析了预编译的代码,似乎预编译器自动将应用程序根路径解析为相对路径,无论您设置的 VirtualPath 是什么。我还尝试将相同的预编译站点部署到目标服务器上的不同虚拟路径,并且没有任何问题。

    因此,我有足够的信心可以说:不,这个值是什么并不重要。

    毫无疑问,我可能错过了一些东西 - 但在我被证明是错误的之前,我会假设我是对的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多