javascript - ASP.NET 发布 jQuery 包含两次?

标签 javascript jquery asp.net twitter-bootstrap nuget

因此,我有一个 ASP.NET 项目,在 Debug模式下,我在 HTML 源代码中得到以下行:

<script src="/Scripts/jquery-2.2.4.js"></script>

但是,当我部署项目时,我的网站在源代码中包含以下行:

<script src="/bundles/jquery?v=Ww-VxqepLI91N7FDR1JXgRvM347mWv5Bv_0D4LsyGEk1"></script>

我认为这与捆绑/缩小有关。这个是正常的。不正常的是,即使我尝试使用 jQuery 2.2.4,捆绑/缩小的 jQuery 源似乎同时包含 jQuery 2.2.4 和 3.0.0(我通过打开页面并注意到多个副本来验证这一点)相同的功能,包括版本号)。因此,我网站的 JavaScript 失败,提示 Bootstrap 需要 jQuery >= 1.9.1 且 < 3.0.0。

我一生都无法弄清楚这个额外的 jQuery 文件是从哪里来的。

引用文献.js:

/// <autosync enabled="true" />
/// <reference path="bootstrap.min.js" />
/// <reference path="jquery.validate.min.js" />
/// <reference path="jquery.validate.unobtrusive.min.js" />
/// <reference path="jquery-2.2.4.min.js" />
/// <reference path="modernizr-2.8.3.js" />
/// <reference path="respond.matchmedia.addlistener.min.js" />
/// <reference path="respond.min.js" />

NuGet(仅限 jQuery 结果):

jQuery                                    v2.2.4
    No dependencies.
jQuery.Validation                         v1.15.0
    jQuery (>= 1.4.4)
Microsoft.jQuery.Unobtrusive.Validation   v3.2.3
    jQuery (>= 1.8.0)
    jQuery.Validation (>= 1.8.0)

packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net46" />
  <package id="bootstrap" version="3.3.6.1" targetFramework="net46" />
  <package id="EntityFramework" version="6.1.3" targetFramework="net46" />
  <package id="jQuery" version="2.2.4" targetFramework="net46" />
  <package id="jQuery.Validation" version="1.15.0" targetFramework="net46" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.1" targetFramework="net46" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.Net.Compilers" version="1.3.2" targetFramework="net46" developmentDependency="true" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
  <package id="Modernizr" version="2.8.3" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net46" />
  <package id="Respond" version="1.4.2" targetFramework="net46" />
  <package id="WebGrease" version="1.6.0" targetFramework="net46" />
</packages>

据我所知,所有依赖关系都得到满足。我猜想这些包之一可能试图包含 jQuery 3。

如有任何帮助,我们将不胜感激。我已经尝试卸载并重新安装 jQuery 和相关库几次。如果需要任何其他信息,请告诉我!

编辑:

禁用捆绑的结果如下。 HTML 页面现在有:

<script src="/Scripts/modernizr-2.6.2.js"></script>
<script src="/Scripts/modernizr-2.8.3.js"></script>

... and ...

<script src="/Scripts/jquery-1.10.2.js"></script>
<script src="/Scripts/jquery-2.2.4.js"></script>
<script src="/Scripts/jquery-3.0.0.js"></script>

你知道是什么原因造成的吗?

最佳答案

我通过将发布设置更改为以下内容解决了该问题:

Remove additional files at destination (probably the real solution)
Precompile during publishing

令人烦恼的是,即使项目设置并未真正引用其他文件,它们也会被包含在内。我猜bundles.Add 包含了所有与通配符/“版本”模式匹配的jquery/modernizr 文件。

关于javascript - ASP.NET 发布 jQuery 包含两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489346/

相关文章:

javascript - 我如何将 html 标签数组添加到 jsx

javascript - 从大型 JSON 数据中分离值

Asp.Net 3.5 路由到 Web 服务?

c# - System.AccessViolationException 的奇怪问题

javascript - 如何在使用 ajax 更改事件对象后刷新 fullcalendar v4

Asp.net Security : IIdentity. IsAuthenticated 默认实现

javascript - "Error loading Script"js错误可以忽略吗?

javascript - 使整个 DIV 可点击(下拉列表除外)

javascript - 如何接收从内容脚本发送到 popup.js/html 的消息?

javascript - 如何注册进度条已完成并运行另一个功能?