【问题标题】:Why aspnet_compiler requires virtual path (-v) parameter?为什么 aspnet_compiler 需要虚拟路径 (-v) 参数?
【发布时间】:2014-08-20 19:29:28
【问题描述】:

我想准备一个 ASP.NET MVC 4 站点的预编译包。

我可以使用命令行预编译它,如下所示:

aspnet_compiler -nologo -v / -p "C:\WebSite1" -u "C:\TargetPath"

然而这让我很困惑,为什么aspnet_compiler 需要虚拟路径。如果我稍后决定将此包部署到不同路径下的 IIS 服务器怎么办?它会导致一些运行时问题吗?

部署是指简单的 xcopy 部署。

【问题讨论】:

    标签: asp.net asp.net-mvc-4 iis precompile


    【解决方案1】:

    如果您使用 -p 开关指定源的物理路径,则需要虚拟路径。我不情愿地提交此页面http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/precompiling-your-website-cs 以获取有关 -v 如何与应用程序相关引用(即 ~/path/file.他所说的需要更多的限定,并且似乎不适用于默认 IIS 站点下的应用程序。

    他的解释是使用 -v /MySite 会将引用从 ~/path/file 更改为 ~/MySite/path/file。但是我没有经历过这种行为。至少编译默认 IIS 网站下的应用程序(无论是在网站的根目录还是嵌套)。例如,如果我使用 /v kart 进行编译,则对“~/path/file”的内联引用和代码隐藏引用作为“~/path/file”而不是“~/kart/path/file”到达 dll。在应用根目录现在位于不同路径的其他地方部署我的 WebForm 应用程序时,我没有遇到运行时问题。

    如果您正在编译默认 IIS 网站下的应用程序,则将 -p 与源的物理路径一起使用和 -v 与虚拟路径一起使用是多余的。如果省略 -p 开关,它将与仅使用 -v 编译相同。在查看批处理文件以记录源位置时,使用 -p 和物理源路径冗余可能会很好。

    【讨论】:

    • 为了满足我的好奇心,我创建了一个新的 IIS 站点并向其中添加了一个新应用程序。正如链接文章所暗示的那样,使用 -v 和虚拟路径进行编译并没有修改应用程序根目录的相对引用。我认为使用 -v 对部署路径问题没有任何顾虑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2021-04-28
    • 1970-01-01
    • 2013-01-10
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多