简短回答:在调试模式下否,在发布模式下是。
文件链接是一个 Visual Studio 概念,用于将存储在其他地方的文件包含到代码和资源编译中。显然,如果您需要编译一个文件(它是一个源文件),如果您需要将它作为资源嵌入或者您需要将它复制到目标目录(如果复制到输出目录设置为复制),则链接文件将起作用。
为什么它在调试模式下不起作用
在调试模式下,捆绑被禁用,脚本单独链接。由于文件不会复制到 Web 应用程序的根目录,因此用户将无法通过 IIS 访问它们。如果您尝试在每次构建应用程序时启用脚本文件的复制,文件将被复制到bin
Web 应用程序的目录。该目录无法通过 IIS 访问,同样也无法使用。
为什么它在发布模式下工作
在发布模式下,执行脚本的捆绑。脚本文件不会从网页单独链接,因此用户不需要直接访问它们。只有捆绑代码需要能够访问它。但是你必须偷偷地配置它。你需要:
- 一组
Copy to Output Directory
链接到Copy always
. 如果您将链接的脚本存储在 ~/Scripts 中,一旦您编译了应用程序,它们将被复制到 ~/bin/Scripts 文件夹中。
- 配置捆绑路径以包含
bin
目录。
请注意~/bin/Scripts/
以下行:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery.unobtrusive*","~/Scripts/jquery.validate*","~/bin/Scripts/FolderA/*.js"));
禁用调试模式
这里提到的调试模式不是 Visual Studio 中的编译器设置。这是web.config
文件中的一个元素。
<system.web>
<compilation debug="false" targetFramework="4.5" />