我的ASP.NET MVC4项目在调试版本中运行良好,只要我不介意重复重建和重新发布,当它有点困惑并“丢失”捆绑包时,就像它经常那样。
看来捆绑的“丢失”与我的某个布局有某种关系, 它将CSS包的内容直接插入到页面中 为我们的doc管理生成模板以显示“文档” 由表单字段组成。如果我构建然后我做的第一件事是加载 首先使用该布局的页面,MVC4决定捆绑包不存在, 直到我进行干净的构建,并使用不同的布局重新加载页面。
所以我在那里做了一些与众不同的事情。
现在我尝试了一个发布版本,而try-again方法不适用于此。 MVC在页面中生成以下标记。服务器上不存在这些资源。没有bundles
目录。存在Content
和Content/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;
当我发布到服务器时,即使它是发布版本,它也能正常工作。
所以,有一个解决方法。
答案 0 :(得分:1)
使用mvc4或VS安装会破坏somehing,因为它应该可以正常工作。除此之外,MyApp/Content/css
必须是项目内容文件夹中的文件。如果不是,那么您应该在bundlers
中配置将为每个捆绑包提供的每个文件,但是当您创建MVC项目时,项目模板必须包含此项。