Knockout捆绑包未正确生成

时间:2013-09-25 17:13:53

标签: asp.net asp.net-mvc-4 knockout.js bundle

我定义了以下包:

var knockoutBundle = new ScriptBundle("~/bundles/knockout.js")
.Include("~/Scripts/knockout-{version}.debug.js");

但是,当应用程序与debug="false"一起发布时,它会生成以下HTML

<script src="/bundles/jquery.js?v=Cr8InFU-vbrPmGYYWNIXAturiBR7q9wkkgxep6VV4EU1"></script>
<script src="/bundles/bootstrap.js?v=GTjK0zIjX1_Mx7GIKofGDUgYcnSrCJvTYHNkjkMKWC01"></script>
<script src="/bundles/knockout.js?v="></script>

并且knockout的链接为空(也请注意,没有v =值)

如果我将调试更改为true,它会生成此函数并正常工作:

<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="/Scripts/jquery.cookie.js"></script>
<script src="/Scripts/bootstrap.js"></script>
<script src="/Scripts/knockout-2.3.0.debug.js"></script>

1 个答案:

答案 0 :(得分:3)

删除捆绑定义中的.debug后缀:

var knockoutBundle = new ScriptBundle("~/bundles/knockout.js")
    .Include("~/Scripts/knockout-{version}.js");

现在,当在调试模式下运行时,这将生成:

<script src="/Scripts/knockout-2.3.0.debug.js"></script>

以及在发布模式下运行时:

<script src="/bundles/knockout.js?v=VqZ0J9f3e7QvvRrMNGAzEkpXKvaJMNRA8LqjNIoUGqs1"></script>

显然,这假设您的Scripts文件夹中同时包含knockout-2.3.0.debug.jsknockout-2.2.0.js。捆绑引擎将根据您的应用程序是在调试模式还是在发布模式下运行来使用正确的文件。