我正在使用 Visual Studio 2012 和 MVC4。我已将链接文件(来自另一个项目)添加到我的 MVC4 应用程序中。以下是该文件的属性:
这是我的捆绑包的示例:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery.unobtrusive*","~/Scripts/jquery.validate*","~/Scripts/FolderA/*.js"));
为了进行测试,我还在该文件夹中添加了一个空的 JavaScript 文件 (temp.js)。这不是链接文件。检查页面源时,会出现此文件,但不会出现链接文件。我也无法直接导航到该文件。捆绑包中的其他文件看起来都很好。
链接文件可以捆绑吗?
简短回答:在调试模式下否,在发布模式下是。
文件链接是 Visual Studio 的一个概念,用于将存储在其他位置的文件包含到代码和资源编译中。显然,如果您需要编译文件(它是源文件)、需要将其嵌入为资源或需要将其复制到目标目录(如果“复制到输出目录”设置为“复制”),则链接文件将起作用。
为什么它在调试模式下不起作用
在调试模式下,捆绑被禁用并且脚本被单独链接。由于文件不会复制到 Web 应用程序的根目录,因此用户无法通过 IIS 访问它们。如果您尝试在每次构建应用程序时启用脚本文件的复制,文件将被复制到bin
Web 应用程序的目录。无法通过 IIS 访问此目录,这同样不起作用。
为什么它在发布模式下工作
在发布模式下,执行脚本捆绑。脚本文件不会从网页单独链接,因此用户不需要直接访问它们。只有捆绑代码需要能够访问它。但你必须偷偷地进行配置。你需要:
- Set
Copy to Output Directory
链接脚本的数量Copy always
。如果您将链接脚本存储在 ~/Scripts 中,则编译应用程序后,它们将被复制到 ~/bin/Scripts 文件夹中。
- 配置要包含的捆绑路径
bin
目录。
Note ~/bin/Scripts/
在以下行中:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery.unobtrusive*","~/Scripts/jquery.validate*","~/bin/Scripts/FolderA/*.js"));
禁用调试模式
这里提到的调试模式不是Visual Studio中的编译器设置。这是一个元素web.config
file.
<system.web>
<compilation debug="false" targetFramework="4.5" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)