发布版本中不存在ASP.NET MVC4包

时间:2014-01-31 22:59:18

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

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

  

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

     

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

现在我尝试了一个发布版本,而try-again方法不适用于此。 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",我同意。但是,在我的情况下,它实际上是而不是才能工作,所以这个解决方案可能不适合我的特殊情况。

我注意到MVC4中的相当多的东西都被打破了,捆绑功能无可否认是错误的;发布配置根本不起作用?

我已尝试在web.config

中关闭调试的建议
<compilation debug="false" targetFramework="4.5" /> 

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

更新

如果我把

BundleTable.EnableOptimizations = true;

...在BundleConfig.RegisterBundles的底部,当我通过点击F5“运行”时,它在VS dev服务器中正确地进行捆绑。如果我将其更改为false并按F5,它会呈现一组脚本和诸如引用捆绑中各个文件的whatnot标记。两者都正常 - 在我的开发机器上。所以我们将其设置为false并发布...

BundleTable.EnableOptimizations = false;

当我发布到服务器时,即使它是发布版本,它也能正常工作。

所以,有一个解决方法。

1 个答案:

答案 0 :(得分:1)

使用mvc4或VS安装会破坏somehing,因为它应该可以正常工作。除此之外,MyApp/Content/css必须是项目内容文件夹中的文件。如果不是,那么您应该在bundlers中配置将为每个捆绑包提供的每个文件,但是当您创建MVC项目时,项目模板必须包含此项。