【问题标题】:ASP.NET MVC4 bundles do not exist in release build发布版本中不存在 ASP.NET MVC4 包
【发布时间】:2014-02-24 19:53:59
【问题描述】:

我的 ASP.NET MVC4 项目在调试版本中运行良好,只要我不介意在它变得有点困惑和“丢失”捆绑包时重复重建和重新发布,就像它经常做的那样。

似乎捆绑的“丢失”与我的一种布局有关, 它将 CSS 捆绑包的内容直接插入到页面中,以 为我们的文档管理生成模板以显示“文档” 由表单域组成。如果我构建然后我做的第一件事就是加载 首先具有该布局的页面,MVC4 确定捆绑包不存在, 直到我做了一个干净的构建,并使用不同的布局重新加载页面。

所以我在那里做了一些与众不同的事情。

现在我尝试了发布版本,但重试方法不适用于该版本。 MVC 在页面中生成以下标签。服务器上不存在这些资源。没有bundles 目录。 ContentContent/themes/base 目录存在,但其中没有任何内容称为 css,当我尝试加载任何链接资源时,我得到一个 404。该页面没有 CSS 和脚本。

我的布局文件中的这段代码...

@Styles.Render("~/Content/css")
@Styles.Render("~/Content/themes/base/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")

...变成...

<link href="/MyApp/Content/css?v=BoqupuQxZQpXG1tSIMNZQqNVpJ_E-NUxg_QIsyvmKn01" rel="stylesheet"/>
<link href="/MyApp/Content/themes/base/css?v=myqT7npwmF2ABsuSaHqt8SCvK8UFWpRv7T4M8r3kiK01" rel="stylesheet"/>
<script src="/MyApp/bundles/modernizr?v=qVODBytEBVVePTNtSFXgRX0NCEjh9U_Oj8ePaSiRcGg1"></script>
<script src="/MyApp/bundles/jquery?v=JzhfglzUfmVF2qo-weTo-kvXJ9AJvIRBLmu11PgpbVY1"></script>
<script src="/MyApp/bundles/jqueryui?v=EHft7nwilnDMnejvwTyEKn_C5lwIsN1M3Xyb8c9OmSQ1"></script>

你是如何做到这一点的?是配置问题吗?我在这里找到了一个人whose solution is to say that "it should work",我同意。但是,在我的情况下,它实际上证明 not 起作用,因此该解决方案可能不适合我在这里的特定情况。

我注意到 MVC4 中的很多东西都被破坏了,而且捆绑功能无疑是错误的;发布配置根本不起作用吗?

我已经尝试了关闭web.config 中的调试的建议,

<compilation debug="false" targetFramework="4.5" /> 

...但这没有任何效果。无论如何,我找不到强制Web.Release.config 将其插入输出web.config 的方法。

更新

如果我放了

BundleTable.EnableOptimizations = true;

...在BundleConfig.RegisterBundles 的底部,当我按F5“运行”时,它会在VS 开发服务器中正确执行捆绑操作。如果我将其更改为false 并按 F5,它会呈现一组脚本和引用包中各个文件的诸如此类的标签。两者都能正常工作——在我的开发机器上。所以让我们将其设置为false 并发布...

BundleTable.EnableOptimizations = false;

这在我发布到服务器时有效,即使它是发布版本。

所以,有一个解决方法。

【问题讨论】:

  • 听起来您的源 js 和 css 文件几乎没有部署到服务器。 /bundles 目录是一个虚拟目录,它不存在。发布您的实际 BundleConfig.cs,并确保这些源文件存在于服务器上。
  • @danludwig BundleConfig.cs 正是向导创建的。 BundleConfig.cs 包含的文件都存在于服务器上。 bundles 虚拟目录是否需要任何 IIS7 配置?
  • 不,不需要为此配置 IIS,这是 MVC 工作

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

您的 mvc4 或 VS 安装有些问题,因为它应该可以工作。除此之外,MyApp/Content/css 必须是项目文件夹 Content 中的文件。如果不是,那么您应该在 bundlerseach 文件中配置将为每个捆绑器提供服务,但是当您创建 MVC 项目时,项目模板必须为您包含它。

【讨论】:

  • 是的,MVC4 坏了。 MyApp\Content\css 是什么文件?
  • 因为您将其作为@Styles.Render 的样式引用,所以它应该是一个样式表文件,一个.css 文件。您使用 @Scripts.Render 引用的那些文件必须是 javascripts 文件。
猜你喜欢
  • 2012-11-07
  • 2010-10-27
  • 1970-01-01
  • 2015-02-16
  • 2013-02-13
  • 1970-01-01
  • 2021-02-06
  • 2012-05-22
相关资源
最近更新 更多