Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在Visual Studio 2013中引用由Web Essentials缩小的文件_Asp.net_Asp.net Mvc_Visual Studio 2013_Minify_Web Essentials - Fatal编程技术网

Asp.net 在Visual Studio 2013中引用由Web Essentials缩小的文件

Asp.net 在Visual Studio 2013中引用由Web Essentials缩小的文件,asp.net,asp.net-mvc,visual-studio-2013,minify,web-essentials,Asp.net,Asp.net Mvc,Visual Studio 2013,Minify,Web Essentials,我已经缩小了由WebEssentials自动生成的CSS和JS文件,并在每次更新和保存原始文件时自动更新 在原始(在开发/测试中)和缩小(在生产中)文件之间自动切换HTML中的实际(脚本/导入)引用的最佳方式是什么 这在MVC ASP.NET web应用程序中 一个想法是让服务器端标记根据环境变量呈现“.min”或空字符串。但我想知道是否有更好、更聪明、更容易、更有效的方法来处理这个问题 提前谢谢 更新: 我的样式包定义如下: bundles.Add(new StyleBundle("~/Con

我已经缩小了由WebEssentials自动生成的CSS和JS文件,并在每次更新和保存原始文件时自动更新

在原始(在开发/测试中)和缩小(在生产中)文件之间自动切换HTML中的实际(脚本/导入)引用的最佳方式是什么

这在MVC ASP.NET web应用程序中

一个想法是让服务器端标记根据环境变量呈现“.min”或空字符串。但我想知道是否有更好、更聪明、更容易、更有效的方法来处理这个问题

提前谢谢

更新:

我的样式包定义如下:

bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site{version}.css"));
@Styles.Render("~/Content/css")
我这样引用它:

bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site{version}.css"));
@Styles.Render("~/Content/css")
但是,这会导致以下情况:

<link href="/Content/css?v=" rel="stylesheet"/>

如果我从bundle定义中提取“{version}”,它可以正常工作,但是如果我包含“{version}”,则呈现一个空的“v=”

更新2:


我刚刚意识到,由于应用程序的某些复杂性,我不能使用捆绑解决方案。我还有什么其他选择吗?

在这种情况下,捆绑将对您有所帮助。您应该已经能够在App_Start中的BundleConfig.cs文件中看到一个示例

这里有一个关于如何制作它的教程

从该教程中,您可以实际配置捆绑包本身、将包含在其中的文件等。这包括将脚本文件夹中的任何jquery放入名为
~/bundles/jquery
的捆绑包中

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                 "~/Scripts/jquery-{version}.js"));

    // Code removed for clarity.
    BundleTable.EnableOptimizations = true; // <-- this line overrides the debug check to show you the minified version even in debug mode... remove it for normal .min in debug/un-minned when not in debug behaviour
}
然后,如果您不在调试中,这将使用jquery的
.min
版本呈现一个脚本标记,如果您在调试中,则将其忽略。同一脚本文件夹中需要有
.min
版本和未缩小的版本(如果Web Essentials正在为您创建
.min
,则应该有该文件夹)

如果您使用ScriptBundles,您实际上可以停止使用WebEssentials进行缩小,因为当它将javascript打包到捆绑包中时,它们会为您缩小javascript

用于您的更新

“~/Scripts/jquery-{version}.js”
意味着匹配脚本文件夹中以
jquery-
开头,以
.js
结尾,中间有一些版本号的任何文件。如果文件中没有版本号,则不要尝试使用
{version}
替换

在本例中,它们是通过jquery实现的,这样,如果您升级了正在使用的jquery版本,就不必返回BundleConfig并手动更改jquery引用的文件名

如果您的文件名为
site1.3.7.css
,那么这可能会起作用

bundles.Add(new StyleBundle("~/Content/css")
                   .Include("~/Content/site{version}.css"));
但听起来更像是你只需要
site.css

bundles.Add(new StyleBundle("~/Content/css")
                   .Include("~/Content/site.css"));

我不确定您认为是什么阻止您使用它们,但您可以链接到CDN中的文件并缩小或不缩小。甚至可以将单个文件捆绑在一起,以便在调试之外获得缩小的好处,而无需“捆绑”它们。因此,可能有一种方法。

您正在谈论的是“{version}”片段?是的,除其他外。这只是说使用任何版本的jquery。顺便说一句,你也可以将其用于CSS细化。只需使用
StyleBundle()
即可。如果你想在不缩小的情况下包含某些内容,我想有一个简单的
Bundle()
也是,它只在同一输出文件中包含多个文件而没有缩小。我刚刚意识到,由于应用程序的某些复杂性,我无法使用捆绑解决方案。是什么阻止了您使用它?至于
{version}
如果您的文件不包含版本号,则无需使用它,它仅适用于您将来可能在某个时候更新库的情况,例如jQuery,您不希望每次下载新版本时都手动进入BundleConfig并对其进行更改。