为什么aspnet_compiler需要虚拟路径(-v)参数?

时间:2014-08-20 19:29:28

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

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

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

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

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

通过部署,我的意思是简单的xcopy部署。

1 个答案:

答案 0 :(得分:1)

如果使用-p开关指定源的物理路径,则需要虚拟路径。我不情愿地提交这个页面http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/precompiling-your-website-cs以获取有关-v如何使用app相对引用(即〜/ path / file)的一些信息。他说的内容需要更多资格,似乎不适用于默认IIS站点下的应用程序。

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

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